{"version":3,"sources":["components/api-authorization/ApiAuthorizationConstants.js","sharedUtils/httpUtils.js","components/api-authorization/AuthorizeService.js","components/ActionButton.jsx","components/LoadSpinner.jsx","components/icons/YoutubeIcon.jsx","components/icons/RightArrowIcon.jsx","components/icons/LeftArrowIcon.jsx","components/PostBanner.jsx","components/ImageWrapper.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","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/Admin/ChangePasswordForm.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","components/icons/CloudDownloadIcon.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/CampaignReport.jsx","views/Admin/BestSellersReport.jsx","views/Admin/CommissionReconcileReport.jsx","views/Admin/Reports.jsx","views/Admin/BrandCreatorActivity.jsx","views/Admin/RedirectFailureAlarms.jsx","views/Admin/DailySpikeAlarms.jsx","views/Admin/SalesDailySpikeAlarms.jsx","views/Admin/WeeklyLinkSpikeAlarms.jsx","views/Admin/LinksLowEngagementAlarms.jsx","views/Admin/ClicksToSalesHighLowSpikesAlarms.jsx","views/Admin/MerchantAffiliateProgramManagerAutoShutoffAlarms.jsx","views/Admin/Alarms.jsx","views/Admin/CreatorClicksByDateAndHour.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","components/icons/ResetIcon.jsx","views/Admin/AffiliateNetworks.jsx","views/Admin/AmazonCommissionUpload.jsx","views/Admin/AffiliateNetwork.jsx","views/Admin/AffiliateSubaffiliateDetails.jsx","views/Admin/RakutenMerchantData.jsx","views/Admin/AvantLinkMerchantData.jsx","views/Admin/ImpactMerchantData.jsx","views/Admin/CJAffiliateMerchantData.jsx","views/Admin/PartnerizeMerchantData.jsx","views/Admin/AwinMerchantData.jsx","views/Admin/AscendMerchantData.jsx","views/Admin/ShareASaleMerchantData.jsx","views/Admin/AffiliateMerchantData.jsx","views/Admin/AffiliateMerchantDetails.jsx","views/Admin/AffiliateCommissionDetails.jsx","views/Admin/AffiliateDetails.jsx","views/Admin/SocialPlatforms.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","sharedUtils/productUtils.js","../node_modules/typescript/lib sync","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","LoadSpinner","innerClassName","marginTop","noPaddingTop","isSmall","YoutubeIcon","width","height","hrefStyle","viewBox","fill","xmlns","d","RightArrowIcon","x","y","LeftArrowIcon","transform","PostBanner","currentMedia","setMedia","mediaPageHandlers","useSwipeable","onSwipedLeft","nextMedia","onSwipedRight","prevMedia","preventDefaultTouchmoveEvent","trackMouse","images","customClass","src","blogEmbed","alt","postBanner","poster","getThumbnail","properties","imageStyle","postPage","setVideoLoaded","size","e","preventDefault","pic","key","backgroundColor","borderRadius","ImageWrapper","useLayoutEffect","video","getElementById","genId","pause","currentTime","fallbackMessage","setFallbackMessage","containerRef","React","useRef","onErrorRetry","setOnErrorRetry","useEffect","current","script","async","appendChild","remove","setImageLoaded","c","crypto","getRandomValues","Uint8Array","reloadKey","setReloadKey","emptyClick","isFeed","isResize","Fragment","preload","controls","controlsList","disablePictureInPicture","onCanPlay","display","onError","setTimeout","position","zIndex","cursor","top","left","objectFit","postFeedPostGridItem","postFeedPost","fontWeight","fontSize","paddingTop","tikTokPadding","textAlign","overflow","margin","maxWidth","ref","dangerouslySetInnerHTML","__html","border","lazy","onLoad","padding","loading","GridIcon","opacity","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","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","feedLayout","togglePrompt","showPrompt","setState","mapAddIconDropdown","deviceSize","title","action","iconPath","infoPrompt","infoPromptId","menuItem","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","toggleModal","showProfilePicturePrompt","clickHandler","bind","dropDownIconRef","createRef","_subscription","subscribe","prevProps","prevState","addEventListener","stopPropagation","searchProp","resetSearchProp","unsubscribe","logoutPath","isSmallDevice","returnUrl","search","hash","creatorCentricView","NavItem","data-toggle","screenWidth","right","aria-labelledby","color","collapseMenu","getReferralShareLink","isAdmin","setShowTopNav","fontFamily","searchInput","dropdownOptions","label","setDropdownOptions","option","history","profilePath","flexDirection","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","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","onTouchStart","onMouseLeave","aria-expanded","aria-hidden","version","marginLeft","borderTop","marginBottom","columns","categoryName","gap","showBlogPostsFlag","paddingBottom","typeId","flexGrow","passive","NotificationDotIcon","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","DropdownToggle","paddingRight","listStyle","marginRight","redirectToSearch","submenuOpen","showTopNav","dropdownStyle","lineHeight","boxShadow","browseFilterOpen","borderBottom","Navbar","light","rel","rpLogo","embed","resetBrowseSearch","handleResetBrowseSearch","handleDropdownOptionClick","handleMobileDropdownClick","overflowX","placeholder","aria-label","onChange","onKeyUp","paddingLeft","bottom","listStyleType","displayName","modalReducer","InformationIcon","outline","nativeEvent","trigger","PopoverHeader","nonCreatorStyle","flexFlow","focus","NavbarBrand","initialState","brandNavState","ModalHeader","creatorApp","VectorIcon","ThreeDotsHorizontalIcon","FormInputField","FormGroup","formGroupClass","Label","Input","inputType","onInputChange","inputStyle","readOnly","maxLength","smallText","smallTextStyle","showSmallText","PostThreeDotMenu","showReport","setShowReport","comment","setComment","setShareLink","showCopiedTextPopover","togglePopover","isDeleting","setIsDeleting","performingDelete","setPerformingDelete","deletePost","reload","getShareLink","submitReport","userPostId","showHeader","modalDialogCustomClass","handleInput","navigator","clipboard","writeText","renderReportLink","renderEditLink","clientIdText","clientId","showDotMenu","setShowDotMenu","toggleDotMenu","showThreeDotMenu","modalCustomClass","ignoreClickAway","currentTarget","centerModal","modalDialogStyle","transparent","modalHeader","hideOpenAsPage","modalHeaderRedirect","destinationState","modalHeaderClass","modalBodyCustomClass","modalFooter","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","qrImage","setQrImage","showCopied","setCopiedText","showCopied2","setCopiedText2","showCopied3","setCopiedText3","showCopied4","setCopiedText4","setRenderDirect","postEmbedCode","setPostEmbedCode","lockerEmbedCode","setLockerEmbedCode","setProductEmbedCode","postEmbedBrandCode","setPostEmbedBrandCode","blogEmbedCode","setBlogEmbedCode","lockerEmbedBrandCode","setLockerEmbedBrandCode","productEmbedBrandCode","setProductEmbedBrandCode","profileEmbedCode","setProfileEmbedCode","merchantEmbedCode","setMerchantEmbedCode","referralShareCode","setReferralShareCode","setShareCode","shareType","setShareType","embedHost","parsedShareCode","isUserMerchant","lastIndexOf","embedUrl","brandUrl","iframe","brandIframe","addShareSubdomainMerchant","merchantLogoUrl","addShareSubdomainProduct","route","shareSubdomain","hostname","handleGoogleAnalytics4","gtag","send_to","event_category","event_label","port","renderCopiedText","renderCopiedText2","renderCopiedText4","verticalAlign","node","canvas","image","toDataURL","warn","bgColor","fgColor","pointerEvents","userSelect","touchAction","WebkitUserSelect","imageSettings","excavate","ProfileInfoCard","renderFollowButton","followAction","isFollowing","renderMessageButton","messageAction","noDiv","BlueTickIconXY","ownProps","brandNavReducer","subtitle","truncateUsername","useLargeAvatars","brandEmbed","originalImageUrl","open","tableLayout","textOverflow","whiteSpace","showCheckMark","prostatusId","brandNav","disableLink","blogSmall","setUrl","originalUrl","setOriginalUrl","content","property","params","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","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","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","updatedOptions","timeZone","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","newValue","newPlainTextValue","mentions","instance","axios","create","setDelay","clientRequest","delay","Promise","resolve","reject","request","ClientRequest","endpoint","InstagramAuthApi","appId","_appId","_authorization","_authHeader","_authCode","authorize","doAuthorize","doInitAsync","doGetAuthorizationTicket","authorization","code","authorizationST","_authApi","authCode","s","screen","l","t","features","handleLoad","popup","interval","closed","BroadcastChannel","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","qs","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","authResponse","grantedScopes","handlePermissionsResponse","permission","perm","FacebookClient","channels","handleError","handleResponse","next","pretty","permalink_url","created_time","attachments","sourceAttachmentModel","targetAttachmentModel","source","thumbnail","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","nativeSelect","setNativeSelect","instagramSelect","setInstagramSelect","facebookSelect","setFacebookSelect","youTubeSelect","setYouTubeSelect","tikTokSelect","setTikTokSelect","nativeFeatureFlag","setNativeFeatureFlag","instagramFeatureFlag","setInstagramFeatureFlag","facebookFeatureFlag","setFacebookFeatureFlag","youTubeFeatureFlag","setYouTubeFeatureFlag","tikTokFeatureFlag","setTikTokFeatureFlag","useHistory","sources","componentDidUpdateRef","postCaption","setPostCaption","nativePostMedia","nativePostSectors","setNativePostSectors","nativePostMediaUrls","setLoading","showRemoveAccess","setShowRemoveAccess","fetchSocialPlatforms","configs","platformTypeId","live","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","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","ChangePasswordForm","minLengthMessage","doesNotMatchMessage","requiredCharactersMessage","password","newPassword","confirmPassword","saving","passwordMessage","passwordMessageStyle","isValidPassword","handlePasswordError","renderSubmitButton","canSubmit","Spinner","CreatorDashboardProfile","getSectors","setPersistentSectors","persistentSectors","stillAvailableSectors","allSectors","allSector","addUserSector","updateSectors","deleteUserSector","tikTokUsername","stravaUsername","userSectors","activeSectors","fetchingSectors","toggleAdditionalCategories","setSectors","toggleResetPasswordModal","showChangePasswordForm","displayChangePasswordForm","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","setSaving","productSectors","secId","saveDescription","saveSectorChanges","submitRating","updateProductsAndLinks","goToSavedLinks","EditLinkModal","setLink","setBrand","tryParseFloat","parseFloat","isNaN","updateLink","updatedLink","convertMerchantLinkToUploadableObject","uploadLink","loadingLinkUpload","MerchantShareBlock","LoadSpinnerOverlay","NoResults","CloudDownloadIcon","shapeRendering","textRendering","imageRendering","MyProducts","isValidDate","date","updateProducts","fetchLinks","combinedArray","filteredProductsLinks","dateA","modifiedDate","productLinks","reset","searchIcon","mostRecentSearch","productsLinks","filterLowerCase","hide","isHidden","handleGoogleAnalytics4GetLinkButton","displayTableHeader","downloadCsv","header","tab","processProducts","csvContent","Blob","download","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","createCsvRowForLink","createCsvRowForProduct","replaceAll","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","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","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","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","debounceEmailLookup","enableEmailSubmit","emailMessageStyle","emailMessage","formkey","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","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","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","CampaignReport","handleStartDateChange","startDateRaw","startOf","handleEndDateChange","endDateRaw","handleWeekToDate","utc","weeks","handleMonthToDate","months","handleYearToDate","years","getReports","reportsLoading","reports","handleGetReport","setSelected","fetchMerchants","minDate","maxDate","CampaignReportTable","customBodyRender","tableMeta","updateValue","customToolbarSelect","selectedRows","displayData","setSelectedRows","confirmPublishSelected","selectableRows","sortOrder","getTheme","createTheme","overrides","MUIDataTableBodyRow","root","labelKey","defaultSelected","clearButton","onSearch","dateError","TextField","toISODate","InputLabelProps","shrink","InputProps","ThemeProvider","theme","BestSellersReport","BestSellersReportTable","CommissionReconcileReport","handleAllDates","endOf","userSelected","updatedReports","report","userOptions","setUserSelected","userValue","CommissionReconcileReportTable","Reports","campaignReportBreadCrumbList","bestSellersReportBreadCrumbList","commissionReconcileReportBreadCrumbList","BrandCreatorActivity","getCreators","getCreatorLinks","getDateFromPropsOrDefault","dateFromProps","showResolved","creatorsLoading","creatorLinksLoading","creatorLinks","creatorLinksWithSubdomain","getRockporchLinks","clicks","rockporchLink","referralLink","merchantError","BrandCreatorTable","BrandCreatorLinkTable","RedirectFailureAlarms","getAlarms","minDateObj","maxDateObj","confirmResolved","selectedRowsData","alarmIds","row","tableRef","deleteError","alarmsLoading","alarms","handleShowResolvedChange","RedirectFailuresTable","rowsPerPage","rowData","merchantLinkId","destinationUrl","schemeAndHost","DailySpikeAlarms","addRockPorchUrls","alarm","rockporchUrl","fetchedAlarms","wordBreak","SalesDailySpikeAlarms","WeeklyLinkSpikeAlarms","LinksLowEngagementAlarms","LinksLowEngagementTable","ClicksToSalesHighLowSpikesAlarms","MerchantAffiliateProgramManagerAutoShutoffAlarms","openClicks","BrandAutoShutoffTable","setCellProps","Alarms","redirectFailuresBreadCrumbList","dailySpikesBreadCrumbList","salesDailySpikesBreadCrumbList","weeklyLinkSpikesBreadCrumbList","LinksLowEngagementBreadCrumbList","ClicksToSalesHighLowBreadcrumbList","BrandsAutoShutoffBreadcrumbList","handleButtonAction","getBreadCrumbList","CreatorClicksByDateAndHour","setUserFromPropsOrFetch","getClicks","startHour","endHour","userArray","hourly","handleHourlyChange","adjustedStartDate","set","adjustedEndDate","clicksLoading","clicksWithLinks","handleStartHourChange","handleEndHourChange","CreatorClicksTable","FormControl","sx","InputLabel","Select","labelId","MenuProps","PaperProps","hour12","ampm","MenuItem","textLabels","noMatch","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","onCommissionInputChange","onDateInputChange","onAffiliateNetworkPaidDateInputChange","merchantHostname","apmId","affiliateProgramManagerId","zeroSaleAmount","campaignMerchantHostname","commissionInfo","commissionAmount","onChangeDummy","handlePopover","setsState","onChangeZeroSaleAmountCheck","onChangeHundredPercentCommissionRate","enableSubmit","affilateNetworkPaidDate","UpdateAffiliateNetworkPaidDate","isFetching","commissions","CommissionsTable","MUIDataTable","paper","MUIDataTableBodyCell","fetchCommissionWithNoAffiliateNetworkPaidDate","handleAffilateNetworkPaidDateChange","toFormat","handlePublish","commissionIds","publishUrl","publishError","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","mapmId","onActiveChanged","apms","deleted","autoShutoffDate","lastRowClasses","merchantAffiliateProgramManagerId","affiliateProgramManagerName","refreshStatus","feedLastProcessed","dateLastRefreshed","internalId","Modal","setAppElement","Brand","filteredSectors","oldIntegratedDate","affiliateProgramManagers","mapm","homepage","merchantSectors","mapMerchantFields","FormText","onSectorClick","brandPresent","manualProductCreation","renderInterests","renderAffiliateProgramManagers","updateMerchant","managerObj","diplay","ResetIcon","isClicked","setIsClicked","onMouseUp","pathStroke","AffiliateNetworks","affiliateNetworks","newApmName","newApmUrl","commissionRuns","commissionStatusByApm","showCommissionModal","addNewApm","networks","newApm","apiUrl","displayHeaders","updateMerchantSynch","hideCommissionModal","onCommissionRefreshYes","updateCommissionByAffiliate","calculateCommissionRunStatus","cr","isSaS","affiliate","dateNow","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","currentUtc","commissionSynchDateLocal","commissionRunHours","commissionStatus","commissionCreatedDate","calculateMerchantSynchronizationDate","updatedNetworks","network","merchantSynchDate","merchantSynchDateLocal","merchantSynchDateDifferenceInHours","msdStatus","nw","merchantSynchStatus","displayRows","statusObj","commissionSynchDate","affiliateLoginUrl","fetchAffiliateNetworks","fetchCommissionRuns","AmazonCommissionUpload","affiliateProgramManager","nameChange","apiUrlChange","loginUrlChange","settlementPeriodChange","affiliateTracking","modalType","createEditTracking","isSubmittingTracking","fetchAffiliateProgramManager","fetchTracking","settlementPeriod","tracking","handleTrackingSubmit","requestBody","postTrackingError","resetTrackingState","getModalTitle","openTableRowModal","newMerchantTracking","onAbort","AffiliateSubaffiliateDetails","getSubaffiliates","subsLoading","subaffiliates","SubaffiliatesTable","RakutenMerchantData","merchantsLoading","MerchantsTable","AvantLinkMerchantData","ImpactMerchantData","CJAffiliateMerchantData","isArray","PartnerizeMerchantData","WebkitBoxOrient","WebkitLineClamp","AwinMerchantData","domainList","parsedValue","domainObj","Boolean","AscendMerchantData","ShareASaleMerchantData","AffiliateMerchantData","renderAffiliateComponent","AffiliateMerchantDetails","getBrands","brandCount","integratedCount","deepLinkOnlyCount","BrandsTable","col","AffiliateCommissionDetails","AffiliateDetails","affiliateId","SocialPlatforms","socialPlatforms","updateSocialPlatformLive","Sectors","sectorCreateInput","sectorName","checkIfSectorExists","handleSectorInput","ResetPasswordForm","submitPassword","newPasswordConfirmed","passwordsMatch","resetPasswordSuccess","resetPasswordError","displaySubmitButton","newPasswordValidation","newPasswordConfirmedValidation","displayValidation","Users","rpManagerOptions","lookupUsername","isLoadingReferral","isLoadingRPManagerUsers","isCheckingUserName","selectedProStatusId","amazonSubaffiliate","savingAmazonSub","subaffiliatesFetched","newUserName","referrerUserId","newUserNameAvailable","referralEntity","rpManagerEntity","proStatusIds","confirmEmail","updateEmail","onAmazonSubaffiliateInputChange","onSelectedProStatusId","fetchReferralUsers","referralOptions","fetchRPManagerUsers","fetchUserByReferralUserId","fetchUserByRPManagerUserId","usersCheck","displayResetPasswordButton","handleImpersonateClick","impersonateUrl","displayImpersonateButton","setSelectedReferral","setSelectedRPManager","rPManagerUserId","affiliateName","amazonSubaffiliateObject","subaffiliateID","postAmazonSubaffiliate","subaffiliateObject","createUserMerchantCommissionOverride","handleLookupChange","amazonMapmArray","amazonMapm","userShare","effectiveDate","stateChange","CurrentDealsTable","onRowClick","rowMeta","addMerchantNameToDeals","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","fromFormat","AnalyticsChart","getAnalytics","aggregateChanged","admin","commissionsEarned","displayTotalRow","totalProductClicks","merchantRedirects","productViews","infoIcon","start","end","dt","zone","utcDate","toggleShowClicks","showClicks","displayChart","labels","postViews","formattedLabelDate","analytic","series","chart","markers","xaxis","yaxis","seriesName","opposite","userChanged","browseChanged","CommissionsChart","getCommissions","commissionReassignModal","modalCommissionId","toggleCommissionId","openAccordianCommissionIds","obj","commissionDetailItems","fetchCommissionDetailItemsByCommissionId","updatedCommissionIds","existingItem","updatedCommissionDetailItems","detailItem","lastItem","renderCommissionDetailItems","cdiObject","noProductInfo","numberOfItemsWithProductInfo","mayDisplay","purchaseAmount","returnAmount","qualifiedCommissionAmount","estimatedAffiliateNetworkPaidDate","colspan","displaySummaryTableHeader","displaySummaryTableRows","commissionsByStatus","reassignLoading","reassignCreateMessage","onCommissionReassignClick","modalUserId","reassignLogic","userBlank","reassignCommissionUrl","copyCheck","onChangeCopyCheck","zoom","dataLabels","isEqual","commissionsLoading","TransactionsChart","getTransactions","transactions","total","previousBalance","currentBalance","runningBalance","transactionsLoading","ClickBurstIcon","svgStyle","marker","clicksZero","salesZero","sales","fixedWidthStyle","sortDescending","salesAmount","handleClicksClick","handleSalesClicksClick","sourceDataAvailable","conversionRate","AnalyticsByProductTable","resetPerformanceTabs","showSalesModal","showSales","clearPerformance","clearSourceSort","hideSalesModal","salesClicked","clearSalesSourceSort","getAnalyticsPerformanceSourceByUserMerchantProduct","getAnalyticsPerformanceSourceByLink","handleLinkSalesClicksClick","getAnalyticsPerformanceSourceByUserMerchantProductAggregate","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","isLuxonDateTime","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","CreatorClicks","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","sentence","webpackEmptyContext","req","allowNoPath","rx"],"mappings":"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","file":"static/js/main.77fac08c.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\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 const [onErrorRetry, setOnErrorRetry] = useState(true);\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 let isResize = (props.size) && [\"Profile\", \"Product\", \"ProductGrid\", \"Post\"].includes(props.size);\r\n let url = props.src;\r\n\r\n if (props.src?.includes(\"evolvedoutdoors\")) {\r\n switch (props.size) {\r\n case \"Profile\":\r\n url = `${props.src}-Profile`;\r\n break;\r\n case \"Post\":\r\n url = `${props.src}-Post`;\r\n break;\r\n case \"Product\":\r\n url = `${props.src}-Product`;\r\n break;\r\n case \"ProductGrid\":\r\n url = `${props.src}-ProductGrid`;\r\n break;\r\n default:\r\n url = props.src;\r\n break;\r\n }\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 if (isResize && e.target.src !== props.src) {\r\n e.target.src = props.src;\r\n } else {\r\n e.target.onError = null\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 />\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 (isResize && e.target.src !== props.src && onErrorRetry) {\r\n e.target.src = props.src;\r\n setOnErrorRetry(false);\r\n } else 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 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\nimport ImageWrapper from \"components/ImageWrapper\";\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 ) : 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 && this.props?.loggedInUser?.imageUrl.length > 0 ? < ImageWrapper src={this.props.loggedInUser.imageUrl} size=\"Profile\" alt=\"\" style={{ marginTop: this.props.screenWidth > 991 ? \"2px\" : \"-11px\" }} /> : < ImageWrapper src=\"/images/avatar2.svg\" alt=\"\" style={{ marginTop: \"2px\" }} />}\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 ) : 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 ) : 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 ) : 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 ) : 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 );\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 )}\r\n
    \r\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 maxLength={props.maxLength} // Pass along maxLength if provided\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 { 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\nimport { QRCodeCanvas } from \"qrcode.react\";\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 const [qrImage, setQrImage] = useState(null);\r\n\r\n const qrCodeRefCallback = (node) => {\r\n if (node) {\r\n const canvas = node.querySelector(\"canvas\");\r\n if (canvas) {\r\n console.log(\"QR Code Canvas Found:\", canvas);\r\n setTimeout(() => {\r\n const image = canvas.toDataURL('image/png');\r\n setQrImage(image);\r\n }, 200);\r\n } else {\r\n console.warn(\"Canvas not found inside QR Code element.\");\r\n }\r\n } else {\r\n console.warn(\"QR Code ref callback received null (likely unmounted).\");\r\n }\r\n };\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 [merchantEmbedCode, setMerchantEmbedCode] = 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\r\n const embed = `

    \"\"

    `;\r\n setMerchantEmbedCode(embed);\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 {\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 merchantEmbedCode != null &&\r\n <>\r\n
    Merchant Logo Embed Code
    \r\n
    \r\n null} />\r\n \r\n
    \r\n \r\n }\r\n\r\n {!!(shareCode) ?\r\n <>\r\n
    QR Code
    \r\n {\r\n qrImage ? \r\n
    \r\n \"QR\r\n
    \r\n :\r\n <>\r\n }\r\n
    \r\n \r\n
    \r\n \r\n :\r\n <>\r\n }\r\n\r\n\r\n\r\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, { useState, useEffect } 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 const [url, setUrl] = useState(\"\");\r\n const [originalUrl, setOriginalUrl] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setUrl(props.content?.filter(property => property?.role === 0 || property?.role === 8)[0]?.value + \"-PostGrid\" ?? \"images/blank-banner.png\");\r\n setOriginalUrl(props.content?.filter(property => property?.role === 0 || property?.role === 8)[0]?.value ?? \"images/blank-banner.png\");\r\n }, [props.content])\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 \"\"\r\n {\r\n if (url !== originalUrl) {\r\n setUrl(originalUrl);\r\n } else {\r\n e.target.onError = null\r\n e.target.src = \"images/blank-banner.png\"\r\n }\r\n }}\r\n />\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 // Check if dateTime is a Date object\r\n if (typeof dateTime.getMonth === 'function') {\r\n // Handle relative date\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\r\n // Attempt to format date with provided options\r\n try {\r\n return DateTime.fromISO(dateTime.toISOString()).toLocaleString(options);\r\n } catch (error) {\r\n console.error(\"Date conversion error:\", error);\r\n // Add default timeZone to options if it's missing\r\n const updatedOptions = { ...options, timeZone: 'America/Chicago' }; // Default to Central Time\r\n\r\n // Retry formatting with updated options\r\n return DateTime.fromISO(dateTime.toISOString()).toLocaleString(updatedOptions);\r\n }\r\n }\r\n\r\n // Handle ISO strings without a timezone indicator\r\n if (!dateTime.includes(\"Z\") && !dateTime.includes(\"+\") && !dateTime.includes(\"-\")) {\r\n dateTime += \"Z\";\r\n } else if (!dateTime.includes(\"Z\") && !dateTime.includes(\"+\") && dateTime.includes(\"-\") && dateTime.includes(\"T\")) {\r\n dateTime += \"Z\";\r\n }\r\n\r\n // Handle relative dates for ISO strings\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\r\n // Attempt to format date with provided options for ISO strings\r\n try {\r\n return DateTime.fromISO(dateTime).toLocaleString(options);\r\n } catch (error) {\r\n console.error(\"Date conversion error:\", error);\r\n // Add default timeZone to options if it's missing\r\n const updatedOptions = { ...options, timeZone: 'America/Chicago' }; // Default to Central Time\r\n\r\n // Retry formatting with updated options\r\n return DateTime.fromISO(dateTime).toLocaleString(updatedOptions);\r\n }\r\n}\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 * @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 * maxLength?: number\r\n * }} props\r\n */\r\nconst MentionsInputTextArea = (props) => {\r\n const handleChange = (event, newValue, newPlainTextValue, mentions) => {\r\n // If a maxLength is provided and the new plain text exceeds it, do not update.\r\n if (props.maxLength && newValue.length > props.maxLength) {\r\n // Optionally, you could show a warning message or simply ignore extra input.\r\n return;\r\n }\r\n // Otherwise, propagate the change upward.\r\n props.onChange(event, newValue, newPlainTextValue, mentions);\r\n };\r\n\r\n return (\r\n \r\n `@${display}`}\r\n markup=\"#!^(__id__)%~@(((__display__)))\"\r\n renderSuggestion={(entry, search, highlightedDisplay, index, focused) => {\r\n return (\r\n \r\n @{entry.display}\r\n
    \r\n {entry.name}\r\n
    \r\n
    \r\n );\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default MentionsInputTextArea;\r\n","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 this._authCode = 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 authCode() {\r\n return this._authCode;\r\n }\r\n set authCode(value) {\r\n this._authCode = 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 this.authCode = null;\r\n\r\n let url = `https://www.instagram.com/oauth/authorize?enable_fb_login=0&force_authentication=1&client_id=${this._appId}&redirect_uri=${encodeURIComponent(window.location.origin + '/instagram/auth/')}&response_type=code&scope=instagram_business_basic`;\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 (this.authCode) {\r\n clearInterval(interval);\r\n let authorization = { code: this.authCode };\r\n resolve(authorization);\r\n }\r\n }\r\n catch (err) {\r\n if (err.code !== 18 || (!err.message.includes('Blocked a frame with origin') && !err.message.includes('user agent'))) {\r\n if (!!popup || popup.closed) {\r\n clearInterval(interval);\r\n popup.close();\r\n }\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\r\n const channel = new BroadcastChannel('authCode');\r\n channel.addEventListener('message', (event) => {\r\n this.authCode = event.data;\r\n });\r\n\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 const maxLength = 256; // Set max caption length\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 // Updated onChange handler to enforce character limit\r\n const handleCaptionChange = (event, newValue, newPlainTextValue) => {\r\n if (!props.blog && newValue?.length > maxLength) {\r\n return;\r\n }\r\n setCaptionInput(newValue);\r\n props.handleContentInput(newValue);\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 `@${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

    {256 - (captionInput?.length ?? 0)} characters remaining

    \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 [nativeSelect, setNativeSelect] = useState(false);\r\n const [instagramSelect, setInstagramSelect] = useState(false);\r\n const [facebookSelect, setFacebookSelect] = useState(false);\r\n const [youTubeSelect, setYouTubeSelect] = useState(false);\r\n const [tikTokSelect, setTikTokSelect] = useState(false);\r\n\r\n const [nativeFeatureFlag, setNativeFeatureFlag] = useState(false);\r\n const [instagramFeatureFlag, setInstagramFeatureFlag] = useState(false);\r\n const [facebookFeatureFlag, setFacebookFeatureFlag] = useState(false);\r\n const [youTubeFeatureFlag, setYouTubeFeatureFlag] = useState(false);\r\n const [tikTokFeatureFlag, setTikTokFeatureFlag] = useState(false);\r\n\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 if (props.showModal) {\r\n fetchSocialPlatforms()\r\n }\r\n }, [props.showModal]);\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\r\n const fetchSocialPlatforms = async () => {\r\n let url = \"api/Merchant/GetPlatformConfigs\";\r\n let configs = await getRequest(url);\r\n\r\n // Sort configs by platformTypeId to ensure order (if not already sorted)\r\n configs.sort((a, b) => a.platformTypeId - b.platformTypeId);\r\n \r\n // Update feature flags directly based on index\r\n setNativeFeatureFlag(!configs[0]?.live);\r\n setInstagramFeatureFlag(!configs[1]?.live);\r\n setFacebookFeatureFlag(!configs[2]?.live);\r\n setYouTubeFeatureFlag(!configs[3]?.live);\r\n setTikTokFeatureFlag(!configs[4]?.live);\r\n };\r\n\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?.slice(0, 256);\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?.slice(0, 256),\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 // Reset all selections to false\r\n // Reset all selections before enabling one\r\n setNativeSelect(false);\r\n setInstagramSelect(false);\r\n setFacebookSelect(false);\r\n setYouTubeSelect(false);\r\n setTikTokSelect(false);\r\n\r\n // Enable only the selected option if the feature flag allows it\r\n switch (selectedIndex) {\r\n case 0:\r\n if (nativeFeatureFlag) {\r\n setNativeSelect(true);\r\n return;\r\n }\r\n break;\r\n\r\n case 1:\r\n if (instagramFeatureFlag) {\r\n setInstagramSelect(true);\r\n return;\r\n }\r\n break;\r\n\r\n case 2:\r\n if (facebookFeatureFlag) {\r\n setFacebookSelect(true);\r\n return;\r\n }\r\n break;\r\n\r\n case 3:\r\n if (youTubeFeatureFlag) {\r\n setYouTubeSelect(true);\r\n return;\r\n }\r\n break;\r\n\r\n case 4:\r\n if (tikTokFeatureFlag) {\r\n setTikTokSelect(true);\r\n return;\r\n }\r\n break;\r\n\r\n default:\r\n setInstagramSelect(true); // Default case\r\n return;\r\n }\r\n\r\n\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 {nativeSelect ?\r\n { setNativeSelect(false); }}>\r\n \r\n RockPorch Media Posting Unavailable\r\n \r\n \r\n Sorry for the inconvenience. Please try again later.\r\n \r\n \r\n : null}\r\n {instagramSelect ?\r\n { setInstagramSelect(false); }}>\r\n \r\n Instagram Unavailable\r\n \r\n \r\n Sorry for the inconvenience. Please try again later.\r\n \r\n \r\n : null}\r\n {facebookSelect ?\r\n { setFacebookSelect(false); }}>\r\n \r\n Facebook Unavailable\r\n \r\n \r\n Sorry for the inconvenience. Please try again later.\r\n \r\n \r\n : null}\r\n {youTubeSelect ?\r\n { setYouTubeSelect(false); }}>\r\n \r\n YouTube Unavailable\r\n \r\n \r\n Sorry for the inconvenience. Please try again later.\r\n \r\n \r\n : null}\r\n {tikTokSelect ?\r\n { setTikTokSelect(false); }}>\r\n \r\n TikTok Unavailable\r\n \r\n \r\n Sorry for the inconvenience. Please try again later.\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

    {256 - formState.name?.length} characters remaining

    \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 = \"/prdlink/\" + 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?.slice(0, 256) : \"\";\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 { Form, Button, Spinner } from \"reactstrap\";\r\nimport { isValidPassword } from \"sharedUtils/validationUtils\";\r\nimport { postRequest } from \"../../sharedUtils/httpUtils\";\r\nimport FormInputField from \"../../components/FormInputField\";\r\n\r\nclass ChangePasswordForm extends React.Component {\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 state = {\r\n formData: {\r\n password: \"\",\r\n newPassword: \"\",\r\n confirmPassword: \"\"\r\n },\r\n minLengthMessage: \"\",\r\n doesNotMatchMessage: \"\",\r\n requiredCharactersMessage: \"\",\r\n saving: false,\r\n passwordMessage: \"\",\r\n passwordMessageStyle: \"\"\r\n };\r\n\r\n onInputChange = (e) => {\r\n const { name, value } = e.target;\r\n const formData = { ...this.state.formData, [name]: value };\r\n\r\n // Set password validation messages\r\n if (name === \"newPassword\") {\r\n if (value.length < 8 && value.length > 0) {\r\n this.setState({ minLengthMessage: this.minLengthMessage, requiredCharactersMessage: \"\" });\r\n } else if (!isValidPassword(value)) {\r\n this.setState({ requiredCharactersMessage: this.requiredCharactersMessage, minLengthMessage: \"\" });\r\n } else {\r\n this.setState({ minLengthMessage: \"\", requiredCharactersMessage: \"\" });\r\n }\r\n }\r\n\r\n // Set password match message\r\n if (name === \"confirmPassword\" || name === \"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\r\n this.setState({ formData });\r\n };\r\n\r\n onSubmit = async (event) => {\r\n event.preventDefault();\r\n this.setState({ saving: true });\r\n\r\n const { password, newPassword } = this.state.formData;\r\n const userUrl = '/api/Account/UpdatePassword';\r\n\r\n let result = await postRequest(userUrl, { password, newPassword });\r\n\r\n if (result) {\r\n this.setState({ passwordMessageStyle: \"text-success\", 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 this.props.handlePasswordError();\r\n }\r\n this.setState({ saving: false });\r\n };\r\n\r\n renderSubmitButton = () => {\r\n const { password, newPassword, confirmPassword } = this.state.formData;\r\n const isValid = isValidPassword(password) && isValidPassword(newPassword);\r\n const canSubmit = password && newPassword.length >= 8 && confirmPassword === newPassword && isValid;\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    Change Password
    \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n {this.renderSubmitButton()}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ChangePasswordForm;\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 ActionButton from \"components/ActionButton\";\r\nimport Modal from \"components/Modal\";\r\nimport ChangePasswordForm from \"views/Admin/ChangePasswordForm\";\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 showChangePasswordForm: 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 toggleResetPasswordModal = () => {\r\n this.setState({ showChangePasswordForm: !this.state.showChangePasswordForm });\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\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 {this.displayChangePasswordForm()}\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 { this.setState({ showChangePasswordForm: true }) }} style={{ borderRadius: \"3px\", bottom: \"5px\", width: [\"md\", \"sm\"].includes(this.props.deviceSize) ? \" 100%\" : \"\" }} className=\"btn btn-outline-brand\">Change Password\r\n
    :\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\n\r\n/**\r\n * \r\n * @param {{fill:string, height?:string, width?:string}} props\r\n */\r\nconst CloudDownloadIcon = (props) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default CloudDownloadIcon;\r\n","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 CloudDownloadIcon from \"components/icons/CloudDownloadIcon\";\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 const downloadIcon =
    ;\r\n let headers = [\"Description\", \"Brand\", \"Retailer\", \"Retail Price\", \"Est. Comm.\", downloadIcon];\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 downloadCsv = () => {\r\n const filteredProductsLinks = [...this.state.filteredProductsLinks];\r\n\r\n if (!filteredProductsLinks || filteredProductsLinks.length === 0) {\r\n return;\r\n }\r\n\r\n // Step 1: Process the array into CSV rows\r\n const rows = this.processProducts(filteredProductsLinks);\r\n\r\n // Step 2: Add headers to the CSV\r\n const csvContent = [\r\n 'Description, Brand, Retailer, Retail Price, Estimated Commission, Share Link', // CSV headers\r\n ...rows,\r\n ].join('\\n');\r\n\r\n // Step 3: Create the Blob and trigger download\r\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\r\n const url = URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = 'products.csv';\r\n link.click();\r\n URL.revokeObjectURL(url);\r\n }\r\n\r\n processProducts(filteredProductsLinks) {\r\n return filteredProductsLinks.map((product, i) => {\r\n if (product.logoUrl) {\r\n return this.createCsvRowForLink(product);\r\n } else {\r\n return this.createCsvRowForProduct(product);\r\n }\r\n });\r\n }\r\n\r\n createCsvRowForLink(product) {\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 getLinkUrl = getLinkUrl + \"/mlink/\" + product.merchantId + \"?userId=\" + this.props.loggedInUser.id + \"&redirectUrl=\" + encodeURIComponent(product.referralUrl);\r\n return [\r\n (product.description?.trim()?.length > 0 ? product.description : getLinkUrl).replaceAll(',', '-'),\r\n (product.brand || ' ').replaceAll(',', '-'),\r\n (product.merchantName || ' ').replaceAll(',', '-'),\r\n !!(product.price) ? currencyFormat(product.price).replaceAll(',', '') : ' ',\r\n !!(product.estimatedCommission) ? currencyFormat(product.estimatedCommission).replaceAll(',', '') : ' ',\r\n getLinkUrl\r\n ].join(',');\r\n }\r\n\r\n createCsvRowForProduct(product) {\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 return [\r\n titleCase(this.concatMerchantProduct(product)).replaceAll(',', '-'),\r\n (product.manufacturer || '').replaceAll(',', '-'),\r\n (product.merchant || '').replaceAll(',', '-'),\r\n product.sale && product.salePrice !== undefined && product.salePrice !== null\r\n ? product.salePrice.toFixed(2) // Use sale price if valid\r\n : currencyFormat(\r\n product.sale && product.salePrice !== undefined && product.salePrice !== null && product.originalPrice !== undefined && product.originalPrice !== null\r\n ? product.originalPrice // Use original price if sale price exists but original price is valid\r\n : product.price !== undefined && product.price !== null\r\n ? product.price // Use price if valid\r\n : 0 // Default to 0 if all prices are invalid\r\n ).replaceAll(',', ''),\r\n\r\n // Estimated commission, safely formatted\r\n currencyFormat(product.estimatedCommission || 0).replaceAll(',', ''),\r\n getLinkUrl,\r\n ].join(',');\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 // product.titleCase(this.concatMerchantProduct(product)), product.manufacturer, product.merchant, product.sale && !!(product.salePrice) ? product.salePrice.toFixed(2) : currencyFormat(product.sale && !!(product.salePrice) && !!(product.originalPrice) ? product.originalPrice : product.price), currencyFormat(product.estimatedCommission)\r\n const url = \"/prdlink/\" + 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 {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
    \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 merchantLogoUrl: \"\",\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 merchantLogoUrl: this.state.merchantLogoUrl,\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, merchantLogoUrl) => {\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, merchantLogoUrl });\r\n }\r\n else {\r\n this.setState({ modalOpen: showModal, shareLink: \"\", merchantLogoUrl: \"\" });\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, partner.merchantLogoUrl)}\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 = \"/prdlink/\" + product.shareCode;\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 = \"/prdlink/\" + product.shareCode;\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 = \"/prdlink/\" + product.shareCode;\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 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 } from \"sharedUtils/postFunctions\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { getBlogShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\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 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 = \"/prdlink/\" + 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 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\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 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 = \"/prdlink/\" + 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 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 } from \"sharedUtils/postFunctions\";\r\nimport PinIcon from \"components/icons/PinIcon\";\r\nimport { useSwipeable } from \"react-swipeable\";\r\nimport UserTileGeneral from \"components/UserTileGeneral\";\r\nimport { getLockerShareLink } from \"../../sharedUtils/shareLinkPrefixes\"\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 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 = \"/prdlink/\" + 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 maxLength={256}\r\n />\r\n

    {256 - this.state.lockerNameChange?.length} characters remaining

    \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 maxLength={256}\r\n />\r\n

    {256 - this.state.postContentChange?.length} characters remaining

    \r\n\r\n
    \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 maxLength={256}\r\n />\r\n

    {256 - this.state.postTitleChange?.length} characters remaining

    \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 { link: \"/Admin/Reports\", title: \"Reports\", icon: }, \r\n { link: \"/Admin/Alarms\", title: \"Alarms\", icon: }, \r\n { link: \"/Admin/SocialPlatforms\", title: \"Social Platforms\", icon: }, \r\n { link: \"/Admin/CreatorClicks\", title: \"Creator Clicks\", 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 const handleClick = (event) => {\r\n if (props.onClick) {\r\n event.preventDefault(); // Prevent navigation if onClick is provided\r\n props.onClick();\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\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 { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass CampaignReport extends React.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 minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n reports: [],\r\n partners: [],\r\n value: [],\r\n reportsLoading: false,\r\n selected: [],\r\n options: [],\r\n loading: false,\r\n CampaignReportTable: {\r\n title: \"Campaign Report\",\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) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\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 },\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"UserId\",\r\n options: {\r\n filter: true,\r\n sort: true,\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 },\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 },\r\n },\r\n {\r\n name: \"clicks\",\r\n label: \"Clicks\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"gmv\",\r\n label: \"GMV\",\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: \"salesCount\",\r\n label: \"SalesCount\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ],\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\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 = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n };\r\n\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().startOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n getReports = async () => {\r\n let url = `api/Account/GetCampaignReports`;\r\n const { startDate, endDate } = this.state;\r\n const offset = DateTime.now().offset;\r\n\r\n if (startDate) url += `?startDate=${startDate.toSQL({ includeOffset: false })}`;\r\n if (endDate) url += `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n url += `&offset=${offset}&merchantId=${this.state.selected[0].id}`;\r\n\r\n this.setState({ reportsLoading: true });\r\n const reports = await getRequest(url);\r\n this.setState({ reports, reportsLoading: false });\r\n };\r\n\r\n handleGetReport = () => {\r\n if (this.state.selected.length > 0 && this.state.selected[0]?.id) {\r\n this.getReports();\r\n } else {\r\n toast.error(\r\n
    \r\n

    Select a merchant before getting a report!

    \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\r\n setSelected = (selected) => {\r\n if (selected != null) {\r\n this.setState({ selected });\r\n }\r\n };\r\n\r\n fetchMerchants = async (query) => {\r\n this.setState({ loading: true });\r\n const options = await getRequest(`/api/Merchant/MerchantSearchByMerchantName?merchantName=${query}`);\r\n this.setState({ options, loading: false });\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.setSelected(e)}\r\n isLoading={this.state.loading}\r\n options={this.state.options}\r\n placeholder=\"Search for merchants...\" />\r\n
    \r\n \r\n Get Report\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 \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 CampaignReport;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass BestSellersReport extends React.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 minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n reports: [],\r\n partners: [],\r\n value: [],\r\n reportsLoading: false,\r\n selected: [],\r\n options: [],\r\n loading: false,\r\n BestSellersReportTable: {\r\n title: \"Best Sellers Report\",\r\n columns: [\r\n {\r\n name: \"quantity\",\r\n label: \"Quantity\",\r\n options: {\r\n filter: true,\r\n sort: 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 },\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 name: \"product\",\r\n label: \"Product\",\r\n options: {\r\n filter: true,\r\n sort: true,\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 },\r\n },\r\n ],\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\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 = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n };\r\n\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().startOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n getReports = async () => {\r\n let url = `api/Account/GetBestSellersReport`;\r\n const { startDate, endDate } = this.state;\r\n const offset = DateTime.now().offset;\r\n\r\n if (startDate) url += `?startDate=${startDate.toSQL({ includeOffset: false })}`;\r\n if (endDate) url += `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n url += `&offset=${offset}`;\r\n\r\n if (this.state.selected.length > 0 && !!(this.state.selected[0].id)){\r\n url += `&merchantId=${this.state.selected[0].id}`;\r\n }\r\n\r\n this.setState({ reportsLoading: true });\r\n const reports = await getRequest(url);\r\n this.setState({ reports, reportsLoading: false });\r\n };\r\n\r\n handleGetReport = () => {\r\n this.getReports();\r\n };\r\n\r\n setSelected = (selected) => {\r\n if (selected != null) {\r\n this.setState({ selected });\r\n }\r\n };\r\n\r\n fetchMerchants = async (query) => {\r\n this.setState({ loading: true });\r\n const options = await getRequest(`/api/Merchant/MerchantSearchByMerchantName?merchantName=${query}`);\r\n this.setState({ options, loading: false });\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 this.setSelected(e)}\r\n isLoading={this.state.loading}\r\n options={this.state.options}\r\n placeholder=\"OPTIONAL search merchants...\" />\r\n
    \r\n \r\n Get Report\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 \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 BestSellersReport;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { convertToNumericMonthAndDayAndYear } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass CommissionReconcileReport extends React.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 minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n reports: [],\r\n partners: [],\r\n value: [],\r\n userValue: [],\r\n reportsLoading: false,\r\n selected: [],\r\n userSelected: [],\r\n options: [],\r\n userOptions: [],\r\n loading: false,\r\n CommissionReconcileReportTable: {\r\n title: \"Commission Reconcile Report\",\r\n columns: [\r\n {\r\n name: \"\",\r\n label: \"\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"month\",\r\n label: \"Month\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"year\",\r\n label: \"Year\",\r\n options: {\r\n filter: true,\r\n sort: true,\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 },\r\n },\r\n {\r\n name: \"\",\r\n label: \"\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"id\",\r\n label: \"Commission ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\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 }\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 },\r\n },\r\n {\r\n name: \"email\",\r\n label: \"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: \"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 name: \"merchant\",\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: true,\r\n sort: true,\r\n },\r\n },\r\n ],\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\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 = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n };\r\n\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().startOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleAllDates = () => {\r\n const startDate = DateTime.utc(2020, 1, 1).startOf('day'); // January 1, 2020\r\n const endDate = DateTime.utc().endOf('day'); // Today's date\r\n this.setState({ startDate, endDate });\r\n };\r\n\r\n\r\n getReports = async () => {\r\n let url = `api/Account/GetCommissionReconcileReport`;\r\n const { startDate, endDate } = this.state;\r\n const offset = DateTime.now().offset;\r\n\r\n // Append query parameters for startDate, endDate, and offset\r\n if (startDate) url += `?startDate=${startDate.toSQL({ includeOffset: false })}`;\r\n if (endDate) url += `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n url += `&offset=${offset}`;\r\n\r\n // Append merchantId and userId if selected\r\n if (this.state.selected.length > 0 && !!(this.state.selected[0].id)) {\r\n url += `&merchantId=${this.state.selected[0].id}`;\r\n }\r\n\r\n if (this.state.userSelected.length > 0 && !!(this.state.userSelected[0].id)) {\r\n url += `&userId=${this.state.userSelected[0].id}`;\r\n }\r\n\r\n this.setState({ reportsLoading: true });\r\n\r\n try {\r\n const reports = await getRequest(url);\r\n\r\n // Iterate through reports and convert the `report.date`\r\n const updatedReports = reports.map(report => {\r\n if (report.date) {\r\n report.date = convertToNumericMonthAndDayAndYear(report.date, false).replace(',', '');\r\n }\r\n return report;\r\n });\r\n\r\n this.setState({ reports: updatedReports, reportsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching reports:\", error);\r\n this.setState({ reportsLoading: false });\r\n }\r\n };\r\n\r\n\r\n handleGetReport = () => {\r\n this.getReports();\r\n };\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({ userOptions: users, isLoading: false });\r\n }\r\n\r\n setUserSelected = (userSelected) => {\r\n if (userSelected != null) {\r\n this.setState({ userSelected });\r\n }\r\n };\r\n\r\n setSelected = (selected) => {\r\n if (selected != null) {\r\n this.setState({ selected });\r\n }\r\n };\r\n\r\n fetchMerchants = async (query) => {\r\n this.setState({ loading: true });\r\n const options = await getRequest(`/api/Merchant/MerchantSearchByMerchantName?merchantName=${query}`);\r\n this.setState({ options, loading: false });\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.setSelected(e)}\r\n isLoading={this.state.loading}\r\n options={this.state.options}\r\n placeholder=\"OPTIONAL search merchants...\" />\r\n
    \r\n
    \r\n this.setUserSelected(selected)}\r\n isLoading={this.state.isLoading}\r\n options={this.state.userOptions} \r\n placeholder=\"OPTIONAL userName search...\" />\r\n
    \r\n
    \r\n \r\n \r\n Get Report\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 {/*
    all
    */}\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 {/*
    all
    */}\r\n
    \r\n }\r\n\r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\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 CommissionReconcileReport;\r\n","import React from \"react\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport CampaignReport from \"./CampaignReport\";\r\nimport BestSellersReport from \"./BestSellersReport\"\r\nimport CommissionReconcileReport from \"./CommissionReconcileReport\"\r\nclass Reports extends React.Component {\r\n\r\n state = {\r\n selectedCase: 1,\r\n }\r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/Reports', text: 'Reports' }];\r\n campaignReportBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Reports', text: 'Campaign Report', active: true }\r\n ];\r\n bestSellersReportBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Reports', text: 'Best Sellers Report', active: true }\r\n ];\r\n\r\n commissionReconcileReportBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Reports', text: 'Commission Reconcile Report', 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 displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Campaign Report\",\r\n case: 1,\r\n action: () => this.setState({ selectedCase: 1 })\r\n },\r\n {\r\n name: \"Best Sellers Report\",\r\n case: 2,\r\n action: () => this.setState({ selectedCase: 2 })\r\n },\r\n {\r\n name: \"Commission Reconcile Report\",\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 render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Reports

    \r\n

    Administrative Reporting Tools

    \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 Reports;","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { convertToNumericMonthAndDayAndYear } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass BrandCreatorActivity extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n startDate: this.getDateFromPropsOrDefault(\"startDate\").startOf(\"day\"),\r\n endDate: this.getDateFromPropsOrDefault(\"endDate\").endOf(\"day\"),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n creators: [],\r\n creatorLinks: [],\r\n partners: [],\r\n value: [],\r\n creatorsLoading: false,\r\n merchantError: true,\r\n creatorLinksLoading: false,\r\n selected: this.props.location?.state?.[\"merchantName\"] && this.props.location.state[\"merchantId\"]\r\n ? [{ name: this.props.location.state[\"merchantName\"], id: parseInt(this.props.location.state[\"merchantId\"], 10) }]\r\n : [],\r\n options: this.props.location?.state?.[\"merchantName\"] && this.props.location.state[\"merchantId\"]\r\n ? [{ name: this.props.location.state[\"merchantName\"], id: parseInt(this.props.location.state[\"merchantId\"], 10) }]\r\n : [],\r\n loading: false,\r\n BrandCreatorTable: {\r\n title: \"Brand Creators\",\r\n columns: [\r\n {\r\n name: \"userId\",\r\n label: \"UserId\",\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: \"UserName\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"email\",\r\n label: \"Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value}\r\n },\r\n },\r\n },\r\n {\r\n name: \"clickCount\",\r\n label: \"Clicks on Brand Links for Selected Dates\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n },\r\n },\r\n ],\r\n options: {\r\n sortOrder: {\r\n name: 'userName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n BrandCreatorLinkTable: {\r\n title: \"Brand Creator Links created OR with clicks for selected dates\",\r\n columns: [\r\n {\r\n name: \"createdDate\",\r\n label: \"Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return convertToNumericMonthAndDayAndYear(value, false).replace(',', '');\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 },\r\n },\r\n {\r\n name: \"rockporchLink\",\r\n label: \"Link\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value}\r\n },\r\n },\r\n },\r\n {\r\n name: \"clickCount\",\r\n label: \"Clicks for Selected Dates\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n ],\r\n options: {\r\n sortOrder: {\r\n name: 'createdDate',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/CreatorClicks', text: 'Creator Clicks', active: true }];\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n if (this.props.history) {\r\n this.props.history.replace({\r\n ...this.props.location,\r\n state: {}\r\n });\r\n }\r\n if (this.state.selected?.length > 0) {\r\n this.getCreators();\r\n this.getCreatorLinks();\r\n }\r\n };\r\n\r\n componentDidUpdate = (prevProps, prevState) => {\r\n const { startDate, endDate, selected} = this.state;\r\n\r\n if (\r\n prevState.selected !== selected ||\r\n prevState.startDate !== startDate ||\r\n prevState.endDate !== endDate\r\n ) {\r\n if (!!(this.state.selected?.[0]?.id)) {\r\n this.getCreators();\r\n this.getCreatorLinks();\r\n }\r\n }\r\n }\r\n\r\n getDateFromPropsOrDefault = (key) => {\r\n const dateFromProps = this.props[key]\r\n ? DateTime.fromISO(this.props[key]) // Handles direct Luxon objects or ISO strings\r\n : this.props.location?.state?.[key]\r\n ? DateTime.fromISO(this.props.location.state[key]) // Handles passed state from history.push\r\n : null;\r\n\r\n return dateFromProps?.isValid ? dateFromProps : DateTime.utc(); // Fallback to UTC if invalid\r\n };\r\n\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().startOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().startOf('day') });\r\n };\r\n\r\n getCreators = async () => {\r\n const { startDate, endDate, showResolved } = this.state;\r\n\r\n let url = `api/Merchant/GetCreatorsWithLinksByMerchant?merchantId=` + this.state.selected[0].id;\r\n\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `&startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&offset=${offset}`\r\n\r\n this.setState({ creatorsLoading: true });\r\n const creators = await getRequest(url);\r\n this.setState({ creators, creatorsLoading: false });\r\n }; \r\n\r\n getCreatorLinks = async () => {\r\n const { startDate, endDate, showResolved } = this.state;\r\n\r\n let url = `api/Merchant/GetCreatorLinksByMerchant?merchantId=` + this.state.selected[0].id;\r\n\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `&startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&offset=${offset}`\r\n\r\n this.setState({ creatorLinksLoading: true });\r\n const creatorLinks = await getRequest(url);\r\n\r\n const creatorLinksWithSubdomain = this.getRockporchLinks(creatorLinks);\r\n this.setState({ creatorLinks: creatorLinksWithSubdomain, creatorLinksLoading: false });\r\n }; \r\n\r\n getRockporchLinks = clicks => {\r\n const shareSubdomain = this.state.selected[0].shareSubdomain ?? null\r\n\r\n return clicks.map(click => {\r\n let rockporchLink = \"\";\r\n let baseUrl = `${window.location.origin}`;\r\n\r\n if (shareSubdomain) {\r\n const url = new URL(baseUrl);\r\n\r\n if (url.host.startsWith(\"www.\")) {\r\n // Replace 'www.' with the shareSubdomain\r\n url.host = url.host.replace(\"www.\", `${shareSubdomain}.`);\r\n }\r\n\r\n baseUrl = url.toString().replace(/\\/$/, \"\"); // Remove trailing slash\r\n }\r\n\r\n if (click.type === \"Product\") {\r\n rockporchLink = `${baseUrl}/prdlink/${click.shareCode}`;\r\n } else if (click.type === \"Merchant\") {\r\n rockporchLink = `${baseUrl}/mlink/${click.merchantId}?userId=${click.userId}`;\r\n if (click.referralLink && click.referralLink.length > 0) {\r\n rockporchLink += `&redirectUrl=${encodeURIComponent(click.referralLink)}`;\r\n }\r\n }\r\n\r\n return { ...click, rockporchLink };\r\n });\r\n }\r\n\r\n setSelected = (selected) => {\r\n if (selected != null) {\r\n this.setState({ selected });\r\n }\r\n };\r\n\r\n fetchMerchants = async (query) => {\r\n this.setState({ loading: true });\r\n const options = await getRequest(`/api/Merchant/MerchantSearchByMerchantName?merchantName=${query}`);\r\n this.setState({ options, loading: false });\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n\r\n
    \r\n \r\n

    Brand Creator Activity

    \r\n

    Find Creators and Creator Links associated with a particular brand

    \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?.merchantName?.length > 0 ?\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 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 ![\"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 \r\n \r\n

    Brand Creators

    \r\n

    Creators that created links and/or had clicks for selected date range

    \r\n
    \r\n }\r\n data={this.state.creators}\r\n columns={this.state.BrandCreatorTable.columns}\r\n options={this.state.BrandCreatorTable.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

    Creator Links

    \r\n

    Creator links that were created and/or had clicks over selected date range

    \r\n
    \r\n } data={this.state.creatorLinks}\r\n columns={this.state.BrandCreatorLinkTable.columns}\r\n options={this.state.BrandCreatorLinkTable.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\nexport default BrandCreatorActivity;\r\n","import React from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport ActionButton from \"components/ActionButton\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport toast, { Toaster } from 'react-hot-toast';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass RedirectFailureAlarms extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n dateError: false,\r\n maxDate: \"9999-12-31\",\r\n showResolved: false,\r\n alarms: [],\r\n partners: [],\r\n value: [],\r\n alarmsLoading: false,\r\n selected: [],\r\n options: [],\r\n skip: 0,\r\n take: 50,\r\n totalCount: 0,\r\n loading: false,\r\n RedirectFailuresTable: {\r\n title: \"Redirect Failures - Creator links with a high percentage of failures\", \r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\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 = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getAlarms();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (prevState.startDate !== startDate || prevState.endDate !== endDate) {\r\n\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate < endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getAlarms();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n\r\n confirmResolved = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to RESOLVE these items\");\r\n if (confirmDelete) {\r\n this.handleResolved(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleResolved = async (selectedRows, displayData) => {\r\n //this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const alarmIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"Products/PostAlarmHistoryResolved\";\r\n\r\n const payload = {\r\n alarmIds\r\n }\r\n\r\n setTimeout(() => {\r\n this.tableRef.current.setState({ selectedRows: { data: [] } });\r\n }, 3000);\r\n\r\n const success = await postRequest(deleteUrl, payload);\r\n\r\n if (success) {\r\n await this.getAlarms();\r\n this.tableRef.current.setState({ selectedRows: { data: [] } }); // Deselects the table rows using this.tableRef created with React.createRef()\r\n\r\n this.setState({ 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n getAlarms = async () => {\r\n let url = `Products/GetAlarmRedirectFailures`;\r\n const { startDate, endDate, showResolved } = this.state;\r\n const offset = DateTime.now().offset;\r\n\r\n if (startDate) url += `?startDate=${startDate.toSQL({ includeOffset: false })}`;\r\n if (endDate) url += `&endDate=${endDate.plus({ days: 1 }).startOf('day').toSQL({ includeOffset: false })}`;\r\n url += `&showAll=${showResolved}`;\r\n url += `&offset=${offset}`;\r\n\r\n this.setState({ alarmsLoading: true });\r\n\r\n try {\r\n const alarms = await getRequest(url);\r\n this.setState({ alarms, alarmsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching alarms:\", error);\r\n this.setState({ alarms: [], alarmsLoading: false });\r\n }\r\n };\r\n\r\n\r\n handleShowResolvedChange = (event) => {\r\n const showResolved = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ showResolved, alarms: [] }, () => this.getAlarms());\r\n };\r\n\r\n\r\n setSelected = (selected) => {\r\n if (selected != null) {\r\n this.setState({ selected });\r\n }\r\n };\r\n\r\n fetchMerchants = async (query) => {\r\n this.setState({ loading: true });\r\n const options = await getRequest(`/api/Merchant/MerchantSearchByMerchantName?merchantName=${query}`);\r\n this.setState({ options, loading: false });\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"alarmId\",\r\n label: \"Alarm ID\",\r\n options: {\r\n filter: 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 display: false,\r\n },\r\n },\r\n {\r\n name: \"shareCode\",\r\n label: \"ShareCode\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"creatorUserId\",\r\n label: \"Creator UserId\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"merchantLinkId\",\r\n label: \"MerchantLink ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"userMerchantProductId\",\r\n label: \"UserMerchantProduct ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"alarmDate\",\r\n label: \"Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n },\r\n },\r\n },\r\n {\r\n name: \"resolvedDate\",\r\n label: \"Resolved Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: this.state.showResolved, // Reflects the current state\r\n customBodyRender: (value) => {\r\n if (!!value) {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n }\r\n return \"-\";\r\n },\r\n },\r\n },\r\n {\r\n name: \"creatorUserName\",\r\n label: \"Creator\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"creatorEmail\",\r\n label: \"Creator Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\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 customBodyRender: (value, tableMeta) => {\r\n const rowData = tableMeta.rowData;\r\n const merchantId = rowData[1];\r\n const creatorUserId = rowData[3];\r\n const merchantLinkId = rowData[4];\r\n const shareCode = rowData[2];\r\n const destinationUrl = rowData[8];\r\n\r\n const schemeAndHost = `${window.location.protocol}//${window.location.host}`;\r\n\r\n let redirectUrl;\r\n\r\n if (merchantLinkId) {\r\n redirectUrl = `${schemeAndHost}/mlink/${merchantId}?userId=${creatorUserId}&redirectUrl=${encodeURIComponent(destinationUrl)}`;\r\n } else {\r\n redirectUrl = `${schemeAndHost}/prdlink/${shareCode}`;\r\n }\r\n\r\n return value ? (\r\n \r\n {value}\r\n \r\n ) : \"-\";\r\n },\r\n },\r\n },\r\n {\r\n name: \"destinationUrl\",\r\n label: \"Destination URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ? (\r\n \r\n {value}\r\n \r\n ) : \"-\";\r\n },\r\n },\r\n },\r\n {\r\n name: \"brand\",\r\n label: \"Brand\",\r\n options: {\r\n filter: true,\r\n sort: 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 },\r\n },\r\n {\r\n name: \"sevenDayClicks\",\r\n label: \"7 Day Clicks\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"sevenDayFailures\",\r\n label: \"7 Day Failures\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"sevenDayFailureRate\",\r\n label: \"7 Day Failure Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value && value > 0 ? `${(value.toFixed(2) * 100)}%` : \"0%\";\r\n },\r\n },\r\n },\r\n {\r\n name: \"clicks\",\r\n label: \"Clicks\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"failures\",\r\n label: \"Failures\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"failureRate\",\r\n label: \"Failure Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value && value > 0 ? `${(value.toFixed(2) * 100)}%` : \"0%\";\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 this.setSelected(e)}\r\n isLoading={this.state.loading}\r\n options={this.state.options}\r\n placeholder=\"Search for merchants...\" />\r\n
    \r\n \r\n Get Report\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n

    Dates must be valid dates and 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
    \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 \r\n \r\n

    Redirect Failures

    \r\n

    Creator links with a high percentage of failures

    \r\n
    \r\n }\r\n data={this.state.alarms}\r\n columns={columns}\r\n options={this.state.RedirectFailuresTable.options}\r\n ref={this.tableRef}\r\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 RedirectFailureAlarms;\r\n","import React from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass DailySpikeAlarms extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n alarms: [],\r\n alarmsLoading: false,\r\n RedirectFailuresTable: {\r\n title: \"Daily Spikes - Creators receiving a higher than normal number of clicks\",\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getAlarms();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (prevState.startDate !== startDate || prevState.endDate !== endDate) {\r\n\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate < endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getAlarms();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n\r\n confirmResolved = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to RESOLVE these items\");\r\n if (confirmDelete) {\r\n this.handleResolved(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleResolved = async (selectedRows, displayData) => {\r\n //this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const alarmIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"Products/PostAlarmHistoryResolved\";\r\n\r\n const payload = {\r\n alarmIds\r\n }\r\n\r\n //setTimeout(() => {\r\n // this.tableRef.current.setState({ selectedRows: { data: [] } });\r\n //}, 3000);\r\n\r\n const success = await postRequest(deleteUrl, payload);\r\n\r\n if (success) {\r\n await this.getAlarms();\r\n this.tableRef.current.setState({ selectedRows: { data: [] } }); // Deselects the table rows using this.tableRef created with React.createRef()\r\n\r\n this.setState({ 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleShowResolvedChange = (event) => {\r\n const showResolved = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ showResolved, alarms: [] }, () => this.getAlarms());\r\n };\r\n\r\n addRockPorchUrls = (alarms) => {\r\n const schemeAndHost = `${window.location.protocol}//${window.location.host}`;\r\n\r\n return alarms.map(alarm => {\r\n let rockporchUrl;\r\n\r\n if (alarm.shareCode) {\r\n // Product URL: schemeAndHost/prdlink/{shareCode}\r\n rockporchUrl = `${schemeAndHost}/prdlink/${alarm.shareCode}`;\r\n } else {\r\n // Merchant link URL: schemeAndHost/mlink/{merchantId}?userId={creatorUserId}&redirectUrl={encoded referralUrl}\r\n const merchantId = alarm.merchantId;\r\n const creatorUserId = alarm.creatorUserId;\r\n const referralUrl = alarm.referralUrl || '';\r\n rockporchUrl = `${schemeAndHost}/mlink/${merchantId}?userId=${creatorUserId}&redirectUrl=${encodeURIComponent(referralUrl)}`;\r\n }\r\n\r\n return {\r\n ...alarm,\r\n rockporchUrl,\r\n };\r\n });\r\n };\r\n\r\n getAlarms = async () => {\r\n let url = `Products/GetAlarmDailySpikes`;\r\n const { startDate, endDate, showResolved } = this.state;\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&showAll=${showResolved}`;\r\n\r\n url += `&offset=${offset}`\r\n\r\n this.setState({ alarmsLoading: true });\r\n\r\n try {\r\n const fetchedAlarms = await getRequest(url);\r\n\r\n // Add rockporchUrl to each alarm and set the final alarms in state\r\n const alarms = this.addRockPorchUrls(fetchedAlarms);\r\n\r\n this.setState({ alarms, alarmsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching alarms:\", error);\r\n this.setState({ alarms: [], alarmsLoading: false });\r\n }\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"alarmId\",\r\n label: \"Alarm ID\",\r\n options: {\r\n filter: 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 display: false,\r\n },\r\n },\r\n {\r\n name: \"referralUrl\",\r\n label: \"Merchant ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"shareCode\",\r\n label: \"ShareCode\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"creatorUserId\",\r\n label: \"Creator UserId\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"merchantLinkId\",\r\n label: \"MerchantLink ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"userMerchantProductId\",\r\n label: \"UserMerchantProduct ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"alarmCreatedDate\",\r\n label: \"Alarm Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"creatorUserName\",\r\n label: \"Creator\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"creatorEmail\",\r\n label: \"Creator Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"rockporchUrl\",\r\n label: \"RockPorch Link\",\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value ? (\r\n
    \r\n \r\n {value}\r\n \r\n
    \r\n ) : \"-\";\r\n },\r\n },\r\n },\r\n {\r\n name: \"referrer\",\r\n label: \"Referrer\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"firstClickedDate\",\r\n label: \"First Click Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"clicksToday\",\r\n label: \"Clicks Today\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"sevenDayClicks\",\r\n label: \"Avg Clicks 7 Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"thirtyDayClicks\",\r\n label: \"Avg Clicks 30 Day Clicks\",\r\n options: {\r\n filter: true,\r\n sort: true,\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 \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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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 \r\n \r\n

    Clicks Daily Spikes

    \r\n

    Creators receiving a higher than normal number of clicks

    \r\n
    \r\n }\r\n data={this.state.alarms}\r\n columns={columns}\r\n options={this.state.RedirectFailuresTable.options}\r\n ref={this.tableRef}\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 DailySpikeAlarms;\r\n","import React from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass SalesDailySpikeAlarms extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n alarms: [],\r\n alarmsLoading: false,\r\n showResolved: false,\r\n RedirectFailuresTable: {\r\n title: \"Daily Spikes - Creators with a high number of daily sales\",\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getAlarms();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (prevState.startDate !== startDate || prevState.endDate !== endDate) {\r\n\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate < endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getAlarms();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n\r\n confirmResolved = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to RESOLVE these items\");\r\n if (confirmDelete) {\r\n this.handleResolved(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleResolved = async (selectedRows, displayData) => {\r\n //this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const alarmIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"Products/PostAlarmHistoryResolved\";\r\n\r\n const payload = {\r\n alarmIds\r\n }\r\n\r\n //setTimeout(() => {\r\n // this.tableRef.current.setState({ selectedRows: { data: [] } });\r\n //}, 3000);\r\n\r\n const success = await postRequest(deleteUrl, payload);\r\n\r\n if (success) {\r\n await this.getAlarms();\r\n this.tableRef.current.setState({ selectedRows: { data: [] } }); // Deselects the table rows using this.tableRef created with React.createRef()\r\n\r\n this.setState({ 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleShowResolvedChange = (event) => {\r\n const showResolved = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ showResolved, alarms: [] }, () => this.getAlarms());\r\n };\r\n\r\n getAlarms = async () => {\r\n let url = `api/Account/GetAlarmSalesDailySpikes`;\r\n const { startDate, endDate, showResolved } = this.state;\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&showAll=${showResolved}`;\r\n\r\n url += `&offset=${offset}`\r\n\r\n this.setState({ alarmsLoading: true });\r\n\r\n try {\r\n const alarms = await getRequest(url);\r\n\r\n this.setState({ alarms, alarmsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching alarms:\", error);\r\n this.setState({ alarms: [], alarmsLoading: false });\r\n }\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"alarmId\",\r\n label: \"Alarm ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"creatorUserId\",\r\n label: \"Creator UserId\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"alarmCreatedDate\",\r\n label: \"Alarm Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"creatorUserName\",\r\n label: \"Creator\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"creatorEmail\",\r\n label: \"Creator Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"salesToday\",\r\n label: \"Sales Today\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"N/A\";\r\n }\r\n try {\r\n return \"$\" + value.toFixed(2)\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n }\r\n },\r\n },\r\n {\r\n name: \"sevenDaySales\",\r\n label: \"Avg Sales 7 Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"N/A\";\r\n }\r\n try {\r\n return \"$\" + value.toFixed(2)\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n }\r\n },\r\n },\r\n {\r\n name: \"thirtyDaySales\",\r\n label: \"Avg Sales 30 Day Clicks\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"N/A\";\r\n }\r\n try {\r\n return \"$\" + value.toFixed(2)\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\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
    \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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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 \r\n \r\n

    Sales Daily Spikes

    \r\n

    Creators with a high number of daily sales

    \r\n
    \r\n }\r\n data={this.state.alarms}\r\n columns={columns}\r\n options={this.state.RedirectFailuresTable.options}\r\n ref={this.tableRef}\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 SalesDailySpikeAlarms;\r\n","import React from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass WeeklyLinkSpikeAlarms extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n alarms: [],\r\n alarmsLoading: false,\r\n RedirectFailuresTable: {\r\n title: \"Weekly Link Spikes - Creators with a higher than normal number of links created over a week\",\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getAlarms();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (prevState.startDate !== startDate || prevState.endDate !== endDate) {\r\n\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate < endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getAlarms();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n\r\n confirmResolved = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to RESOLVE these items\");\r\n if (confirmDelete) {\r\n this.handleResolved(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleResolved = async (selectedRows, displayData) => {\r\n //this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const alarmIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"Products/PostAlarmHistoryResolved\";\r\n\r\n const payload = {\r\n alarmIds\r\n }\r\n\r\n //setTimeout(() => {\r\n // this.tableRef.current.setState({ selectedRows: { data: [] } });\r\n //}, 3000);\r\n\r\n const success = await postRequest(deleteUrl, payload);\r\n\r\n if (success) {\r\n await this.getAlarms();\r\n this.tableRef.current.setState({ selectedRows: { data: [] } }); // Deselects the table rows using this.tableRef created with React.createRef()\r\n\r\n this.setState({ 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleShowResolvedChange = (event) => {\r\n const showResolved = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ showResolved, alarms: [] }, () => this.getAlarms());\r\n };\r\n\r\n getAlarms = async () => {\r\n let url = `Products/GetAlarmWeeklyLinkSpikes`;\r\n const { startDate, endDate, showResolved } = this.state;\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&showAll=${showResolved}`;\r\n\r\n url += `&offset=${offset}`\r\n\r\n this.setState({ alarmsLoading: true });\r\n\r\n try {\r\n const alarms = await getRequest(url);\r\n\r\n this.setState({ alarms, alarmsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching alarms:\", error);\r\n this.setState({ alarms: [], alarmsLoading: false });\r\n }\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"alarmId\",\r\n label: \"Alarm ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n }, \r\n {\r\n name: \"userId\",\r\n label: \"Creator UserId\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"alarmCreatedDate\",\r\n label: \"Alarm Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\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 },\r\n },\r\n {\r\n name: \"email\",\r\n label: \"Creator Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"creatorSevenDayTotal\",\r\n label: \"Creator Seven Day Total\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"typicalSevenDayPerformance\",\r\n label: \"Avg Clicks 7 Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\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 \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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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 \r\n \r\n

    Weekly Link Spikes

    \r\n

    Creators with a higher than normal number of links created over a week

    \r\n
    \r\n }\r\n data={this.state.alarms}\r\n columns={columns}\r\n options={this.state.RedirectFailuresTable.options}\r\n ref={this.tableRef}\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 WeeklyLinkSpikeAlarms;\r\n","import React from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass LinksLowEngagementAlarms extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n alarms: [],\r\n alarmsLoading: false,\r\n LinksLowEngagementTable: {\r\n title: \"Links Low Engagement - Creators with a low level of engagement on their links\",\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getAlarms();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (prevState.startDate !== startDate || prevState.endDate !== endDate) {\r\n\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate < endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getAlarms();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n\r\n confirmResolved = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to RESOLVE these items\");\r\n if (confirmDelete) {\r\n this.handleResolved(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleResolved = async (selectedRows, displayData) => {\r\n //this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const alarmIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"Products/PostAlarmHistoryResolved\";\r\n\r\n const payload = {\r\n alarmIds\r\n }\r\n\r\n //setTimeout(() => {\r\n // this.tableRef.current.setState({ selectedRows: { data: [] } });\r\n //}, 3000);\r\n\r\n const success = await postRequest(deleteUrl, payload);\r\n\r\n if (success) {\r\n await this.getAlarms();\r\n this.tableRef.current.setState({ selectedRows: { data: [] } }); // Deselects the table rows using this.tableRef created with React.createRef()\r\n\r\n this.setState({ 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleShowResolvedChange = (event) => {\r\n const showResolved = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ showResolved, alarms: [] }, () => this.getAlarms());\r\n };\r\n\r\n getAlarms = async () => {\r\n let url = `Products/GetLinksLowEngagements`;\r\n const { startDate, endDate, showResolved } = this.state;\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&showAll=${showResolved}`;\r\n\r\n url += `&offset=${offset}`\r\n\r\n this.setState({ alarmsLoading: true });\r\n\r\n const alarms = await getRequest(url);\r\n\r\n this.setState({ alarms, alarmsLoading: false });\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"alarmId\",\r\n label: \"Alarm ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"Creator UserId\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"alarmCreatedDate\",\r\n label: \"Alarm Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\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 },\r\n },\r\n {\r\n name: \"email\",\r\n label: \"Creator Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"totalLinksOverThirtyDays\",\r\n label: \"Total Links Over 30 Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"totalClicksOverThirtyDays\",\r\n label: \"Total Clicks Over 30 Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"engagementRate\",\r\n label: \"Engagement Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value.toFixed(4);\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 \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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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 \r\n \r\n

    Links with Low Engagement

    \r\n

    Creators with a low level of engagement on their links

    \r\n
    \r\n }\r\n data={this.state.alarms}\r\n columns={columns}\r\n options={this.state.LinksLowEngagementTable.options}\r\n ref={this.tableRef}\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 LinksLowEngagementAlarms;\r\n","import React from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass ClicksToSalesHighLowSpikesAlarms extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n alarms: [],\r\n alarmsLoading: false,\r\n showResolved: false,\r\n RedirectFailuresTable: {\r\n title: \"Sales To Clicks Spikes - Creators with either a high or low Sales to Clicks Ratio\",\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getAlarms();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (prevState.startDate !== startDate || prevState.endDate !== endDate) {\r\n\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate < endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getAlarms();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n\r\n confirmResolved = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to RESOLVE these items\");\r\n if (confirmDelete) {\r\n this.handleResolved(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleResolved = async (selectedRows, displayData) => {\r\n //this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const alarmIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"Products/PostAlarmHistoryResolved\";\r\n\r\n const payload = {\r\n alarmIds\r\n }\r\n\r\n //setTimeout(() => {\r\n // this.tableRef.current.setState({ selectedRows: { data: [] } });\r\n //}, 3000);\r\n\r\n const success = await postRequest(deleteUrl, payload);\r\n\r\n if (success) {\r\n await this.getAlarms();\r\n this.tableRef.current.setState({ selectedRows: { data: [] } }); // Deselects the table rows using this.tableRef created with React.createRef()\r\n\r\n this.setState({ 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleShowResolvedChange = (event) => {\r\n const showResolved = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ showResolved, alarms: [] }, () => this.getAlarms());\r\n };\r\n\r\n getAlarms = async () => {\r\n let url = `Products/GetAlarmClicksToSalesHighLowSpikes`;\r\n const { startDate, endDate, showResolved } = this.state;\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&showAll=${showResolved}`;\r\n\r\n url += `&offset=${offset}`\r\n\r\n this.setState({ alarmsLoading: true });\r\n\r\n try {\r\n const alarms = await getRequest(url);\r\n\r\n this.setState({ alarms, alarmsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching alarms:\", error);\r\n this.setState({ alarms: [], alarmsLoading: false });\r\n }\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"alarmId\",\r\n label: \"Alarm ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"creatorUserId\",\r\n label: \"Creator UserId\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"alarmCreatedDate\",\r\n label: \"Alarm Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"creatorUserName\",\r\n label: \"Creator\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"creatorEmail\",\r\n label: \"Creator Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"totalClicks\",\r\n label: \"Clicks\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"totalSales\",\r\n label: \"Sales\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"clicksToSalesRatio\",\r\n label: \"Sales To Clicks Ratio\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"N/A\";\r\n }\r\n try {\r\n return value.toFixed(4)\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n }\r\n },\r\n },\r\n {\r\n name: \"averageClicksToSalesRatio\",\r\n label: \"RockPorch Average Ratio\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"N/A\";\r\n }\r\n try {\r\n return value.toFixed(4)\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n }\r\n },\r\n },\r\n {\r\n name: \"spikeType\",\r\n label: \"Lower/Higher Spike\",\r\n options: {\r\n filter: true,\r\n sort: true,\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\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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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 \r\n \r\n

    Sales To Clicks Spikes

    \r\n

    Creators with either a high or low Sales to Clicks Ratio

    \r\n
    \r\n }\r\n data={this.state.alarms}\r\n columns={columns}\r\n options={this.state.RedirectFailuresTable.options}\r\n ref={this.tableRef}\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 ClicksToSalesHighLowSpikesAlarms;\r\n","import React from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass MerchantAffiliateProgramManagerAutoShutoffAlarms extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ days: 90 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n alarms: [],\r\n alarmsLoading: false,\r\n showResolved: false,\r\n BrandAutoShutoffTable: {\r\n title: \"Brands Auto Shutoff - Brands that were shutoff automatically by RockPorch\",\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getAlarms();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (prevState.startDate !== startDate || prevState.endDate !== endDate) {\r\n\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate < endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getAlarms();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n\r\n confirmResolved = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to RESOLVE these items\");\r\n if (confirmDelete) {\r\n this.handleResolved(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleResolved = async (selectedRows, displayData) => {\r\n //this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const alarmIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"Products/PostAlarmHistoryResolved\";\r\n\r\n const payload = {\r\n alarmIds\r\n }\r\n\r\n //setTimeout(() => {\r\n // this.tableRef.current.setState({ selectedRows: { data: [] } });\r\n //}, 3000);\r\n\r\n const success = await postRequest(deleteUrl, payload);\r\n\r\n if (success) {\r\n await this.getAlarms();\r\n this.tableRef.current.setState({ selectedRows: { data: [] } }); // Deselects the table rows using this.tableRef created with React.createRef()\r\n\r\n this.setState({ 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleShowResolvedChange = (event) => {\r\n const showResolved = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ showResolved, alarms: [] }, () => this.getAlarms());\r\n };\r\n\r\n\r\n getAlarms = async () => {\r\n let url = `api/Merchant/GetAlarmsMerchantAffiliateProgramManagerAutoShutoff`;\r\n const { startDate, endDate, showResolved } = this.state;\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&showAll=${showResolved}`;\r\n\r\n url += `&offset=${offset}`\r\n\r\n this.setState({ alarmsLoading: true });\r\n try {\r\n const alarms = await getRequest(url);\r\n this.setState({ alarms, alarmsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching alarms:\", error);\r\n this.setState({ alarms: [], alarmsLoading: false });\r\n }\r\n };\r\n\r\n openClicks = (merchantName, merchantId) => {\r\n const startDate = this.state.startDate.toISODate();\r\n const endDate = this.state.endDate.toISODate();\r\n\r\n this.props.history.push({\r\n pathname: \"/Admin/BrandCreatorActivity\",\r\n state: {\r\n merchantName,\r\n merchantId,\r\n startDate,\r\n endDate\r\n }\r\n });\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"alarmId\",\r\n label: \"Alarm ID\",\r\n options: {\r\n filter: 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 display: false,\r\n },\r\n },\r\n {\r\n name: \"merchantAffiliateProgramManagerId\",\r\n label: \"Merchant Affiliate Program Manager ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"affiliateProgramManagerId\",\r\n label: \"Affiliate ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"alarmCreatedDate\",\r\n label: \"Shutoff Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n setCellProps: () => ({\r\n style: {\r\n width: \"200px\",\r\n maxWidth: \"200px\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\"\r\n }\r\n }),\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Brand\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n setCellProps: () => ({\r\n style: {\r\n whiteSpace: \"nowrap\", // Prevent text wrapping\r\n width: \"150px\" // Let the cell auto-size based on content\r\n }\r\n }),\r\n },\r\n },\r\n {\r\n name: \"affiliateProgramManagerName\",\r\n label: \"Affiliate\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n setCellProps: () => ({\r\n style: {\r\n whiteSpace: \"nowrap\", // Prevent text wrapping\r\n width: \"150px\" // Let the cell auto-size based on content\r\n }\r\n }),\r\n },\r\n },\r\n {\r\n name: \"affiliateLoginUrl\",\r\n label: \"Login URL\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n setCellProps: () => ({\r\n style: {\r\n whiteSpace: \"nowrap\", // Prevent text wrapping\r\n width: \"150px\" // Let the cell auto-size based on content\r\n }\r\n }),\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"Go to Admin > Affiliate Networks and edit the affiliate to add the Login URL\";\r\n }\r\n else {\r\n return

    {value}

    \r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"totalNumberOfCreatorLinks\",\r\n label: \"Links Created (All Time)\",\r\n options: {\r\n filter: true,\r\n display: true, \r\n },\r\n },\r\n {\r\n name: \"totalCreatorsWithLinks\",\r\n label: \"Creators w/Links (All Time)\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n },\r\n },\r\n {\r\n name: \"totalNumberOfClicks\",\r\n label: \"Clicks over Start/End Dates\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const merchantId = tableMeta.rowData[1];\r\n const merchantName = tableMeta.rowData[5]; // Access the username column (5th column, zero-based index)\r\n if (!!value) {\r\n return (\r\n this.openClicks(merchantName, merchantId)}\r\n >\r\n {value}\r\n \r\n );\r\n } else {\r\n return value;\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
    \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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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 \r\n \r\n

    Brands Auto Shutoff

    \r\n

    Brands that were shutoff automatically by RockPorch

    \r\n
    \r\n }\r\n data={this.state.alarms ?? []}\r\n columns={columns}\r\n options={this.state.BrandAutoShutoffTable.options}\r\n ref={this.tableRef}\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(MerchantAffiliateProgramManagerAutoShutoffAlarms);","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport RedirectFailureAlarms from \"./RedirectFailureAlarms\";\r\nimport DailySpikeAlarms from \"./DailySpikeAlarms\";\r\nimport SalesDailySpikeAlarms from \"./SalesDailySpikeAlarms\"\r\nimport WeeklyLinkSpikeAlarms from \"./WeeklyLinkSpikeAlarms\"\r\nimport LinksLowEngagementAlarms from \"./LinksLowEngagementAlarms\"\r\nimport ClicksToSalesHighLowSpikesAlarms from \"./ClicksToSalesHighLowSpikesAlarms\";\r\nimport MerchantAffiliateProgramManagerAutoShutoffAlarms from \"./MerchantAffiliateProgramManagerAutoShutoffAlarms\";\r\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\r\n\r\nclass Alarms extends React.Component {\r\n\r\n state = {\r\n selectedCase: 1,\r\n }\r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/Alarms', text: 'Alarms' }];\r\n redirectFailuresBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Alarms', text: 'Redirect Failures', active: true },\r\n ];\r\n\r\n dailySpikesBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Alarms', text: 'Clicks Daily Spikes', active: true }\r\n ];\r\n\r\n salesDailySpikesBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Alarms', text: 'Sales Daily Spikes', active: true }\r\n ];\r\n\r\n weeklyLinkSpikesBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Alarms', text: 'Weekly Link Spikes', active: true }\r\n ];\r\n\r\n LinksLowEngagementBreadCrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Alarms', text: 'Links Low Engagement', active: true }\r\n ];\r\n\r\n ClicksToSalesHighLowBreadcrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Alarms', text: 'Sales To Clicks', active: true }\r\n ];\r\n\r\n BrandsAutoShutoffBreadcrumbList = [\r\n ...this.breadCrumbList,\r\n { link: '/Admin/Alarms', text: 'Brands Auto Shutoff', 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 const params = getQueryStringParams(window.location.search);\r\n const selectedCase = Math.floor(params.tab);\r\n console.log(params, selectedCase)\r\n if (selectedCase) {\r\n this.setState({ selectedCase });\r\n }\r\n }\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Redirect Failures\",\r\n case: 1,\r\n action: () => this.handleButtonAction(1)\r\n },\r\n {\r\n name: \"Clicks Daily Spikes\",\r\n case: 2,\r\n action: () => this.handleButtonAction(2)\r\n },\r\n {\r\n name: \"Sales Daily Spikes\",\r\n case: 3,\r\n action: () => this.handleButtonAction(3)\r\n },\r\n {\r\n name: \"Weekly Link Spikes\",\r\n case: 4,\r\n action: () => this.handleButtonAction(4)\r\n },\r\n {\r\n name: \"Links Low Engagement\",\r\n case: 5,\r\n action: () => this.handleButtonAction(5)\r\n },\r\n {\r\n name: \"Sales To Clicks\",\r\n case: 6,\r\n action: () => this.handleButtonAction(6)\r\n },\r\n {\r\n name: \"Brands Auto Shutoff\",\r\n case: 7,\r\n action: () => this.handleButtonAction(7)\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 handleButtonAction = selectedCase => {\r\n this.setState({ selectedCase });\r\n this.updateQueryString(selectedCase);\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 getBreadCrumbList = () => {\r\n switch (this.state.selectedCase) {\r\n case 1: return this.redirectFailuresBreadCrumbList;\r\n case 2: return this.dailySpikesBreadCrumbList;\r\n case 3: return this.salesDailySpikesBreadCrumbList;\r\n case 4: return this.weeklyLinkSpikesBreadCrumbList;\r\n case 5: return this.LinksLowEngagementBreadCrumbList;\r\n case 6: return this.ClicksToSalesHighLowBreadcrumbList;\r\n case 7: return this.BrandsAutoShutoffBreadcrumbList;\r\n default: return this.breadCrumbList;\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Alarms

    \r\n

    Management of system alarms and alerts

    \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\nexport default withRouter(Alarms);","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { FormControl, InputLabel, Select, MenuItem } from \"@material-ui/core\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport { AsyncTypeahead } from 'react-bootstrap-typeahead';\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass CreatorClicksByDateAndHour extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: this.getDateFromPropsOrDefault(\"startDate\").startOf(\"day\"),\r\n endDate: this.getDateFromPropsOrDefault(\"endDate\").endOf(\"day\"),\r\n startHour: 0,\r\n endHour: 23,\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n clicks: [],\r\n selected: [],\r\n userSelected: this.props.location?.state?.[\"userName\"]\r\n ? [{ userName: this.props.location.state[\"userName\"] }]\r\n : [],\r\n options: [],\r\n userOptions: [],\r\n userValue: \"\",\r\n clicksLoading: false,\r\n CreatorClicksTable: {\r\n title: \"Creator Clicks\",\r\n options: { \r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'date',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n\r\n if (this.props.location?.state?.userName) {\r\n this.setUserFromPropsOrFetch(this.props.location.state.userName);\r\n }\r\n\r\n this.getClicks();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate, startHour, endHour, userSelected } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (\r\n prevState.startDate !== startDate ||\r\n prevState.endDate !== endDate ||\r\n prevState.startHour !== startHour ||\r\n prevState.endHour !== endHour ||\r\n prevState.userSelected !== userSelected\r\n ) {\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate <= endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getClicks();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n getDateFromPropsOrDefault = (key) => {\r\n const dateFromProps = this.props[key]\r\n ? DateTime.fromISO(this.props[key]) // Handles direct Luxon objects or ISO strings\r\n : this.props.location?.state?.[key]\r\n ? DateTime.fromISO(this.props.location.state[key]) // Handles passed state from history.push\r\n : null;\r\n\r\n return dateFromProps?.isValid ? dateFromProps : DateTime.utc(); // Fallback to UTC if invalid\r\n };\r\n\r\n setUserFromPropsOrFetch = async (userName) => {\r\n try {\r\n var users = await this.fetchUsers(userName);\r\n if (!!(users) && users.length > 0 && !!(users[0])) {\r\n const user = users[0]\r\n\r\n const userArray = [...user]\r\n await this.setUserSelected(userArray);\r\n this.getClicks();\r\n }\r\n } catch (error) {\r\n console.error(\"Error fetching user:\", error);\r\n }\r\n // Clear state after first read\r\n if (this.props.history) {\r\n this.props.history.replace({\r\n ...this.props.location,\r\n state: {}\r\n });\r\n }\r\n };\r\n\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n if (this.state.hourly){\r\n this.setState({ startDate, endDate: startDate });\r\n } else {\r\n this.setState({ startDate });\r\n }\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleHourlyChange = (event) => {\r\n const hourly = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ hourly, endDate: this.state.startDate, startHour: 0, endHour: 23 }, () => this.getClicks());\r\n };\r\n\r\n breadCrumbList = [{ link: '/Admin', text: 'Admin' }, { link: '/Admin/CreatorClicks', text: 'Creator Clicks' }];\r\n\r\n \r\n getClicks = async () => {\r\n let url = `api/Merchant/GetCreatorClicksByDateAndHour`;\r\n const { startDate, endDate, startHour, endHour, userSelected } = this.state;\r\n\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n let adjustedStartDate = startDate.set({ hour: startHour ?? 0, minute: 0, second: 0, millisecond: 0 });\r\n let adjustedEndDate = endDate.set({ hour: endHour ?? 23, minute: 59, second: 59, millisecond: 999 });\r\n\r\n if (adjustedStartDate > adjustedEndDate) {\r\n this.setState({ dateError: true });\r\n return;\r\n }\r\n\r\n if (adjustedStartDate) {\r\n url += `?startDate=${adjustedStartDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n if (adjustedEndDate) {\r\n url += url.includes('?')\r\n ? `&endDate=${adjustedEndDate.toSQL({ includeOffset: false })}`\r\n : `?endDate=${adjustedEndDate.toSQL({ includeOffset: false })}`;\r\n }\r\n\r\n url += `&offset=${offset}`;\r\n\r\n if (userSelected?.[0]?.userName?.length > 0) {\r\n url += `&userName=${userSelected[0].userName}`;\r\n }\r\n\r\n this.setState({ clicksLoading: true, clicks: [] });\r\n\r\n try {\r\n const clicks = await getRequest(url);\r\n\r\n const clicksWithLinks = this.getRockporchLinks(clicks);\r\n\r\n this.setState({ clicks: clicksWithLinks, clicksLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching clicks:\", error);\r\n this.setState({ clicks: [], clicksLoading: false });\r\n }\r\n };\r\n\r\n setUserSelected = (userSelected) => {\r\n if (userSelected != null) {\r\n this.setState( userSelected );\r\n }\r\n };\r\n\r\n getRockporchLinks = clicks => {\r\n return clicks.map(click => {\r\n let rockporchLink = \"\";\r\n let baseUrl = `${window.location.origin}`;\r\n\r\n if (click.shareSubdomain) {\r\n const url = new URL(baseUrl);\r\n\r\n if (url.host.startsWith(\"www.\")) {\r\n // Replace 'www.' with the shareSubdomain\r\n url.host = url.host.replace(\"www.\", `${click.shareSubdomain}.`);\r\n }\r\n\r\n baseUrl = url.toString().replace(/\\/$/, \"\"); // Remove trailing slash\r\n }\r\n\r\n\r\n if (click.type === \"UserMerchantProductClick\") {\r\n rockporchLink = `${baseUrl}/prdlink/${click.shareCode}`;\r\n } else if (click.type === \"MerchantClick\") {\r\n rockporchLink = `${baseUrl}/mlink/${click.merchantId}?userId=${click.userId}`;\r\n if (click.referralLink && click.referralLink.length > 0) {\r\n rockporchLink += `&redirectUrl=${encodeURIComponent(click.referralLink)}`;\r\n }\r\n }\r\n\r\n return { ...click, rockporchLink };\r\n });\r\n }\r\n\r\n handleStartHourChange = (event) => {\r\n this.setState({ startHour: event.target.value });\r\n };\r\n\r\n handleEndHourChange = (event) => {\r\n this.setState({ endHour: event.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({ userOptions: users, isLoading: false });\r\n return users;\r\n }\r\n\r\n render() {\r\n const 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) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"type\",\r\n label: \"Click Type\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"rockporchLink\",\r\n label: \"RockPorch Link\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value}\r\n },\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 },\r\n },\r\n {\r\n name: \"userId\",\r\n label: \"UserId\",\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 display: false,\r\n },\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Brand\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n },\r\n },\r\n {\r\n name: \"shareCode\",\r\n label: \"ShareCode\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"referreralLink\",\r\n label: \"Referrer Link\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false,\r\n }\r\n },\r\n {\r\n name: \"referrerUrl\",\r\n label: \"Referrer URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false,\r\n }\r\n },\r\n {\r\n name: \"referrer\",\r\n label: \"Referrer\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n display: false,\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n

    Creator Clicks

    \r\n

    Look up Product and Merchant clicks by date or hour

    \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?.userName?.length > 0 ?\r\n <>\r\n :\r\n this.setState({ userSelected: selected })}\r\n isLoading={this.state.isLoading}\r\n options={this.state.userOptions}\r\n placeholder=\"OPTIONAL userName search...\"\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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Time\r\n \r\n {Array.from({ length: 24 }, (_, i) => {\r\n const hour12 = i === 0 ? 12 : i > 12 ? i - 12 : i;\r\n const ampm = i < 12 ? \"AM\" : \"PM\";\r\n return (\r\n \r\n {hour12}:00 {ampm}\r\n \r\n );\r\n })}\r\n \r\n \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Time\r\n \r\n {Array.from({ length: 24 }, (_, i) => {\r\n const hour12 = i === 0 ? 12 : i > 12 ? i - 12 : i;\r\n const ampm = i < 12 ? \"AM\" : \"PM\";\r\n return (\r\n \r\n {hour12}:59 {ampm}\r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n

    Creator Clicks

    \r\n

    Lookup Product and Merchant Link clicks by date and time

    \r\n
    \r\n }\r\n data={this.state.clicks}\r\n columns={columns}\r\n options={{\r\n ...this.state.CreatorClicksTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.clicksLoading ? \"LOADING...\" : \"No data available\" }\r\n }\r\n }}\r\n ref={this.tableRef}\r\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 CreatorClicksByDateAndHour;\r\n","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, mapmId }) => {\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 apms[e.target.id].autoShutoffDate = null;\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\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\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 mapmId: null,\r\n apmId: null,\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 const mapm = getQueryStringParams(window.location.search).m;\r\n const apm = getQueryStringParams(window.location.search).a;\r\n console.log(mapm, apm)\r\n if (mapm && apm && !isNaN(parseInt(mapm, 10)) && !isNaN(parseInt(apm,10))) {\r\n const mapmId = parseInt(mapm, 10);\r\n const apmId = parseInt(apm, 10);\r\n\r\n await new Promise((resolve) => {\r\n this.setState({\r\n mapmId, apmId }, resolve); // Await setState completion\r\n });\r\n await this.populateData(mapmId, apm); // Ensure this runs only after setState completes\r\n } else {\r\n await this.populateData();\r\n }\r\n\r\n }\r\n\r\n populateData = async (mapmId = null, apmId = null) => {\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 = \"\";\r\n\r\n if (mapmId && apmId) {\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/AffiliateNetworks', text: 'Affiliate Networks' },\r\n { link: `/Admin/AffiliateDetails/${apmId}?tab=2`, text: 'Affiliate Details' }\r\n ];\r\n breadCrumbList.push({ link: `/Admin/Brand/${merchant.id}?m=${mapmId}&a=${apmId}`, text: `${merchant.name}` });\r\n } else {\r\n let breadCrumbList = this.state.breadCrumbList;\r\n breadCrumbList.push({ link: `/Admin/Brand/${merchant.id}`, text: `${merchant.name}` });\r\n }\r\n \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\n\r\nconst ResetIcon = (props) => {\r\n const [isClicked, setIsClicked] = React.useState(false);\r\n\r\n // Toggle the clicked state on mouse down and reset on mouse up\r\n const handleMouseDown = () => setIsClicked(true);\r\n const handleMouseUp = () => setIsClicked(false);\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\nexport default ResetIcon;","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ResetIcon from \"components/icons/ResetIcon\"\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport Modal from 'react-modal';\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\n\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 show: false,\r\n showCommissionModal: false,\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 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.updateMerchantSynch();\r\n\r\n this.setState({ show: false })\r\n };\r\n\r\n showCommissionModal = (e) => {\r\n e.preventDefault();\r\n this.setState({ showCommissionModal: !this.state.show });\r\n };\r\n\r\n hideCommissionModal = () => {\r\n this.setState({ showCommissionModal: false });\r\n };\r\n\r\n onCommissionRefreshYes = (e) => {\r\n e.preventDefault();\r\n\r\n this.updateCommissionByAffiliate();\r\n\r\n this.setState({ showCommissionModal: false })\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 const millisecondDate = new Date(createdDate);\r\n const fiveHoursInMilliseconds = 60 * 60 * 1000 * 5;\r\n const commissionSynchDateLocal = millisecondDate - fiveHoursInMilliseconds;\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, commissionCreatedDate: commissionSynchDateLocal }] })\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, merchantSynchDate: merchantSynchDateLocal };\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 const commissionSynchDate = statusObj == undefined ? null : statusObj.commissionCreatedDate;\r\n\r\n return (\r\n \r\n \r\n 0 ? \"brandOrange\" : \"\"}`}>{network?.name}\r\n \r\n\r\n \r\n {network?.apiUrl}\r\n \r\n\r\n \r\n
    \r\n
    { this.setState({ apmId: network?.id }); this.showModal(e); }}>\r\n \r\n
    \r\n
    \r\n

    {convertToNumericMonthAndDayAndYearAndTime(new Date(network.merchantSynchDate), false)}

    \r\n \r\n\r\n \r\n
    \r\n
    { this.setState({ apmId: network?.id }); this.showCommissionModal(e); }}>\r\n \r\n
    \r\n
    \r\n

    {commissionSynchDate ? convertToNumericMonthAndDayAndYearAndTime(new Date(commissionSynchDate), 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 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 updateMerchantSynch = async () => {\r\n let url = \"api/Merchant/GetMerchantsFromApms?apmId=\" + this.state.apmId;\r\n await getRequest(url);\r\n }\r\n\r\n updateCommissionByAffiliate = async () => {\r\n let url = \"api/Merchant/GetCommissionsBase?apmId=\" + this.state.apmId;\r\n await getRequest(url);\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 this.setState({ show: false })}\r\n >\r\n\r\n
    \r\n
    \r\n

    \r\n Are you sure that you want to Update this Affiliate Network's Merchants?\r\n

    \r\n

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

    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \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 Update this Affiliate Network's Commissions?\r\n

    \r\n

    \r\n This will synchronize commissions from this 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

    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 loginUrlChange: \"\",\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 loginUrlChange: affiliateProgramManager?.affiliateLoginUrl ?? \"\",\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, affiliateLoginUrl: this.state.loginUrlChange };\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 this.setState({ loginUrlChange: e.target.value })}\r\n />\r\n \r\n \r\n\r\n \r\n Submit\r\n \r\n\r\n \r\n \r\n Details\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\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass AffiliateSubaffiliateDetails extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n affiliateProgramManager: null,\r\n apmId: this.props.apmId ?? null,\r\n subaffiliates: [],\r\n alarms: [],\r\n subsLoading: false,\r\n SubaffiliatesTable: {\r\n title: \"Affiliate Network Subaffiliates\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.fetchAffiliateProgramManager();\r\n this.getSubaffiliates();\r\n };\r\n\r\n\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n fetchAffiliateProgramManager = async (id) => {\r\n let url = `api/AffiliateProgramManager/GetAffiliateProgramManager?id=${this.state.apmId}`;\r\n let affiliateProgramManager = await getRequest(url);\r\n if (affiliateProgramManager) {\r\n this.setState({ affiliateProgramManager })\r\n }\r\n }\r\n\r\n getSubaffiliates = async () => {\r\n let url = `api/AffiliateProgramManager/GetSubaffiliatesByAffiliateProgramManagerId?apmId=` + this.state.apmId;\r\n\r\n this.setState({ subsLoading: true });\r\n\r\n try {\r\n console.log(url)\r\n const subaffiliates = await getRequest(url);\r\n\r\n this.setState({ subaffiliates, subsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching subaffiliates:\", error);\r\n this.setState({ subaffiliates: [], subsLoading: false });\r\n }\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"userName\",\r\n label: \"Creator UserName\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n },\r\n },\r\n {\r\n name: \"subaffiliateID\",\r\n label: \"Subaffiliate ID\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n },\r\n },\r\n\r\n ];\r\n\r\n return (\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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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 \r\n \r\n

    {this.state.affiliateProgramManager?.name + \" Creators/Subaffiliates\" ?? \"No affiliate selected\"}

    \r\n

    Creators with subaffiliate ID's for {this.state.affiliateProgramManager?.name ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.subaffiliates}\r\n columns={columns}\r\n options={{\r\n ...this.state.SubaffiliatesTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.subsLoading ? \"LOADING...\" : \"No data available\" }\r\n }\r\n }}\r\n ref={this.tableRef}\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 AffiliateSubaffiliateDetails;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass RakutenMerchantData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n merchants: [],\r\n merchantsLoading: false,\r\n MerchantsTable: {\r\n title: \"Affiliate merchants\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getMerchants();\r\n };\r\n\r\n getMerchants = async () => {\r\n let url = `/api/Merchant/GetRakutenMerchants`;\r\n\r\n this.setState({ merchantsLoading: true });\r\n\r\n try {\r\n const merchants = await getRequest(url);\r\n\r\n this.setState({\r\n merchants,\r\n merchantsLoading: false,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching merchants:\", error);\r\n this.setState({ merchants: [], merchantsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"advertiserName\",\r\n label: \"Advertiser 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 name: \"advertiserUrl\",\r\n label: \"Advertiser URL\",\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: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"advertiserDescription\",\r\n label: \"Advertiser Description\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n \r\n {value}\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: \"linkToTermsAndConditions\",\r\n label: \"Terms & Conditions\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"linkToProgramHistory\",\r\n label: \"Program History\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"linkToHomePage\",\r\n label: \"Home Page\",\r\n options: {\r\n filter: true,\r\n sort: true\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 }\r\n },\r\n {\r\n name: \"contactName\",\r\n label: \"Contact Name\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"contactTitle\",\r\n label: \"Contact Title\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"state\",\r\n label: \"State\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"city\",\r\n label: \"City\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"address\",\r\n label: \"Address\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"zip\",\r\n label: \"Zipcode\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"county\",\r\n label: \"Country\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"phone\",\r\n label: \"Phone\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"emailAddress\",\r\n label: \"Email Address\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n {value}\r\n )\r\n }\r\n },\r\n {\r\n name: \"commissionTerms\",\r\n label: \"Commission Terms\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n \r\n {value}\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: \"offer\",\r\n label: \"Offer\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n

    \r\n {value ? `${value}%` : \"-\"}\r\n

    \r\n )\r\n }\r\n },\r\n {\r\n name: \"offerType\",\r\n label: \"Offer Type\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"yearJoined\",\r\n label: \"Year Joined\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"expirationDate\",\r\n label: \"Expiration Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n {!!(value) ? value.slice(0, value.indexOf(\" \")).trim() : \"-\"}\r\n )\r\n }\r\n },\r\n {\r\n name: \"returnDays\",\r\n label: \"Return Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n

    \r\n {value ? `${value} days` : \"-\"}\r\n

    \r\n )\r\n }\r\n },\r\n {\r\n name: \"transactionUpdateWindow\",\r\n label: \"Phone\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"trueLock\",\r\n label: \"True Lock\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"premiumStatus\",\r\n label: \"Premium Status\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"baselineCommissionTerms\",\r\n label: \"Baseline Commission Terms\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n \r\n {value}\r\n \r\n )\r\n }\r\n },\r\n {\r\n name: \"baselineOffer\",\r\n label: \"Baseline Offer\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"baselineOfferType\",\r\n label: \"Baseline Offer Type\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"baselineExpirationDate\",\r\n label: \"Baseline Expiration Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n {!!(value) ? value.slice(0, value.indexOf(\" \")).trim() : \"-\"}\r\n )\r\n }\r\n },\r\n {\r\n name: \"baselineReturnDays\",\r\n label: \"Baseline Return Days\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"baselineTransactionUpdateWindow\",\r\n label: \"Phone\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"baselineTrueLock\",\r\n label: \"Baseline True Lock\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"network\",\r\n label: \"Network\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"crossDeviceEnabeld\",\r\n label: \"Cross Device Enabled\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"itpCompliant\",\r\n label: \"ITP Compliant\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n];\r\n\r\n\r\n return (\r\n
    \r\n \r\n \r\n

    {this.props.affiliateProgramManager?.name + \" merchants\" ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.merchants}\r\n columns={columns}\r\n options={{\r\n ...this.state.MerchantsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.merchantsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RakutenMerchantData;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass AvantLinkMerchantData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n merchants: [],\r\n merchantsLoading: false,\r\n MerchantsTable: {\r\n title: \"Affiliate merchants\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getMerchants();\r\n };\r\n\r\n getMerchants = async () => {\r\n let url = `/api/Merchant/GetAvantLinkMerchants`;\r\n\r\n this.setState({ merchantsLoading: true });\r\n\r\n try {\r\n const merchants = await getRequest(url);\r\n\r\n this.setState({\r\n merchants,\r\n merchantsLoading: false,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching merchants:\", error);\r\n this.setState({ merchants: [], merchantsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"hostname\",\r\n label: \"Hostname\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\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 customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantName\",\r\n label: \"Merchant Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantCategoryId\",\r\n label: \"Merchant Category ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantCategoryName\",\r\n label: \"Merchant Category Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"associateStatus\",\r\n label: \"Associate Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"active\" ? \"🟢 active\" : \"🔴 inactive\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"commissionAction\",\r\n label: \"Commission Action\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"commissionType\",\r\n label: \"Commission Type\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"commissionRate\",\r\n label: \"Commission Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value ? `${value}` : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"attributionModel\",\r\n label: \"Attribution Model\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"referralDays\",\r\n label: \"Referral Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value} days`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"reversalDays\",\r\n label: \"Reversal Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value} days`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"dateJoined\",\r\n label: \"Date Joined\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return DateTime.fromISO(value).toFormat('MM/dd/yyyy');\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantLogo\",\r\n label: \"Merchant Logo\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"merchantUrl\",\r\n label: \"Merchant URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"availableTools\",\r\n label: \"Available Tools\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"defaultTrackingUrl\",\r\n label: \"Default Tracking URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"avantLinkExclusive\",\r\n label: \"AvantLink Exclusive\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"networkConversionRate\",\r\n label: \"Network Conversion Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"networkReversalRate\",\r\n label: \"Network Reversal Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"networkAverageSaleAmount\",\r\n label: \"Network Average Sale Amount\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"earningsPerClick\",\r\n label: \"Earnings Per Click\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"salesVolume\",\r\n label: \"Sales Volume\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"defaultProgramCommissionRate\",\r\n label: \"Default Program Commission Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n }\r\n ];\r\n\r\n\r\n return (\r\n
    \r\n \r\n \r\n

    {this.props.affiliateProgramManager?.name + \" merchants\" ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.merchants}\r\n columns={columns}\r\n options={{\r\n ...this.state.MerchantsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.merchantsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AvantLinkMerchantData;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass ImpactMerchantData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n merchants: [],\r\n merchantsLoading: false,\r\n MerchantsTable: {\r\n title: \"Affiliate merchants\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getMerchants();\r\n };\r\n\r\n getMerchants = async () => {\r\n let url = `/api/Merchant/GetImpactMerchants`;\r\n\r\n this.setState({ merchantsLoading: true });\r\n\r\n try {\r\n const merchants = await getRequest(url);\r\n\r\n this.setState({\r\n merchants,\r\n merchantsLoading: false,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching merchants:\", error);\r\n this.setState({ merchants: [], merchantsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"hostname\",\r\n label: \"Hostname\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"advertiserId\",\r\n label: \"Advertiser ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"advertiserName\",\r\n label: \"Advertiser Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"advertiserUrl\",\r\n label: \"Advertiser URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"campaignId\",\r\n label: \"Campaign ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"campaignName\",\r\n label: \"Campaign Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"campaignUrl\",\r\n label: \"Campaign URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"campaignDescription\",\r\n label: \"Campaign Description\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"campaignLogoUrl\",\r\n label: \"Campaign Logo\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"contractStatus\",\r\n label: \"Contract Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"Active\" ? \"🟢 Active\" : \"🔴 Inactive\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"trackingLink\",\r\n label: \"Tracking Link\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n )\r\n }\r\n }\r\n },\r\n {\r\n name: \"allowsDeeplinking\",\r\n label: \"Allows Deeplinking\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value ? \"✅ Yes\" : \"❌ No\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"payoutPercentage\",\r\n label: \"Payout Percentage\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value ? `${value}` : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"referralPeriod\",\r\n label: \"Referral Period\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"referralPeriodUnit\",\r\n label: \"Referral Period Unit\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n }\r\n];\r\n\r\n return (\r\n
    \r\n \r\n \r\n

    {this.props.affiliateProgramManager?.name + \" merchants\" ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.merchants}\r\n columns={columns}\r\n options={{\r\n ...this.state.MerchantsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.merchantsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ImpactMerchantData;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass CJAffiliateMerchantData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n merchants: [],\r\n merchantsLoading: false,\r\n MerchantsTable: {\r\n title: \"Affiliate merchants\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getMerchants();\r\n };\r\n\r\n getMerchants = async () => {\r\n let url = `/api/Merchant/GetCJAffiliateMerchants`;\r\n\r\n this.setState({ merchantsLoading: true });\r\n\r\n try {\r\n const merchants = await getRequest(url);\r\n\r\n this.setState({\r\n merchants,\r\n merchantsLoading: false,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching merchants:\", error);\r\n this.setState({ merchants: [], merchantsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"hostname\",\r\n label: \"Hostname\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"commission\",\r\n label: \"Commission\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value ? `${value * 100}%` : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"advertiserId\",\r\n label: \"Advertiser ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"accountStatus\",\r\n label: \"Account Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"Active\" ? \"🟢 Active\" : \"🔴 Inactive\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"sevenDayEpc\",\r\n label: \"7-Day EPC\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `$${value.toFixed(2)}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"threeMonthEpc\",\r\n label: \"3-Month EPC\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `$${value.toFixed(2)}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"language\",\r\n label: \"Language\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"advertiserName\",\r\n label: \"Advertiser Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"programUrl\",\r\n label: \"Program URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"relationshipStatus\",\r\n label: \"Relationship Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"joined\" ? \"✅ Joined\" : \"❌ Not Joined\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"mobileTrackingCertified\",\r\n label: \"Mobile Tracking Certified\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"true\" ? \"✅ Yes\" : \"❌ No\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"cookieLessTrackingEnabled\",\r\n label: \"Cookie-less Tracking\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"true\" ? \"✅ Yes\" : \"❌ No\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"networkRank\",\r\n label: \"Network Rank\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return `${value}`;\r\n }\r\n }\r\n },\r\n {\r\n name: \"performanceIncentives\",\r\n label: \"Performance Incentives\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"true\" ? \"✅ Yes\" : \"❌ No\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"primaryCategory\",\r\n label: \"Primary Category\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value || typeof value !== 'object') {\r\n return \"-\"; // Handle missing or unexpected data gracefully\r\n }\r\n\r\n const { parent, child } = value;\r\n\r\n if (!parent && !child) {\r\n return \"-\"; // If both parent and child are undefined\r\n }\r\n\r\n return (\r\n
    \r\n

    {parent ?? \"-\"}

    \r\n

    {child ?? \"-\"}

    \r\n
    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"actions\",\r\n label: \"Actions\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value || !Array.isArray(value) || value?.length === 0) {\r\n return \"-\"; // Show \"-\" if no actions are available\r\n }\r\n\r\n return (\r\n
      \r\n {value.map((action, index) => (\r\n
    • \r\n {action.name} ({action.type}) - {action.commission ?? \"N/A\"}\r\n
    • \r\n ))}\r\n
    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"linkTypes\",\r\n label: \"Link Types\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value?.length > 0 ? value.join(\", \") : \"-\";\r\n }\r\n }\r\n }\r\n ];\r\n\r\n\r\n return (\r\n
    \r\n \r\n \r\n

    {this.props.affiliateProgramManager?.name + \" merchants\" ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.merchants}\r\n columns={columns}\r\n options={{\r\n ...this.state.MerchantsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.merchantsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default CJAffiliateMerchantData;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass PartnerizeMerchantData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n merchants: [],\r\n merchantsLoading: false,\r\n MerchantsTable: {\r\n title: \"Affiliate merchants\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getMerchants();\r\n };\r\n\r\n getMerchants = async () => {\r\n let url = `/api/Merchant/GetPartnerizeMerchants`;\r\n\r\n this.setState({ merchantsLoading: true });\r\n\r\n try {\r\n const merchants = await getRequest(url);\r\n\r\n this.setState({\r\n merchants,\r\n merchantsLoading: false,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching merchants:\", error);\r\n this.setState({ merchants: [], merchantsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"hostname\",\r\n label: \"Hostname\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return {value};\r\n }\r\n }\r\n },\r\n {\r\n name: \"campaignId\",\r\n label: \"Campaign ID\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"advertiserId\",\r\n label: \"Advertiser ID\",\r\n options: {\r\n filter: true,\r\n sort: true\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 }\r\n },\r\n {\r\n name: \"destinationUrl\",\r\n label: \"Destination URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\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 }\r\n },\r\n {\r\n name: \"campaignLogo\",\r\n label: \"Campaign Logo\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"verticalId\",\r\n label: \"Vertical ID\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"campaignLanguages\",\r\n label: \"Campaign Languages\",\r\n options: {\r\n filter: true,\r\n sort: true\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 customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"a\" ? \"🟢 Active\" : value === \"r\" ? \"⚫ Retired\" : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"reportingTimezone\",\r\n label: \"Reporting Timezone\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"conversionType\",\r\n label: \"Conversion Type\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"multipleConversionsPerClick\",\r\n label: \"Multiple Conversions Per Click\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"y\" ? \"✅ Yes\" : value === \"n\" ? \"❌ No\" : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"cookieStatus\",\r\n label: \"Cookie Status\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"tqEnabled\",\r\n label: \"TQ Enabled\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"y\" ? \"✅ Yes\" : value === \"n\" ? \"❌ No\" : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"isCpc\",\r\n label: \"Is CPC\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"y\" ? \"✅ Yes\" : value === \"n\" ? \"❌ No\" : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"defaultMobileDestination\",\r\n label: \"Default Mobile Destination\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"associatedCampaigns\",\r\n label: \"Associated Campaigns\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n )\r\n }\r\n }\r\n },\r\n {\r\n name: \"defaultCurrency\",\r\n label: \"Default Currency\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"restrictedDeepLinking\",\r\n label: \"Restricted Deep Linking\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"extraRestrictedDeepLinkingDomains\",\r\n label: \"Extra Restricted Deep Linking Domains\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"testMode\",\r\n label: \"Test Mode\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"y\" ? \"✅ Yes\" : value === \"n\" ? \"❌ No\" : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"allowDeepLinking\",\r\n label: \"Allow Deep Linking\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"y\" ? \"✅ Yes\" : value === \"n\" ? \"❌ No\" : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"allowThirdPartyPixel\",\r\n label: \"Allow Third Party Pixel\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"y\" ? \"✅ Yes\" : value === \"n\" ? \"❌ No\" : \"-\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"leadConfirmationUrlSuccess\",\r\n label: \"Lead Confirmation URL Success\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"leadConfirmationUrlFail\",\r\n label: \"Lead Confirmation URL Fail\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"cookiePeriod\",\r\n label: \"Cookie Period\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"verticalName\",\r\n label: \"Vertical Name\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"defaultCommissionRate\",\r\n label: \"Default Commission Rate\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => (\r\n
    \r\n {value}%\r\n
    \r\n )\r\n }\r\n },\r\n {\r\n name: \"defaultCommissionValue\",\r\n label: \"Default Commission Value\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"terms\",\r\n label: \"Terms\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value || \"-\"}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"termsId\",\r\n label: \"Terms ID\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"campaignCustomTermsAndConditionsId\",\r\n label: \"Campaign Custom Terms ID\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"campaignCustomTermsAndConditions\",\r\n label: \"Campaign Custom Terms\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value || \"-\"}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"publisherStatus\",\r\n label: \"Publisher Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"a\" ? \"🟢 Active\" : \"🔴 Inactive\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"performanceValue\",\r\n label: \"Performance Value\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: \"performanceModel\",\r\n label: \"Performance Model\",\r\n options: {\r\n filter: true,\r\n sort: true\r\n }\r\n }\r\n\r\n ];\r\n\r\n\r\n return (\r\n
    \r\n \r\n \r\n

    {this.props.affiliateProgramManager?.name + \" merchants\" ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.merchants}\r\n columns={columns}\r\n options={{\r\n ...this.state.MerchantsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.merchantsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default PartnerizeMerchantData;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass AwinMerchantData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n merchants: [],\r\n merchantsLoading: false,\r\n MerchantsTable: {\r\n title: \"Affiliate merchants\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getMerchants();\r\n };\r\n\r\n getMerchants = async () => {\r\n let url = `/api/Merchant/GetAwinMerchants`;\r\n\r\n this.setState({ merchantsLoading: true });\r\n\r\n try {\r\n const merchants = await getRequest(url);\r\n\r\n this.setState({\r\n merchants,\r\n merchantsLoading: false,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching merchants:\", error);\r\n this.setState({ merchants: [], merchantsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"hostname\",\r\n label: \"Hostname\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"displayUrl\",\r\n label: \"Display URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"logoUrl\",\r\n label: \"Logo URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"clickThroughUrl\",\r\n label: \"Click Through URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\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 customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"name\",\r\n label: \"Merchant Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"currencyCode\",\r\n label: \"Currency Code\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"deeplinkEnabled\",\r\n label: \"Deeplink Enabled\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"true\" ? \"✅ Yes\" : \"❌ No\"}\r\n

    \r\n );\r\n }\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 customBodyRender: (value) => {\r\n return (\r\n \r\n {value ?? \"-\"}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"membershipStatus\",\r\n label: \"Membership Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n

    \r\n {value === \"Joined\" ? \"🟢 Joined\" : \"🔴 Inactive\"}\r\n

    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"primaryRegion\",\r\n label: \"Primary Region\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"kpi\",\r\n label: \"KPI\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n
    \r\n {value}\r\n
    \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"commissionRange\",\r\n label: \"Commission Range\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"validDomains\",\r\n label: \"Valid Domains\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) return \"-\";\r\n\r\n let domainList;\r\n\r\n try {\r\n const parsedValue = typeof value === 'string'\r\n ? JSON.parse(value)\r\n : value;\r\n\r\n if (!Array.isArray(parsedValue) || parsedValue.length === 0) {\r\n return \"-\";\r\n }\r\n\r\n domainList = parsedValue\r\n .map(domainObj => domainObj.domain)\r\n .filter(Boolean); // Ensures only valid domains are included\r\n\r\n return domainList.length > 1\r\n ? domainList.join(\", \")\r\n : domainList[0] ?? \"-\";\r\n\r\n } catch (error) {\r\n console.error(\"Invalid JSON for validDomains:\", value);\r\n return \"-\";\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.props.affiliateProgramManager?.name + \" merchants\" ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.merchants}\r\n columns={columns}\r\n options={{\r\n ...this.state.MerchantsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.merchantsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AwinMerchantData;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass AscendMerchantData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n merchants: [],\r\n merchantsLoading: false,\r\n MerchantsTable: {\r\n title: \"Affiliate merchants\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getMerchants();\r\n };\r\n\r\n getMerchants = async () => {\r\n let url = `/api/Merchant/GetAscendMerchants`;\r\n\r\n this.setState({ merchantsLoading: true });\r\n\r\n try {\r\n const merchants = await getRequest(url);\r\n\r\n this.setState({\r\n merchants,\r\n merchantsLoading: false,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching merchants:\", error);\r\n this.setState({ merchants: [], merchantsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"merchantId\",\r\n label: \"Merchant ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\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 customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\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 customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"description\",\r\n label: \"Description\",\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return (\r\n \r\n {value ?? \"-\"}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: \"logo\",\r\n label: \"Logo\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value\r\n ? \"Merchant\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"deepLinkUrl\",\r\n label: \"Deep Link URL\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value\r\n ? {value}\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"prohibitedStates\",\r\n label: \"Prohibited States\",\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"mobileTracking\",\r\n label: \"Mobile Tracking\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value === \"Enabled\" ? \"✅ Enabled\" : \"❌ No\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"lockPeriod\",\r\n label: \"Lock Period\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"category\",\r\n label: \"Category\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"address1\",\r\n label: \"Address 1\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"address2\",\r\n label: \"Address 2\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"city\",\r\n label: \"City\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"stateCode\",\r\n label: \"State Code\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"zipCode\",\r\n label: \"Zip Code\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"countryCode\",\r\n label: \"Country Code\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"phone\",\r\n label: \"Phone\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"website\",\r\n label: \"Website\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value\r\n ? {value}\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"contactName\",\r\n label: \"Contact Name\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"email\",\r\n label: \"Email\",\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value\r\n ? {value}\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"currency\",\r\n label: \"Currency\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\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 customBodyRender: (value) => {\r\n return value === \"joined\" ? \"🟢 Joined\" : \"🔴 Inactive\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"joinDate\",\r\n label: \"Join Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value\r\n ? new Date(value).toLocaleDateString()\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"cookieDuration\",\r\n label: \"Cookie Duration\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"percentagePayout\",\r\n label: \"Percentage Payout\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value\r\n ? `${value.toFixed(2)}%`\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"flatPayout\",\r\n label: \"Flat Payout\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value\r\n ? `$${value.toFixed(2)}`\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"deepLinking\",\r\n label: \"Deep Linking\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value === \"Yes\" ? \"✅ Yes\" : \"❌ No\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"productFeed\",\r\n label: \"Product Feed\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value === \"Yes\" ? \"✅ Yes\" : \"❌ No\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"validDomains\",\r\n label: \"Valid Domains\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n }\r\n }\r\n ];\r\n\r\n\r\n\r\n return (\r\n
    \r\n \r\n \r\n

    {this.props.affiliateProgramManager?.name + \" merchants\" ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.merchants}\r\n columns={columns}\r\n options={{\r\n ...this.state.MerchantsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.merchantsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AscendMerchantData;\r\n","import React from \"react\";\r\nimport { getRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass ShareASaleMerchantData extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n merchants: [],\r\n merchantsLoading: false,\r\n MerchantsTable: {\r\n title: \"Affiliate merchants\",\r\n options: {\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getMerchants();\r\n };\r\n\r\n getMerchants = async () => {\r\n let url = `/api/Merchant/GetShareASaleMerchants`;\r\n\r\n this.setState({ merchantsLoading: true });\r\n\r\n try {\r\n const merchants = await getRequest(url);\r\n\r\n this.setState({\r\n merchants,\r\n merchantsLoading: false,\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching merchants:\", error);\r\n this.setState({ merchants: [], merchantsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"merchantId\",\r\n label: \"Merchant ID\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\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 customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\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 customBodyRender: (value) => {\r\n if (!value) return \"-\";\r\n const index = value.indexOf(\"?\");\r\n return index !== -1 ? value.slice(0, index) : value;\r\n }\r\n }\r\n },\r\n {\r\n name: \"programStatus\",\r\n label: \"Program Status\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"programCategory\",\r\n label: \"Program Category\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ?? \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"saleCommission\",\r\n label: \"Sale Commission\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ? `${value}` : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"leadCommission\",\r\n label: \"Lead Commission\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: \"hitCommission\",\r\n label: \"Hit Commission\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: \"approved\",\r\n label: \"Approved\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value === \"Yes\" ? \"✅ Yes\" : value === \"Pending\" ? \"⏳ Pending\" : value === \"Declined\" ? \"❌ Declined\" : value;\r\n }\r\n }\r\n },\r\n {\r\n name: \"linkUrl\",\r\n label: \"Link URL\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ? (\r\n \r\n {value}\r\n \r\n ) : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"storeNames\",\r\n label: \"Store Names\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value ? value.split(\",\").join(\", \") : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"storeWebsites\",\r\n label: \"Store Websites\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) return \"-\";\r\n const websites = value.split(\",\").map((url, index) => (\r\n
    \r\n {url.trim()}\r\n
    \r\n ));\r\n return websites;\r\n }\r\n }\r\n },\r\n {\r\n name: \"ruleCommissionDate\",\r\n label: \"Rule Commission Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value\r\n ? new Date(value).toLocaleDateString(\"en-US\")\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"conversionLineDate\",\r\n label: \"Conversion Line Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return value\r\n ? new Date(value).toLocaleDateString(\"en-US\")\r\n : \"-\";\r\n }\r\n }\r\n },\r\n {\r\n name: \"shipsTo\",\r\n label: \"Ships To\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return (\r\n
    \r\n {value}\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.props.affiliateProgramManager?.name + \" merchants\" ?? \"No affiliate selected\"}

    \r\n
    \r\n }\r\n data={this.state.merchants}\r\n columns={columns}\r\n options={{\r\n ...this.state.MerchantsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.merchantsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ShareASaleMerchantData;\r\n","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport { getQueryStringParams } from \"sharedUtils/navUtils\";\r\nimport RakutenMerchantData from './RakutenMerchantData';\r\nimport AvantLinkMerchantData from './AvantLinkMerchantData';\r\nimport ImpactMerchantData from './ImpactMerchantData';\r\nimport CJAffiliateMerchantData from './CJAffiliateMerchantData';\r\nimport PartnerizeMerchantData from './PartnerizeMerchantData';\r\nimport AwinMerchantData from './AwinMerchantData';\r\nimport AscendMerchantData from \"./AscendMerchantData\";\r\nimport ShareASaleMerchantData from \"./ShareASaleMerchantData\";\r\n\r\nclass AffiliateMerchantData 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 }\r\n\r\n renderAffiliateComponent = () => {\r\n const { affiliateProgramManager } = this.props;\r\n\r\n switch (affiliateProgramManager.name) {\r\n case \"CJAffiliate\":\r\n return \r\n case \"Rakuten\":\r\n return \r\n case \"Ascend\":\r\n return \r\n case \"Awin\":\r\n return \r\n case \"AvantLink\":\r\n return \r\n case \"Impact\":\r\n return \r\n case \"Partnerize\":\r\n return \r\n case \"ShareASale\":\r\n return \r\n case \"Amazon\":\r\n return

    Amazon has no merchant data

    ;\r\n default:\r\n return

    Unknown Affiliate Program

    ;\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.renderAffiliateComponent()}\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(AffiliateMerchantData);\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport AffiliateMerchantData from './AffiliateMerchantData';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\nimport { CheckIconBlack } from \"../../icons\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass AffiliateMerchantDetails extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n tab: 0,\r\n affiliateProgramManager: null,\r\n apmId: this.props.apmId ?? null,\r\n brands: [],\r\n brandCount: 0,\r\n integratedCount: 0,\r\n deepLinkOnlyCount: 0,\r\n alarms: [],\r\n subsLoading: false,\r\n BrandsTable: {\r\n title: \"Affiliate Brands\",\r\n options: { \r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'merchantName',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.fetchAffiliateProgramManager();\r\n this.getBrands();\r\n };\r\n\r\n\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n fetchAffiliateProgramManager = async (id) => {\r\n let url = `api/AffiliateProgramManager/GetAffiliateProgramManager?id=${this.state.apmId}`;\r\n let affiliateProgramManager = await getRequest(url);\r\n if (affiliateProgramManager) {\r\n this.setState({ affiliateProgramManager })\r\n }\r\n }\r\n\r\n getBrands = async () => {\r\n let url = `/api/Merchant/GetCommissionEstimateFullCommission?affiliateId=${this.state.apmId}`;\r\n\r\n this.setState({ subsLoading: true });\r\n\r\n try {\r\n //const brandsResults = await getRequest(url);\r\n //const brands = brandsResults.filter(brand => brand.affiliateProgramManagerId === parseInt(this.state.apmId));\r\n const brands = await getRequest(url);\r\n\r\n const brandCount = brands.length;\r\n const integratedCount = brands.filter(brand => !!brand.integrated).length;\r\n const deepLinkOnlyCount = brands.filter(brand => !!brand.deepLinkOnly).length;\r\n\r\n this.setState({\r\n brands,\r\n subsLoading: false,\r\n brandCount,\r\n integratedCount,\r\n deepLinkOnlyCount\r\n });\r\n } catch (error) {\r\n console.error(\"Error fetching brands:\", error);\r\n this.setState({ brands: [], subsLoading: false });\r\n }\r\n };\r\n\r\n onTabChange = (tab) => {\r\n this.setState({ tab });\r\n }\r\n\r\n render() {\r\n let smallSizes = [\"sm\", \"md\"];\r\n let { deviceSize } = this.props;\r\n\r\n const columns = [\r\n {\r\n name: \"merchantName\",\r\n label: \"Name\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n setCellProps: () => ({\r\n style: { width: \"100%\", whiteSpace: \"nowrap\", overflow: \"hidden\", textOverflow: \"ellipsis\" }\r\n })\r\n },\r\n },\r\n {\r\n name: \"commission\",\r\n label: \"Commission\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n customBodyRender: (value) => {\r\n let commissionPercentage = value * 100;\r\n let roundedCommissionPercentage = commissionPercentage % 1 === 0 ? commissionPercentage : commissionPercentage.toFixed(2);\r\n\r\n return

    {roundedCommissionPercentage}%

    \r\n },\r\n setCellProps: () => ({\r\n style: { width: \"1%\", minWidth: \"100px\" } // Minimum width for smaller columns\r\n })\r\n },\r\n },\r\n {\r\n name: \"integrated\",\r\n label: \"Integrated\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return

    {!!(value) ? : \"\"}

    \r\n },\r\n setCellProps: () => ({\r\n style: { width: \"1%\", minWidth: \"100px\" } // Minimum width for smaller columns\r\n })\r\n },\r\n },\r\n {\r\n name: \"deepLinkOnly\",\r\n label: \"Deep Link Only\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n return

    {!!(value) ? : \"\"}

    \r\n },\r\n setCellProps: () => ({\r\n style: { width: \"1%\", minWidth: \"100px\" } // Minimum width for smaller columns\r\n })\r\n },\r\n },\r\n {\r\n name: \"deleted\",\r\n label: \"Active\",\r\n options: {\r\n filter: true,\r\n display: true,\r\n customBodyRender: (value) => {\r\n return

    {!(value) ? : \"\"}

    \r\n },\r\n setCellProps: () => ({\r\n style: { width: \"1%\", minWidth: \"100px\" } // Minimum width for smaller columns\r\n })\r\n },\r\n },\r\n {\r\n name: \"id\",\r\n label: \"Edit\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value, tableMeta) => {\r\n const merchantAffiliateProgramManagerId = tableMeta.rowData[\r\n columns.findIndex(col => col.name === \"merchantAffiliateProgramManagerId\")\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n },\r\n setCellProps: () => ({\r\n style: { width: \"1%\", minWidth: \"100px\" } // Minimum width for smaller columns\r\n })\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: true,\r\n sort: true,\r\n display: false,\r\n },\r\n },\r\n ];\r\n\r\n return (\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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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
      \r\n
    • this.onTabChange(0)}>\r\n {this.state.affiliateProgramManager?.name + \" Brands\"}\r\n
    • \r\n
    • this.onTabChange(1)}>\r\n {this.state.affiliateProgramManager?.name + \" Merchant Data\"}\r\n
    • \r\n
    \r\n {\r\n this.state.tab === 0 ?\r\n \r\n \r\n

    {this.state.affiliateProgramManager?.name + \" Brands\" ?? \"No affiliate selected\"}

    \r\n

    Brands: {this.state.brandCount}

    \r\n

    Integrated: {this.state.integratedCount}

    \r\n

    Deep Link Only: {this.state.deepLinkOnlyCount}

    \r\n
    \r\n }\r\n data={this.state.brands}\r\n columns={columns}\r\n options={{\r\n ...this.state.BrandsTable.options,\r\n textLabels: {\r\n body: { noMatch: this.state.subsLoading ? \"LOADING...\" : \"No data available\" },\r\n },\r\n selectableRows: \"none\",\r\n }}\r\n ref={this.tableRef}\r\n />\r\n \r\n :\r\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 AffiliateMerchantDetails;\r\n","import React from \"react\";\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\nimport { ThemeProvider, createTheme } from \"@material-ui/core/styles\";\r\n\r\nconst { DateTime } = require(\"luxon\");\r\n\r\nclass AffiliateCommissionDetails extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.tableRef = React.createRef();\r\n\r\n this.state = {\r\n startDate: DateTime.utc().minus({ weeks: 1 }).startOf('day'),\r\n endDate: DateTime.utc().endOf('day'),\r\n minDate: \"1753-01-01\",\r\n maxDate: \"9999-12-31\",\r\n dateError: false,\r\n alarms: [],\r\n alarmsLoading: false,\r\n RedirectFailuresTable: {\r\n title: \"Daily Spikes - Creators receiving a higher than normal number of clicks\",\r\n options: {\r\n customToolbarSelect: (selectedRows, displayData, setSelectedRows) => (\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n ),\r\n selectableRows: \"multiple\",\r\n rowsPerPage: 100,\r\n sortOrder: {\r\n name: 'userId',\r\n direction: 'asc'\r\n },\r\n },\r\n getTheme: () => createTheme({\r\n overrides: {\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 }\r\n })\r\n },\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: 'auto' });\r\n this.getAlarms();\r\n };\r\n\r\n componentDidUpdate = async (prevProps, prevState) => {\r\n const { startDate, endDate, minDate, maxDate } = this.state;\r\n\r\n // Only run validation if dates changed\r\n if (prevState.startDate !== startDate || prevState.endDate !== endDate) {\r\n\r\n // Convert minDate/maxDate (which are strings) to Luxon DateTime\r\n const minDateObj = DateTime.fromISO(minDate); // \"1753-01-01\"\r\n const maxDateObj = DateTime.fromISO(maxDate); // \"9999-12-31\"\r\n\r\n // Check:\r\n // 1) Both dates are valid\r\n // 2) Both dates fall within [minDate, maxDate]\r\n // 3) startDate < endDate\r\n if (\r\n startDate?.isValid && endDate?.isValid &&\r\n startDate >= minDateObj && startDate <= maxDateObj &&\r\n endDate >= minDateObj && endDate <= maxDateObj &&\r\n startDate < endDate\r\n ) {\r\n this.setState({ dateError: false });\r\n await this.getAlarms();\r\n } else {\r\n this.setState({ dateError: true });\r\n }\r\n }\r\n };\r\n\r\n\r\n confirmResolved = (selectedRows, displayData) => {\r\n const confirmDelete = window.confirm(\"Are you sure you want to RESOLVE these items\");\r\n if (confirmDelete) {\r\n this.handleResolved(selectedRows, displayData);\r\n }\r\n }\r\n\r\n handleResolved = async (selectedRows, displayData) => {\r\n //this.setState({ loading: true });\r\n\r\n const selectedRowsData = selectedRows.data;\r\n const alarmIds = selectedRowsData.map(row => displayData[row.index].data[0]);\r\n const deleteUrl = \"Products/PostAlarmHistoryResolved\";\r\n\r\n const payload = {\r\n alarmIds\r\n }\r\n\r\n //setTimeout(() => {\r\n // this.tableRef.current.setState({ selectedRows: { data: [] } });\r\n //}, 3000);\r\n\r\n const success = await postRequest(deleteUrl, payload);\r\n\r\n if (success) {\r\n await this.getAlarms();\r\n this.tableRef.current.setState({ selectedRows: { data: [] } }); // Deselects the table rows using this.tableRef created with React.createRef()\r\n\r\n this.setState({ 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\r\n handleStartDateChange = (event) => {\r\n const startDateRaw = event.target.value;\r\n if (startDateRaw.length === 0) return;\r\n\r\n const startDate = DateTime.fromISO(startDateRaw).toUTC().startOf('day');\r\n if (startDate.isValid) {\r\n this.setState({ startDate });\r\n } else {\r\n console.error(\"Invalid start date entered:\", startDateRaw);\r\n }\r\n };\r\n\r\n handleEndDateChange = (event) => {\r\n const endDateRaw = event.target.value;\r\n if (endDateRaw.length === 0) return;\r\n\r\n const endDate = DateTime.fromISO(endDateRaw).toUTC().endOf('day');\r\n if (endDate.isValid) {\r\n this.setState({ endDate });\r\n } else {\r\n console.error(\"Invalid end date entered:\", endDateRaw);\r\n }\r\n };\r\n\r\n handleWeekToDate = () => {\r\n const startDate = DateTime.utc().minus({ weeks: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleMonthToDate = () => {\r\n const startDate = DateTime.utc().minus({ months: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleYearToDate = () => {\r\n const startDate = DateTime.utc().minus({ years: 1 }).startOf('day');\r\n this.setState({ startDate, endDate: DateTime.utc().endOf('day') });\r\n };\r\n\r\n handleShowResolvedChange = (event) => {\r\n const showResolved = event?.target?.checked ?? false; // Safely get the checked value or default to false\r\n\r\n this.setState({ showResolved, alarms: [] }, () => this.getAlarms());\r\n };\r\n\r\n addRockPorchUrls = (alarms) => {\r\n const schemeAndHost = `${window.location.protocol}//${window.location.host}`;\r\n\r\n return alarms.map(alarm => {\r\n let rockporchUrl;\r\n\r\n if (alarm.shareCode) {\r\n // Product URL: schemeAndHost/prdlink/{shareCode}\r\n rockporchUrl = `${schemeAndHost}/prdlink/${alarm.shareCode}`;\r\n } else {\r\n // Merchant link URL: schemeAndHost/mlink/{merchantId}?userId={creatorUserId}&redirectUrl={encoded referralUrl}\r\n const merchantId = alarm.merchantId;\r\n const creatorUserId = alarm.creatorUserId;\r\n const referralUrl = alarm.referralUrl || '';\r\n rockporchUrl = `${schemeAndHost}/mlink/${merchantId}?userId=${creatorUserId}&redirectUrl=${encodeURIComponent(referralUrl)}`;\r\n }\r\n\r\n return {\r\n ...alarm,\r\n rockporchUrl,\r\n };\r\n });\r\n };\r\n\r\n getAlarms = async () => {\r\n let url = `Products/GetAlarmDailySpikes`;\r\n const { startDate, endDate, showResolved } = this.state;\r\n let now = DateTime.now();\r\n let offset = now.offset;\r\n\r\n if (startDate) {\r\n url += `?startDate=${startDate.toSQL({ includeOffset: false })}`\r\n }\r\n\r\n if (endDate) {\r\n url += url.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 url += `&showAll=${showResolved}`;\r\n\r\n url += `&offset=${offset}`\r\n\r\n this.setState({ alarmsLoading: true });\r\n\r\n try {\r\n const fetchedAlarms = await getRequest(url);\r\n\r\n // Add rockporchUrl to each alarm and set the final alarms in state\r\n const alarms = this.addRockPorchUrls(fetchedAlarms);\r\n\r\n this.setState({ alarms, alarmsLoading: false });\r\n } catch (error) {\r\n console.error(\"Error fetching alarms:\", error);\r\n this.setState({ alarms: [], alarmsLoading: false });\r\n }\r\n };\r\n\r\n render() {\r\n const columns = [\r\n {\r\n name: \"alarmId\",\r\n label: \"Alarm ID\",\r\n options: {\r\n filter: 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 display: false,\r\n },\r\n },\r\n {\r\n name: \"referralUrl\",\r\n label: \"Merchant ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"shareCode\",\r\n label: \"ShareCode\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"creatorUserId\",\r\n label: \"Creator UserId\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"merchantLinkId\",\r\n label: \"MerchantLink ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"userMerchantProductId\",\r\n label: \"UserMerchantProduct ID\",\r\n options: {\r\n filter: true,\r\n display: false,\r\n },\r\n },\r\n {\r\n name: \"alarmCreatedDate\",\r\n label: \"Alarm Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"creatorUserName\",\r\n label: \"Creator\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"creatorEmail\",\r\n label: \"Creator Email\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"rockporchUrl\",\r\n label: \"RockPorch Link\",\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value) => {\r\n return value ? (\r\n
    \r\n \r\n {value}\r\n \r\n
    \r\n ) : \"-\";\r\n },\r\n },\r\n },\r\n {\r\n name: \"referrer\",\r\n label: \"Referrer\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"firstClickedDate\",\r\n label: \"First Click Date\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n customBodyRender: (value) => {\r\n if (!value) {\r\n return \"-\";\r\n }\r\n try {\r\n return convertToNumericMonthAndDayAndYearAndTime(value, false).replace(',', '');\r\n } catch (error) {\r\n console.error(\"Invalid date encountered:\", value, error);\r\n return \"-\";\r\n }\r\n },\r\n },\r\n },\r\n {\r\n name: \"clicksToday\",\r\n label: \"Clicks Today\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"sevenDayClicks\",\r\n label: \"Avg Clicks 7 Days\",\r\n options: {\r\n filter: true,\r\n sort: true,\r\n },\r\n },\r\n {\r\n name: \"thirtyDayClicks\",\r\n label: \"Avg Clicks 30 Day Clicks\",\r\n options: {\r\n filter: true,\r\n sort: true,\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 \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

    Dates must be valid dates and Start Date must be before the End Date

    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \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 \r\n \r\n

    Clicks Daily Spikes

    \r\n

    Creators receiving a higher than normal number of clicks

    \r\n
    \r\n }\r\n data={this.state.alarms}\r\n columns={columns}\r\n options={this.state.RedirectFailuresTable.options}\r\n ref={this.tableRef}\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 AffiliateCommissionDetails;\r\n","import React from \"react\";\r\nimport { withRouter } from 'react-router-dom';\r\nimport AccountBanner from \"../../components/AccountBanner\"\r\nimport AffiliateSubaffiliateDetails from \"./AffiliateSubaffiliateDetails\";\r\nimport AffiliateMerchantDetails from \"./AffiliateMerchantDetails\";\r\nimport AffiliateCommissionDetails from \"./AffiliateCommissionDetails\";\r\nimport { getQueryStringParams } from \"sharedUtils/navUtils\"\r\n\r\nclass AffiliateDetails extends React.Component {\r\n\r\n state = {\r\n selectedCase: 1,\r\n affiliateId: null,\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({ affiliateId :this.props.match.params.id });\r\n\r\n const params = getQueryStringParams(window.location.search);\r\n const selectedCase = Math.floor(params.tab);\r\n console.log(params, selectedCase)\r\n if (selectedCase) {\r\n this.setState({ selectedCase });\r\n }\r\n }\r\n\r\n displayToggleButtons = () => {\r\n let options = [\r\n {\r\n name: \"Subaffiliate Details\",\r\n case: 1,\r\n action: () => this.handleButtonAction(1)\r\n },\r\n {\r\n name: \"Merchant Details\",\r\n case: 2,\r\n action: () => this.handleButtonAction(2)\r\n },\r\n //{\r\n // name: \"Commission Details\",\r\n // case: 2,\r\n // action: () => this.handleButtonAction(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 handleButtonAction = selectedCase => {\r\n this.setState({ selectedCase });\r\n this.updateQueryString(selectedCase);\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 getBreadCrumbList = () => {\r\n switch (this.state.selectedCase) {\r\n default: return this.breadCrumbList;\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n
    \r\n \r\n

    Affiliate Details

    \r\n

    Management of affiliate network details

    \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.affiliateId) ? \r\n <>\r\n
    \r\n \r\n \r\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(AffiliateDetails);","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ResetIcon from \"components/icons/ResetIcon\"\r\nimport AccountBanner from \"components/AccountBanner\";\r\nimport PenIcon from \"components/icons/PenIcon\";\r\nimport ActionButton from \"components/ActionButton\";\r\nimport Modal from 'react-modal';\r\n\r\nimport { getRequest, postRequest } from \"sharedUtils/httpUtils\";\r\nimport { convertToNumericMonthAndDayAndYearAndTime } from \"sharedUtils/timeUtils\";\r\n\r\nimport { DateTime } from \"luxon\";\r\nimport { createReturn } from \"typescript\";\r\n\r\nclass SocialPlatforms extends React.Component {\r\n\r\n state = {\r\n socialPlatforms: [],\r\n }\r\n\r\n async componentDidMount() {\r\n let socialPlatforms = await this.fetchSocialPlatforms()\r\n\r\n this.setState({ socialPlatforms });\r\n }\r\n\r\n breadCrumbList = [\r\n { link: '/Admin', text: 'Admin' },\r\n { link: '/Admin/SocialPlatforms', text: 'Social Platforms' }\r\n ]\r\n\r\n displayHeaders = () => {\r\n let headers = [\"Name\", \"Live\"];\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\r\n displayRows = () => {\r\n return this.state.socialPlatforms?.map((social, i) => { \r\n\r\n return (\r\n \r\n \r\n {social?.name}\r\n \r\n\r\n \r\n
    \r\n
    this.updateSocialPlatformLive(social?.platformTypeId, social?.live) } >\r\n \r\n
    \r\n
    \r\n \r\n \r\n )\r\n })\r\n }\r\n\r\n fetchSocialPlatforms = async () => {\r\n let url = \"api/Merchant/GetPlatformConfigs\";\r\n let configs = await getRequest(url);\r\n return configs;\r\n }\r\n\r\n updateSocialPlatformLive = async (platformTypeId, live) => {\r\n let url = \"api/Merchant/UpdatePlatformConfigs\";\r\n let config = {\r\n platformTypeId,\r\n live: !live\r\n };\r\n\r\n await postRequest(url, config);\r\n\r\n this.setState(prevState => ({\r\n socialPlatforms: prevState.socialPlatforms.map(social =>\r\n social.platformTypeId === platformTypeId\r\n ? { ...social, live: !social.live }\r\n : social\r\n )\r\n }));\r\n };\r\n\r\n\r\n render() {\r\n return (\r\n <> \r\n
    \r\n \r\n

    Social Platforms

    \r\n

    \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
    \r\n \r\n )\r\n }\r\n}\r\n\r\n\r\n\r\nexport default SocialPlatforms","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\r\n subaffiliates: [],\r\n options: [],\r\n rpManagerOptions: [],\r\n value: [],\r\n lookupUsername: true,\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 if (this.state.lookupUsername) {\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 } else {\r\n this.setState({ isLoading: true });\r\n let url = `/api/Account/GetUserSuggestionsByEmail?email=${query}`;\r\n\r\n let users = await getRequest(url);\r\n this.setState({ options: users, isLoading: false });\r\n }\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 handleLookupChange = lookupUsername => {\r\n this.setState({ lookupUsername });\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
    Lookup User by:
    \r\n
    \r\n
    \r\n
    \r\n this.handleLookupChange(true)} />\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n this.handleLookupChange(false)} />\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/GetIntegrated\";\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 { withRouter } from \"react-router-dom\";\r\nimport MUIDataTable from \"mui-datatables\";\r\nimport { createTheme, ThemeProvider } from '@material-ui/core/styles';\r\nimport { convertToNumericMonthAndDayAndYear } 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 const username = tableMeta.rowData[4]; // Access the username column (5th column, zero-based index)\r\n return (\r\n this.openClicks(convertToNumericMonthAndDayAndYear(new Date(value), false), username)}\r\n >\r\n {convertToNumericMonthAndDayAndYear(new Date(value), false)}\r\n \r\n );\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 openClicks = (date, userName) => {\r\n // Parse MM/DD/YYYY format correctly\r\n const parsedDate = DateTime.fromFormat(date, \"M/d/yyyy\");\r\n\r\n if (!parsedDate.isValid) {\r\n console.error(\"Invalid date format:\", date);\r\n return;\r\n }\r\n\r\n if (userName?.length > 0) {\r\n this.props.history.push(\"/Admin/CreatorClicks\", {\r\n startDate: parsedDate.toISODate(), // Converts to YYYY-MM-DD\r\n endDate: parsedDate.toISODate(),\r\n userName,\r\n });\r\n } else {\r\n this.props.history.push(\"/Admin/CreatorClicks\", {\r\n startDate: parsedDate.toISODate(), // Converts to YYYY-MM-DD\r\n endDate: parsedDate.toISODate(),\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 withRouter(AnalyticsAggregateTable);","import React, { Component } from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\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 { convertToNumericMonthAndDayAndYear } 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 this.openClicks(convertToNumericMonthAndDayAndYear(new Date(data.date), false))}>{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 this.openClicks(convertToNumericMonthAndDayAndYear(new Date(data.date), false))}>{convertToNumericMonthAndDayAndYear(new Date(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 }\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 toggleShowClicks = () => {\r\n this.setState({ showClicks: !this.state.showClicks });\r\n }\r\n\r\n openClicks = (date, userName) => {\r\n if (this.props.admin) {\r\n // Parse MM/DD/YYYY format correctly\r\n const parsedDate = DateTime.fromFormat(date, \"M/d/yyyy\");\r\n\r\n if (!parsedDate.isValid) {\r\n console.error(\"Invalid date format:\", date);\r\n return;\r\n }\r\n\r\n if (this.props.user?.userName?.length > 0) {\r\n this.props.history.push(\"/Admin/CreatorClicks\", {\r\n startDate: parsedDate.toISODate(), // Converts to YYYY-MM-DD\r\n endDate: parsedDate.toISODate(),\r\n userName: this.props.user.userName\r\n });\r\n } else {\r\n this.props.history.push(\"/Admin/CreatorClicks\", {\r\n startDate: parsedDate.toISODate(), // Converts to YYYY-MM-DD\r\n endDate: parsedDate.toISODate(),\r\n });\r\n }\r\n }\r\n };\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 withRouter(AnalyticsChart);\r\n","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 {\r\n this.props.admin ?\r\n \r\n {!!(data.affiliateNetworkPaidDate) ? convertToNumericMonthAndDayAndYear(new Date(data.affiliateNetworkPaidDate), false) : !!(data.estimatedAffiliateNetworkPaidDate) ? convertToNumericMonthAndDayAndYear(new Date(data.estimatedAffiliateNetworkPaidDate), false) + \"*\" : \"N/A\"}\r\n \r\n :\r\n <>\r\n }\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 {\r\n this.props.admin ?\r\n \r\n {!!(data.affiliateNetworkPaidDate) ? convertToNumericMonthAndDayAndYear(new Date(data.affiliateNetworkPaidDate), false) : !!(data.estimatedAffiliateNetworkPaidDate) ? convertToNumericMonthAndDayAndYear(new Date(data.estimatedAffiliateNetworkPaidDate), false) + \"*\" : \"N/A\"}\r\n \r\n :\r\n <>\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\r\n if (this.props.admin) {\r\n headers = this.props.aggregateChanged != null && this.props.aggregateChanged ? [\"Date\", \"Brand\", \"Sales Amount\", \"Returns\", \"Estimated Commission\", \"Affiliate Paid Date\", \"Status\", \"Username\"] : this.props.deviceSize === \"sm\" ? [\"Date\", \"Brand\", \"Sales Amount\", \"Returns\", \"Est. Comm.\", \"Pd. Date\", \"Status\"] : [\"Date\", \"Brand\", \"Sales Amount\", \"Returns\", \"Estimated Commission\", \"Affiliate Paid Date\", \"Status\"];\r\n }\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 \"* Estimated Affiliate Network Paid Date is used when affiliate has not provided an actual Paid Date. \\n\\n\",\r\n \"N/A - Brand has never paid on a RockPorch commission so no Estimate is possible. \"],\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\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 !== 6 && 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 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 // --- POST THE CODE BACK AND CLOSE POPUP IF IT EXISTS ---\r\n const searchParams = new URLSearchParams(this.props.location.search);\r\n const code = searchParams.get(\"code\");\r\n\r\n if (code) {\r\n // Send the code to the parent window (if it exists)\r\n const channel = new BroadcastChannel('authCode');\r\n channel.postMessage(code);\r\n channel.close();\r\n window.close();\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 Reports from \"views/Admin/Reports\";\r\nimport BrandCreatorActivity from \"views/Admin/BrandCreatorActivity\";\r\nimport Alarms from \"views/Admin/Alarms\";\r\nimport CreatorClicks from \"views/Admin/CreatorClicksByDateAndHour\";\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 AffiliateDetails from \"views/Admin/AffiliateDetails\";\r\nimport SocialPlatforms from \"views/Admin/SocialPlatforms\";\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=202412202`;\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 \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\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","\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}","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 = 349;","\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":""}