{"version":3,"sources":["components/registration/Registration.module.css","components/events/CreateEvent.module.css","components/profile/ProfileDetail.module.css","components/events/EventDetail.module.css","components/profile/PaymentView.module.css","../../shared/project-info/images/DefaultProfileImg.png","components/feed/FeedListItem.module.css","components/feed/PostView.module.css","components/analytics/ChallengeWorkSpace.module.css","components/analytics/Analytics.module.css","components/chat/ChatBox.module.css","components/challenges/ChallengeCard.module.css","components/profile/UpdateProfileOverlay.module.css","components/challenges/ChallengeDetail.module.css","components/profile/ProfilePersonalInfo.module.css","components/events/FiltersBar.module.css","components/challenges/Challenges.module.css","components/recordWorkout/WorkoutCardDate.module.css","components/groups/GroupDetail.module.css","components/events/Attendee.module.css","components/events/WorkoutCard.module.css","components/profile/DeleteAccount.module.css","components/profile/OrderConfirmationView.module.css","components/feed/CreatePost.module.css","components/profile/ProfileFollowers.module.css","components/events/CustomModal.module.css","components/profile/CountryModal.module.css","components/SearchGooglePlaces.module.css","components/profile/BlockedUser.module.css","components/profile/MembershipOptionView.module.css","components/navigation/NavigationButton.module.css","components/registration/ShirtSizesModal.module.css","components/ReportAndDeleteOverlay.module.css","components/feed/UsersList.module.css","components/SitePreviewCard.module.css","components/feed/EnhancedCard.module.css","components/CustomButton.module.css","components/RWBUserImages.module.css","components/feed/Feed.module.css","components/feed/CreateComment.module.css","components/SearchBar.module.css","components/feed/CommentView.module.css","components/recordWorkout/RecordWorkout.module.css","components/profile/BlockedUsers.module.css","components/Loading.module.css","components/events/PlacesList.module.css","components/events/EventListItem.module.css","components/Header.module.css","components/events/CustomPicker.module.css","components/groups/GroupCard.module.css","components/notifications/NotificationListItem.module.css","components/RadioFormOption.module.css","components/navigation/NavigationColumn.module.css","components/challenges/ChallengeBadges.module.css","react-places-autocomplete/dist/utils.js","components/profile/PasswordUpdate.module.css","components/feed/PhotoView.module.css","components/TextInput.module.css","components/ToggleSwitch.module.css","components/events/Events.module.css","components/events/EventFilters.module.css","components/groups/GroupContainer.module.css","components/profile/MenuButton.module.css","components/recordWorkout/WorkoutLog.module.css","components/profile/EditMyProfile.module.css","components/feed/FormattedPostText.module.css","components/AvatarList.module.css","components/challenges/RankingRow.module.css","components/video/VideoPlayerWithChat.module.css","components/AttendeesAndFollowedUsers.module.css","components/groups/GroupMessages.module.css","components/RadioForm.module.css","components/profile/AddressesList.module.css","../../shared/project-info/images/logo192.png","../../shared/project-info/images/logo512.png","components/TextArea.module.css","components/feed/ShareChallengeBox.module.css","components/feed/CreateCommentBar.module.css","components/groups/SearchGroupsList.module.css","components/groups/SearchSection.module.css","../../shared/project-info/images/favicon.ico","components/feed/CreatePostButton.module.css","components/DetailHeader.module.css","components/events/CreateEventButton.module.css","components/events/EventCreationChoices.module.css","components/groups/Groups.module.css","components/ExpandingText.module.css","components/profile/MyAppSettings.module.css","components/RWBRowButton.module.css","components/login/Login.module.css","../../shared/project-info/images/apple-touch-icon.png","../../shared/project-info/images/opengraphcover.png","components/links/HyperLink.module.css","../../shared/project-info/images/EventCreationExample.png","../../shared/project-info/images/SocialProfileExample.png","../../shared/project-info/images/UserFeedExample.png","components/groups/GroupMembers.module.css","components/groups/GroupMembersList.module.css","components/notifications/Notifications.module.css","components/profile/Profile.module.css","components/challenges/ChallengeLeaderboard.module.css","../../shared/constants/moment-timezone-with-data-10-year-range.js","../../localServer.js","react-places-autocomplete/dist/helpers.js","../../shared/project-info/images/RWBRedShirt.jpg","components/BuildInfo.js","../../shared/project-info/projectConfig.js","../../shared/models/StorageHandler.js","../../shared/constants/ImageConstants.js","../../shared/project-info/images/eventCoverPhotos.js","../../shared/project-info/serviceInfo.js","../../shared/utils/Helpers.js","../../shared/constants/MilitaryStatusSlugs.js","../../shared/models/UserLocation.js","../../shared/models/UserProfile.js","../../shared/models/ClientCredentialsToken.js","../../shared/project-info/paymentConfig.js","../../shared/constants/APIKeys-obfuscated.js","../../shared/constants/URLs.js","../../shared/constants/ErrorMessages.js","../../shared/apis/api.js","../../shared/models/Authentication.js","components/Loading.js","components/PrivateRoute.js","components/svgs/CheckIcon.js","components/svgs/PostOptionIcon.js","components/svgs/InterestedIcon.js","components/svgs/ChevronDownIcon.js","components/svgs/PostIcon.js","components/chat/ChatBox.js","../../shared/constants/analyticsConstants.js","../../shared/constants/newAnalytics.js","../../shared/models/Analytics.js","components/TextArea.js","components/svgs/XIcon.js","components/svgs/GalleryIcon.js","../../shared/project-info/web-project-info/svgs/AppMark.js","components/feed/UsersList.js","components/ImageHandler.js","components/feed/ShareChallengeBox.js","../../shared/utils/ErrorAlert.js","../../shared/apis/opengraph-api-web.js","../../shared/utils/HandleLinkClick.react.js","components/svgs/LinksIcon.js","components/SitePreviewCard.react.js","components/feed/CreatePost.js","components/feed/CreatePostButton.js","components/svgs/LikeIcon.js","components/svgs/AdminIcon.js","../../shared/utils/FeedHelpers.js","components/feed/EnhancedCard.js","../../shared/constants/DateFormats.js","components/links/HyperLink.react.js","components/feed/FormattedPostText.js","components/feed/AggregatePostTitle.js","components/feed/CreateComment.js","../../shared/constants/ChallengeTypes.js","../../shared/utils/ChallengeHelpers.js","../../shared/apis/reportAPI.js","components/ReportAndDeleteOverlay.js","components/feed/ListItemTitle.js","components/feed/PhotoView.js","components/svgs/PinnedPostIcon.js","../../shared/constants/OtherMessages.js","../../shared/utils/StreamHelpers.js","components/feed/AggregateFeedListItem.js","components/feed/FeedList.js","../../shared/constants/AttendanceSlugs.js","components/events/CustomModal.js","../../shared/project-info/eventConfig.js","../../shared/constants/EventFilters.js","../../shared/constants/EventTabs.js","../../shared/utils/EventHelpers.js","components/TextInput.js","components/events/EventLinkInput.js","components/svgs/LocationIcon.js","components/svgs/ClearSearchIcon.js","react-places-autocomplete/dist/PlacesAutocomplete.js","components/SearchGooglePlaces.js","components/svgs/CurrentLocationIcon.js","components/events/PlacesList.js","../../shared/apis/googleAPI.js","components/events/InvitedUsersSearchList.js","components/events/Attendee.js","components/events/ChapterEventUserCard.js","components/ReusableTabs.js","components/ToggleSwitch.js","components/svgs/CalenderIcon.js","components/svgs/ClockIcon.js","components/svgs/ActivityIcon.js","components/events/CreateEvent.js","components/svgs/VirtualEventIcon.js","components/svgs/AttendingIcon.js","../../shared/constants/APIKeys.js","components/GoogleMapView.js","BrowserUtil.js","components/svgs/ChevronRightIcon.js","components/AvatarList.js","components/svgs/ChevronBackIcon.js","components/svgs/ShareIcon.js","components/DetailHeader.js","components/events/WorkoutCard.js","components/challenges/RankingRow.js","components/svgs/DocumentIcon.js","components/video/VideoPlayerWithChat.js","components/events/EventDetail.js","components/svgs/CanceledEventIcon.js","components/AttendeesAndFollowedUsers.js","components/events/EventListItem.js","components/events/EventHost.js","components/svgs/TicketIcon.js","components/Header.js","components/events/EventDetailAttendees.js","components/CustomButton.js","components/events/EventCreationChoices.js","components/events/CreateEventButton.js","components/svgs/SearchIcon.js","components/SearchBar.js","components/events/CustomPicker.js","../../shared/constants/DefaultFilters.js","models/Filters.js","components/events/EventFilters.js","components/events/FiltersBar.js","components/events/MyEvents.js","../../shared/utils/eventURLFormatter.js","components/svgs/ReplyIcon.js","components/feed/CommentView.js","components/feed/CreateCommentBar.js","components/feed/PostView.js","components/recordWorkout/RecordWorkout.js","../../shared/utils/WorkoutValidationHelper.js","../../shared/fitpros-project-info/eventConfig.js","components/events/Events.js","components/feed/AggregateFeedList.js","components/svgs/NotificationIcon.js","components/profile/UpdateProfileOverlay.js","components/feed/Feed.js","../../shared/constants/OnboardingVersions.js","../../shared/utils/OnboardingChecks.js","components/groups/GroupCard.js","components/groups/GroupContainer.js","components/ExpandingText.js","components/svgs/MyProfileIcon.js","components/svgs/EventsIcon.js","components/groups/GroupDetail.js","components/svgs/HandPointerIcon.js","components/groups/GroupMessages.js","components/groups/SearchSection.js","components/groups/SearchGroupsList.js","components/groups/GroupMembersList.js","components/groups/GroupMembers.js","components/groups/Groups.js","components/notifications/NotificationListItem.js","components/notifications/NotificationsList.js","components/notifications/Notifications.js","components/svgs/UploadPhotoIcon.js","components/RWBUserImages.js","components/BlockAndReportOverlay.js","components/profile/ProfileDetail.js","components/svgs/SettingsIcon.js","components/svgs/EditIcon.js","../../shared/constants/Labels.js","components/profile/MyProfileDetail.js","components/RWBRowButton.js","../../shared/project-info/LegalCopy.js","../../shared/project-info/web-project-info/LegalWaiver.js","components/LegalModal.js","components/svgs/PrivacyIcon.js","components/svgs/AccountIcon.js","components/svgs/LogoutIcon.js","components/svgs/KeyIcon.js","components/svgs/TrashIcon.js","components/svgs/EmailIcon.js","components/svgs/BlockIcon.js","components/profile/MyAppSettings.js","components/profile/ProfileFollowers.js","components/svgs/FlagIcon.js","components/profile/RadioButtons.js","../../shared/constants/RadioProps.js","components/profile/MenuButton.js","../../shared/constants/military/ranks.js","components/profile/ExpansionPanel.js","components/profile/EditMyProfile.js","components/RadioForm.js","../../shared/constants/Countries.js","components/profile/CountryModal.js","components/profile/AddressesList.js","components/profile/ScrollableListModal.js","../../shared/apis/melissaAPI.js","../../shared/utils/MelissaHelper.js","../../shared/utils/configFormatter.js","components/ParentModal.react.js","components/profile/ProfilePersonalInfo.js","components/profile/PasswordUpdate.js","components/profile/PrivacySettings.js","components/svgs/DangerIcon.js","components/profile/DeleteAccount.js","components/profile/BlockedUser.js","components/profile/BlockedUsersList.js","components/profile/BlockedUsers.js","components/RadioFormOption.js","components/profile/MembershipOptionView.js","../../shared/project-info/ProfileEditInfoForm.js","components/profile/ProfileExtraInfoUpdate.js","components/profile/Profile.js","../../shared/project-info/svgs-web/AppLogo.svg","components/ApiInfo.js","../../shared/utils/RegisterProfileFlow.js","components/login/Login.js","components/svgs/VerifyEmailIcon.js","components/AlertDialog.js","components/registration/RegisterVerifyEmail.js","components/registration/RegisterPersonalInfo.js","components/registration/RegisterSocialProfile.js","../../shared/project-info/RegisterMilitaryService.js","components/registration/RegisterPrivacyWaiver.js","components/registration/RegisterWorkSpaceAccessCode.js","components/registration/Registration.js","components/home/Home.js","components/svgs/HomeIcon.js","components/svgs/GroupsIcon.js","components/svgs/ChallengeTabIcon.js","components/navigation/NavigationButton.js","components/navigation/NavigationColumn.js","components/challenges/ChallengeCardHeader.js","components/challenges/UnjoinedChallengeCard.js","components/challenges/ChallengeProgressBar.js","components/challenges/JoinedChallengeCard.js","components/challenges/ChallengeDetail.js","components/challenges/ChallengeLeaderboard.js","components/challenges/ChallengeParticipants.js","components/challenges/Challenges.js","../../shared/apis/stripe-api.js","../../shared/constants/ShirtSizeData.js","components/registration/ShirtSizesModal.js","components/profile/PaymentView.js","components/profile/OrderConfirmationView.js","components/recordWorkout/WorkoutCardDate.js","components/recordWorkout/WorkoutLog.js","components/analytics/Analytics.js","components/analytics/WorkSpaceAnalytics.js","components/analytics/ChallengeWorkSpace.js","components/challenges/ChallengeBadges.js","components/navigation/NavigationWrapper.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","Object","defineProperty","value","geocodeByAddress","address","geocoder","window","google","maps","Geocoder","OK","GeocoderStatus","Promise","resolve","reject","geocode","results","status","getLatLng","result","lat","geometry","location","lng","e","geocodeByPlaceId","placeId","a","i","require","define","this","version","default","r","o","c","A","L","n","split","t","s","u","m","charCodeAt","length","f","l","p","Math","round","name","abbrs","offsets","untils","population","M","_set","d","zones","b","toTimeString","match","join","at","abbr","offset","getTimezoneOffset","h","zone","offsetScore","abbrScore","g","Date","E","localeCompare","z","P","hasOwnProperty","push","T","toLowerCase","replace","_","k","B","C","links","toUpperCase","countries","y","dataVersion","O","_f","_a","_tzm","console","error","Array","prototype","slice","call","arguments","utc","apply","isMoment","add","parse","tz","_index","keys","filter","indexOf","moveAmbiguousForward","moveInvalidForward","utcOffset","scoreOffsetAt","abs","_zones","_links","_names","_countries","link","load","zoneExists","didShowError","guess","Intl","DateTimeFormat","resolvedOptions","timeZone","getFullYear","sort","S","names","Zone","unpack","unpackBase60","needsOffset","zonesForCountry","map","N","D","fn","v","_z","G","defaultZone","updateOffset","_isUTC","_d","Error","zoneName","zoneAbbr","local","setDefault","K","momentProperties","toString","url","compose","_len","fns","_key","_len2","args","_key2","forEach","undefined","pick","obj","_len3","props","_key3","reduce","newObj","prop","BuildInfo","Component","render","className","style","display","WebAppVersion","WebAppBuild","projectConfig","slug","metaDescription","primaryColorOne","primaryColorTwo","secondaryColorOne","secondaryColorTwo","secondaryColorThree","defaultCoverPhotoColor","primaryFontBaseSize","secondaryFontBaseSize","fontLeading","useEmphasisFonts","primaryCountryCode","addressFAQ","allowsOtherCountries","internationalSupport","privacyPolicy","termsConditions","cookiePolicy","communityGuidelines","userSupportLink","purchaseableShirt","shirtPreviewTitle","shirtPreviewTagline","shirtPreviewMessage","shirtPreviewMessageNote","getShirtText","purchaseTitle","purchaseConfirmationTitle","purchaseContactEmail","alertTitle","supportEmail","storeKey","prodHost","prodURL","stagingURL","devURL","devAPIURL","stageAPIURL","prodAPIURL","apiVersion","registrationEmailWarning","verificationAccountTitle","emailConfirmationText","emailNotReceivedText","verificationType","verificationCodeLength","registerProfileSteps","screen","path","profileLocationStateOptions","phoneRequested","phoneRequired","serviceCheckTitle","serviceCheckBody","emailAddressMessage","FirstNameLabel","LastNameLabel","allowBlankLastName","ProfileBoxFiller","profileInfoTitle","leaderRoleDisplay","distanceUnits","facebookID","simplifyGroupTypeNames","limitedEmail","melissaVerify","defaultEventImages","localEventTabName","hasPast30Lozenge","prodDeepLink","devDeepLink","orgName","appleId","androidId","hasGroups","hasAnchorChapter","GCMSenderId","hasChallenges","hasPayment","genderRequested","validGenderOptions","label","supportsAnonymousUsers","hasBadge","hasProfileInfo","eventRsvpLabel","eventRsvpHasRegistration","membershipDiscount","eventAttendeeListDownload","hasShareSupport","hasOpenGraphPreviews","hasEventHostSelection","hasWorkspaces","hasInAppAnalytics","inAppAnalyticsLabel","leaderRole","alwaysShowEventButton","limitedNonGroupEventCreation","allowsVirtualEventsOutsideGroups","eventsHaveAttendeeLimit","sessionEndedMessage","hasOktaAuthentication","hideRemovedEventPosts","asyncLocalStorage","setItem","key","then","localStorage","getItem","removeItem","clear","log","webImageFormats","eventCoverPhotos","subOptions","primaryOptions","getRadioIndexForValue","array","fallback","findIndex","isNullOrEmpty","str","trim","validateEmail","email","test","validURL","isPhoneNumber","phoneNumber","isObject","val","isArray","generateBody","data","TypeError","formBody","property","encodedKey","encodeURIComponent","encodedValue","jsonOrThrow","response","ok","json","async","jsonOrThrowWithMessage","errorMessage","getCurrentTimeUTC","currentTime","moment","offsetHours","subtract","getOffsetTime","time","minuteDifference","clone","howLongAgo","postTime","currentTimeUTC","originalMessage","from","concat","diff","displayFullAddress","street","city","state","zip","country","displayedAddress","addressComponents","extractAddressComponent","component","address_data","datum","types","includes","debounce","timeoutId","clearTimeout","setTimeout","defaultUserPhoto","DefaultProfileImg","defaultEventPhoto","category","localizeDate","timeZoneID","date","adjustedDate","validTaggedUsers","taggedUsers","text","validIDs","user","first_name","last_name","id","capitalizeFirstLetter","word","getPercentage","maximum","percentage","putUserFirst","users","joined","userProf","userProfile","getUserProfile","currentUser","find","hasOptions","options","httpsNext","isMilitaryUser","option","formatStatusTitle","service_type","title","getHyperlinks","hyperlinks","Set","cleanLinkID","isInternalURL","urlObj","URL","origin","openGraphFallbackPreview","platform","isWeb","description","image","slugs","item","userLocation","locale","long","_setUserLocation","saveToUserLocation","AsyncStorage","JSON","stringify","loadUserLocation","getUserLocation","deleteUserLocation","constructor","newsletter_subscription","anchor_chapter","anonymous_profile","combat_deployment_operations","combat_zone","do_not_send_any_email","eagle_leader","eagle_leader_title","email_verified","gender","gender_description","has_disability","legal_waiver_signed","military_branch","military_family_member","military_status","military_specialty","military_rank","military_ets","phone","preferred_chapter","profile_completed","profile_photo_url","cover_photo_url","profile_bio","shipping_location","shirt_size","registration_started_via_app","salesforce_contact_id","service_info","extra_info","latest_purchase","workspace","isOperator","init","dataLoaded","_loadUserProfile","hasProvidedEmail","Boolean","isEmailVerified","hasCompletedRegistration","setUserId","saveToUserProfile","locationData","address_state","catch","_setUserProfile","permissions","hasPermissions","formatPayload","patch","assign","payload","address_type","zipcode","street_2","address_2","MILITARY_STATUSES","civilian","veteran","shipping_address","shipping_country","shipping_state","shipping_city","shipping_zip","shipping_street","deleteUserProfile","clientCredentialsToken","accessToken","getAccessToken","setAccessToken","paymentConfig","a0_0xbfe7","_0x249ac9","_0xbfe791","_0x1206d7","_0x1e1376","a0_0x1e13","_0x358d16","_0x2540a9","Function","_0x1c434a","_0x4537c2","_0x24347f","_0x366940","String","_0x4880df","_0x1edd99","_0xc2ee2b","_0x50dc0d","_0x135ac8","_0x163c47","_0x281524","_0x414bf9","_0x414c65","_0x468b40","_0x10f4b8","_0x494434","_0x26f398","_0x14368c","_0xeae330","_0x47368b","atob","decodeURIComponent","_0x302f4a","stripeKey","STRIPE_KEY","MELISSA_ID","GOOGLE_MAP_API_KEY","openGraphKey","OPENGRAPH_API_KEY","DOMAIN","SITE","lostpassword","deepLinkPrefix","STREAM_ERRORS","ALREADY_REACTED","REACTION_NOT_FOUND","FEED_RETRIEVAL","USER_FEED","EVENT_FEED","POST_DELETION","ALREADY_LIKED","ALREADY_UNLIKED","UNLIKING","LIKING","POST_RETRIEVAL","MORE_COMMENTS","REFRESHING_POST","FOLLOWERS_LIST","FOLLOWING_LIST","UNFOLLOWING_USER","FOLLOWING_USER","RETRIEVING_NOTIFICATIONS","GROUP_FEED","EMPTY_POST","UPLOAD_POST","UPDATE_POST","EMPTY_COMMENT","UPDATE_COMMENT","UPLOAD_COMMENT","POST_IMAGE","REPORT_ERROR","GET_VERSION_ERROR","USER_SEARCH_ERROR","GENERIC_ERROR","UPLOADING_IMAGE_ERROR","REPORT_SENT","GROUP_ERRORS","LOCATION_ERRORS","PERMISSION","NO_LOCATION","GENERAL","NOT_FOUND","EVENT_ERRORS","IMAGE_UPLOAD","UPDATING_ERROR","CREATING_ERROR","REST_ATTENDEES","ATTENDEE_RETRIES","ATTENDESS","INTERESTED_AND_GOING_USERS","SOME_INTERESTED_AND_GOING","FETCH_ATTENDANCE","REMOVING","ACCOUNT_NOT_SYNCED","CANCELED_AND_REMOVED","CHALLENGE_ERORRS","rwbApi","username","password","fetch","method","headers","Accept","body","oauthResponse","authentication","setAuthentication","success","refreshToken","refresh_token","access_token","refresh","Accepts","Authorization","getUser","grant_type","fetchAuthToken","getAuthenticatedUser","createUser","user_token","identity_token","createUserFromOneAll","code","verification_code","access_code","urlParams","forceRefresh","event_id","web_version","mobile_version","eventid","warn","userData","page","token","device_id","fcm_token","streamID","err","eventID","input","chapterID","groupID","target_id","updatedData","media_filename","toISOString","reportedID","reporterID","groupId","role","challengeId","participants","challengeIds","attendees","workoutDataList","profileId","workoutId","streamId","userId","getMonth","activityID","identifier","workspace_id","blob","getSpecificPost","userID","getFollows","relation","getFollowSummary","getFollowingRelationships","source","target","getNotifications","getUnseenNotifications","getReactions","creatorID","kind","postReaction","message","deleteReaction","commentID","updateReaction","getEventReactions","postEventReaction","deleteEventReaction","updatePost","reportUserPost","reportedStreamID","reporterUserID","reportEvent","reportEventPost","reportUserComment","reactionID","reportGroup","reportGroupPost","joinGroup","leaveGroup","retrieveGroups","type","nearbyData","chapter_id","getGroup","getGroupRelation","searchGroups","locationObj","retrieveGroupMembers","expires","loaded","okta","_fetchAccessToken","_loadAuthentication","isAfter","refreshAuthOkta","access","refreshAuth","getAccessTokenSync","_setTokensAndExpires","deleteAuthentication","okta_config","parsedOktaValue","newOktaObj","issuer","discoveryUri","clientId","redirectUri","postLogoutRedirectUri","authClient","OktaAuth","closeSession","signOut","revokeRefreshToken","revokeAccessToken","expires_in","format","credentials","Loading","size","color","loading","right","transparent","places","footerLoading","notFullHeight","styles","footerContainer","notFullLoadingContainer","loadingContainer","rightContainer","none","PrivateRoute","rest","isAuth","setisAuth","useState","isLoading","setisLoading","history","useHistory","useEffect","to","pathname","referrer","href","CheckIcon","viewBox","width","height","data-name","fill","tintColor","defaultProps","PostOptionIcon","InterestedIcon","ChevronDownIcon","PostIcon","Message","renderTextWithLinks","urlPattern","part","index","rel","profileImage","isRight","imageSource","messageContainer","leftJustify","src","alt","textContainer","messageText","ChatBox","super","setupStateChangeListeners","chatRoom","onConnecting","addListener","setState","chatState","onConnected","onDisconnected","onMessageReceived","handleNewMessage","initializeLiveChat","ChatRoom","regionOrUrl","tokenProvider","getChatToken","connect","prevState","messages","content","sender","attributes","sendMessage","inputText","request","SendMessageRequest","toggleMinimize","isMinimized","renderMinimizedView","flexContainer","chatStateContainer","onClick","toggleButton","renderMessageItem","getChatLogsFromUrl","idx","parsedData","line","parts","newMessage","componentDidMount","chatLogUrl","componentWillUnmount","disconnect","chatContainer","flipChevron","messagesList","inputContainer","onChange","placeholder","sendButton","sendButtonIcon","SIGNING_UP","CREATE_ACCOUNT","VERIFY_EMAIL","PERSONAL_INFO","SOCIAL_PROFILE","MILTARY_SERVICE","COMPLETE_REGISTRATION","GET_RED_SHIRT","PAY_FOR_SHIRT","ORDER_CONFIRMATION","NAVIGATING_THE_APP","ACCESS_FEED","ACCESS_EVENTS","ACCESS_NOTIFICATIONS","ACCESS_MY_PROFILE","MANAGING_PROFILE_AND_SETTINGS","UPDATE_COVER_PHOTO","UPDATE_PROFILE_PHOTO","EDIT_BUTTON","ACCESS_FOLLOWERS","ACCESS_FOLLOWING","UPDATE_PROFILE","UPDATE_MILITARY_SERVICE","UPDATE_CHAPTER_PREFERENCES","ACCESS_APP_SETTINGS","UPDATE_PERSONAL_INFORMATION","UPDATE_PASSWORD","FORGOT_PASSWORD","UPDATE_PRIVACY_SETTINGS","LOGIN","LOGOUT","SEARCHING_FOR_AND_PARTICIPATING_IN_EVENTS","EVENT_SEARCH","ACCESS_MY_EVENTS","ACCESS_FILTERS","TOGGLE_RUN_WALK","TOGGLE_HIKE_RUCK","TOGGLE_SOCIAL","TOGGLE_HIDE_VIRTUAL","DISTANCE","DATE","HOST","SORT_BY","ACCESS_EVENT_DETAILS","UPCOMING_EVENTS","PAST_EVENTS","INTERESTED","GOING","CHECKED_IN","CALENDAR","MAP","ADDRESS","SHARE","ATTENDEES","CREATE_POST","REACT_POST","CREATING_AND_MANAGING_EVENTS","START_EVENT_CREATION","CHOOSE_CHAPTER_EVENT","CHOOSE_MEMBER_EVENT","CREATE_EVENT","CANCEL_EVENT","UPDATE_EVENT","NOTIFICATIONS","ACCESS_NOTIFICATION","NOTIFICATIONS_LIKE","FEED","SEARCH_FOR_PEOPLE","FOLLOW","UNFOLLOW","logVerifyEmail","SI","logAccessFeed","NA","logAccessEvents","logAccessMyProfile","logAccessFollowers","logAccessFollowing","logUpdateMilitaryService","logForgotPassword","logAccessEventDetails","SE","logAccessUpcomingEvents","logAccessPastEvents","logAttendees","logNotificationsLike","NO","logFollow","F","logUnfollow","TextArea","rows","handleChange","bind","event","oldRows","newRows","scrollHeight","container","textArea","lineHeight","maxLength","maxCharacters","autoFocus","characterCount","XIcon","GalleryIcon","AppMark","propTypes","PropTypes","oneOfType","string","object","number","UsersList","usersSuggestions","loadingUsers","onSelect","search","suggestion","suggestionContainer","profileImg","inlineContainer","leader","eagleLeaderText","imageHandler","file","reader","FileReader","readAsArrayBuffer","onload","media_intent","imgBlob","Blob","getMediaUploadURL","mediaURL","media_upload_url","putMediaUpload","imageURL","ShareChallengeBox","React","eventName","chapterName","eventStartTime","miles","steps","hours","minutes","seconds","eventNameTitle","detailsContainer","parseFloat","parseInt","errorAlert","alert","openGraphResponse","siteURL","openGraphData","handleLinkClick","open","LinksIcon","SitePreviewCard","setData","onClose","cancelable","storePreviewData","graphData","setIsLoading","newLink","fallbackData","debouncedOpenGraph","opengraphAPI","timestamp","openGraph","hybridGraph","htmlInferred","imageSecureUrl","image_guess","images","setOpenGraphData","cancel","Card","cardContainer","openLink","evt","stopPropagation","preventDefault","image_url","CardMedia","cardCover","fallbackIcon","CardContent","cardContent","siteTitle","siteDescription","siteLink","IconButton","cancelButton","CreatePost","challengeID","mergeNewPost","closeModalHandler","tagged","workOutId","postText","setPostText","postImage","setPostImage","postImageName","setPostImageName","postImageFile","setPostImageFile","postTagged","setPostTagged","isLoadingImage","setIsLoadingImage","searchingUsers","setSearchingUsers","searchingLocation","setSearchingLocation","userInput","setUserInput","isLoadingUsers","setIsLoadingUsers","userResults","setUserResults","tallImg","setTallImg","postID","setPostID","previewData","canceledLinkView","setCanceledLinkView","setLinks","classes","makeStyles","root","flexGrow","toolbar","justifyContent","backgroundColor","useStyles","searchUser","handlePostMade","getUserFeed","putFeed","open_graph","createEventPost","createGroupPost","createChallengePost","updateFeed","Paper","Toolbar","menuButton","media_url","duration","workout","event_name","chapter_name","event_start_time","charAt","usersListContainer","fullPostText","handleSelectedUser","Grid","spacing","linkPreviewContainer","xs","imgPreviewContainer","modalXContainer","feedListItemStyles","tallContainer","postImageContainer","tallImage","onLoad","img","offsetWidth","offsetHeight","attachPhotoContainer","attachPhotoButton","attachPhotoText","accept","WEB_IMAGE_FORMATS","hideDefaultUpload","files","readAsDataURL","onloadstart","onloadend","CreatePostButton","createPostModal","setCreatePostModal","openCloseModalHandler","floatingBtnContainer","addIcon","LikeIcon","stroke","strokeColor","strokeMiterlimit","AdminIcon","filterRemovedEvents","posts","post","activity","activities","foreign_id","EnhancedCard","start","end","photo_url","time_zone_id","group_name","is_all_day","is_virtual","startTime","endTime","imageContainer","cardImage","cardInfoContainer","eventTitle","substring","groupName","dateInfo","HyperLink","postLink","FormattedPostText","linkableUsers","clickable","expectedNames","namesAreLinks","renderUsernameFn","renderLinkFn","elements","lastIdx","tokens","taggedName","getFormattedPostElements","formattedName","fullName","AggregatePostTitle","getAllUsers","sameVerb","verbs","verb","every","goingOrInterested","formatTitleMessage","formatUsers","CreateComment","commentText","posterText","atLocation","userSearchLoading","commentLinks","apiUserSearch","handleTextInput","updateOptions","checkIncludeOpenGraph","submitComment","poster","validatedTaggedUsers","verbEvent","postGraphData","postContainer","namePostContainer","textImageContainer","isModalOpen","withStyles","CHALLENGE_TYPES","challengeParams","tab","today","yesterday","isUpcomingChallenge","challengeStartDate","trimProgress","progress","decimalPlace","toFixed","earnedBadge","goal","howLongUntil","hoursMinutesSecondsFromMinutes","floor","getChallengeStatusText","challengeEndDate","startOf","isSame","challengeEndsToday","isBefore","isChallengeOver","reportAPI","userPost","eventPost","userComment","group","groupPost","ReportAndDeleteOverlay","handleClickOutside","domNode","ReactDOM","findDOMNode","contains","overlayVisible","report","confirm","reporter","reportCommentPost","posterID","delete","deletePost","edit","createPostVisible","closeComment","refreshReactions","document","addEventListener","removeEventListener","ref","wrapperRef","position","eventStatusPost","optionsContainer","canDelete","blockPost","editContainer","posterTagged","posterTime","linkItem","ListItemTitle","navigating","challenge","PhotoView","post_image","onModalClose","liked","likeAmount","onLikeClicked","imgModalContainer","likeContainer","likeIcon","PinnedPostIcon","WORKOUT_WARNINGS","deleteEventPost","deleteChallengePost","deleteGroupPost","deleteUserPost","AggregateFeedListItem","displayTitle","actor","challenge_id","group_id","deleted","updateLikeStatus","action","handleLikePost","changingLikeStatus","reactionKind","postType","eventPostLike","userPostLike","onImgLoad","finally","determinePostRoute","navigationState","is_pinned","commentAmount","actorID","reactable","own_reactions","like","reaction_counts","comment","userActivityContainer","imageAndTextContainer","userImageContainer","isSponsor","is_sponsor_admin","sponsorAdminIcon","edited","alignSelf","pinnedContainer","pinnedPostText","reactionContainer","commentsContainer","withRouter","FeedList","userFeed","singleFeed","attendance_slugs","modal","alignItems","paper","boxShadow","padding","maxHeight","overflowY","isOpen","items","selectedValue","modalHandler","labelContainer","Modal","aria-labelledby","closeAfterTransition","BackdropComponent","Backdrop","BackdropProps","timeout","Fade","in","xIconContainer","h2","selected","eventConfig","group_event_options","featured_lozenge_count","default_event_tab","VIRTUAL_TIME_OPTIONS","DISTANCE_OPTIONS","DATE_OPTIONS","GROUP_OPTIONS","VIRTUAL_GROUP_OPTIONS","SORT_OPTIONS","GROUP_EVENT_OPTIONS","VIRTUAL_EVENT_OPTIONS","virtual_event_options","GROUP_EVENT_OPTIONS_SORTED","fromEntries","entries","FEATURED_LOZENGE_COUNT","EVENT_TAB_TYPES","virtual","my","GROUP_EVENT_TAB_TYPES","past","EVENT_NAV_ELEMENTS","MY_EVENT_TYPES","hosting","upcoming","GROUP_EVENT_NAV_ELEMENTS","PAST_EVENT_TYPES","CREATE_EVENT_NAV_ELEMENTS","generateInitialNextURL","TextInput","inputRef","createRef","onValueChange","onEnter","reducedMargin","autoFillLabel","min","onFocus","textInput","required","onKeyDown","autoComplete","current","blur","htmlFor","EventLinkInput","onChangeText","LocationIcon","ClearSearchIcon","_extends","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_propTypes2","_lodash2","_helpers","__esModule","PlacesAutocomplete","_React$Component","instance","_classCallCheck","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","autocompleteService","AutocompleteService","autocompleteOK","PlacesServiceStatus","autocompleteZeroResults","ZERO_RESULTS","ready","autocompleteCallback","predictions","highlightFirstSuggestion","suggestions","place_id","active","formattedSuggestion","structured_formatting","mainText","main_text","secondaryText","secondary_text","matchedSubstrings","matched_substrings","terms","onError","clearSuggestions","fetchPredictions","searchOptions","addressPromise","getPlacePredictions","establishmentPromise","all","addressPredictions","establishmentPredictions","clearActive","handleSelect","getActiveSuggestion","selectActiveAtIndex","activeName","setActiveAtIndex","selectUserInputValue","userInputValue","handleEnterKey","activeSuggestion","handleDownKey","handleUpKey","handleInputKeyDown","handleInputChange","shouldFetchSuggestions","debouncedFetchPredictions","handleInputOnBlur","mousedownOnSuggestion","getActiveSuggestionId","getIsExpanded","getInputProps","defaultInputProps","disabled","onBlur","getSuggestionItemProps","handleSuggestionMouseEnter","handleSuggestionClick","onMouseEnter","onMouseLeave","handleSuggestionMouseLeave","onMouseDown","handleSuggestionMouseDown","onMouseUp","handleSuggestionMouseUp","onTouchStart","handleSuggestionTouchStart","onTouchEnd","googleCallbackName","subClass","superClass","create","setPrototypeOf","_inherits","children","func","isRequired","shape","bounds","componentRestrictions","radius","bool","_clearSuggestions","SearchGooglePlaces","shouldComponentUpdate","nextProps","isDefaultSearch","onClearSearch","getSuggestions","displayIcon","handleError","persistentClear","clearPlaceholder","noLeftRadius","countryRestriction","icon","searchBar","clearSearch","hideClear","iconRight","CurrentLocationIcon","PlacesList","locationSuggestions","onCurrentLocationSelect","locationError","currentLocationText","googleAPI","reverseGeocode","latitude","longitude","autocomplete","sessionToken","timezone","timestamp_string","InvitedUsersSearchList","onInviteUserHandler","invitedUsersItem","Attendee","sponsorAdmin","imgContainer","adminIconContainer","ChapterEventUserCard","userDetails","setHostUserId","setUserInputValue","usersSearchList","setUserSearchList","isHostSelector","setIsHostSelector","hostUserData","setHostUserData","debouncedSearchUsers","useCallback","chapterEventUserType","chapterEventUserCard","hostUsersInput","hostUsersList","invitedUsersList","onPickHostClick","textTransform","button","iconLabelWrapper","flexDirection","fontFamily","fontSize","letterSpacing","iconLabelWrapperSelected","tabs","borderBottom","caTab","borderRight","indicator","border","borderColor","ReusableTabs","values","onChangeHandler","Tabs","variant","Tab","wrapper","ToggleSwitch","desc","greenBackground","switch","checked","slider","CalenderIcon","ClockIcon","ActivityIcon","EVENT_STATUS","CreateEvent","utcStartTime","utcEndTime","utcDate","closeModalHandlers","setCreateEventChoices","groupType","selectedTab","eventData","refreshEvents","isAdmin","isVirtual","virtualCategory","eventCategories","eventId","setEventId","hostUserId","host","setAddress","addressError","setAddressError","setCity","setZip","addressState","setAddressState","setCountry","setLatitude","setLongitude","setEventTitle","eventTitleError","setEventTitleError","isAllDayEvent","setIsAllDayEvent","setDate","setStartTime","startTimeError","setStartTimeError","setEndTime","endTimeError","setEndTimeError","locationSearchInput","setLocationSearchInput","setLocationSuggestions","setLocationError","eventImage","setEventImage","eventImageFile","setEventImageFile","linksClicked","setLinksClicked","linkText1","setLinkText1","linkURL1","setLinkURL1","linkText1Error","setLinkText1Error","linkURL1Error","setLinkURL1Error","linkText2","setLinkText2","linkURL2","setLinkURL2","linkText2Error","setLinkText2Error","linkURL2Error","setLinkURL2Error","eventDescription","setEventDescription","eventDescriptionError","setEventDescriptionError","invitedUsersInputValue","setInvitedUsersInputValue","invitedUsersSearchList","setInvitedUsersSearchList","invitedUsersNames","setInvitedUsersName","invitedUsersIDs","setInvitedUsersIDs","eventActivityModalIsOpen","setEventActivityModalIsOpen","eventActivityModalSelectedValue","setEventActivityModalSelectedValue","eventActivityModalSelectedValueError","setEventActivityModalSelectedValueError","activeTab","setActiveTab","registrationLink","setRegistrationLink","registration_url","maxAttendees","setMaxAttendees","registrationLinkError","setRegistrationLinkError","maxAttendeesError","setMaxAttendeesError","eventDateError","setEventDateError","virtualEventCategory","setVirtualEventCategory","virtual_event_category","marginRight","fontWeight","handleTimeDateChange","momentDate","toDate","momentTime","mDateFormatted","mTimeFormatted","convertToUTC","hasErrors","hasError","CHAR_LIMIT_WARNING_LINK","INVALID_URL_WARNING","MISSING_FIELD","MAX_ATTENDEES_OFFSITE_REGISTRATION","momentEndTime","momentStartTime","isSameOrBefore","timeZoneId","timeZoneName","dateString","eventEndTime","allDayTimes","startOfDay","endOfDay","endOf","getAllDayEventTimes","creator","chapter_hosted","time_zone_name","max_attendees","imageData","uploadEvent","putEvent","postEvent","getSuggestionsHandler","getSuggestionsDebounce","selectLocationHandler","address_components","long_name","short_name","latLng","handleGoogleResponse","clearEvents","search_props","scrollToTheBottom","getElementById","scrollTop","hasLocation","titleContainer","Button","convertedDate","convertedStartTime","eventDateTime","unix","userTimeZoneID","userTimeZoneName","contentScroll","titleInput","eventCreationFields","fullInlineContainer","placeholderText","minDate","allDayEventContainer","disabledContainer","showTimeSelect","showTimeSelectOnly","timeIntervals","timeCaption","dateFormat","endTimePicker","endTimeIcon","attendeeInput","marginTop","locationItem","locationSearchInputContainer","locationPlacesList","navigator","geolocation","getCurrentPosition","coords","latlng","addressFromLatLng","formatted_address","linksContainer","descriptionTextArea","textAlign","imgPreview","inviteUsersTextArea","inviteUser","inviteSelectedUser","removedUser","leftUsers","removeInvitedUserHandler","VirtualEventIcon","AttendingIcon","mapStyles","maxWidth","marginBottom","GoogleMapView","zoom","initialCenter","GoogleApiWrapper","apiKey","hasReachedBottom","el","getBoundingClientRect","bottom","innerHeight","ChevronRightIcon","AvatarList","avatars","total_count","containerStyle","attendeesContainer","isNaN","attendeesCount","attendeesCountIcon","ChevronBackIcon","ShareIcon","DetailHeader","imageAlt","primaryImg","backupImg","goBack","copyClick","copyMessage","coverImgContainer","navigation","edge","clipboard","WorkoutCard","isCurrentUser","RankingRow","place","metric","ignoreEmphasis","leftContainer","profilePhoto","formatMetric","DocumentIcon","VideoPlayerWithChat","videoPlayerContainer","controls","videoPlayer","onPlay","chatBoxContainer","chatBox","EventDetail","useParams","attendanceStatus","setAttendanceStatus","totalAttendees","setTotalAttendees","setTotalCount","setLoading","isLoadingMore","setIsLoadingMore","retrievedLastPost","setRetrievedLastPost","setCopyMessage","setEventData","isUpdate","setIsUpdate","eventFeed","setEventFeed","userDataAttendance","setUserDataAttendance","mapShown","setMapShown","isRemoved","setIsRemoved","optionsOverlayVisible","setOptionsOverlayVisible","workoutState","setWorkoutState","workoutRecorded","requiredUnit","setRequiredUnit","setChallengeEndDate","setChallengeStartDate","challengeName","setChallengeName","rank","setRank","setProgress","useLocation","isVirtualEvent","setIsVirtualEvent","utcStartDateTime","setutcStartDateTime","utcEndDateTime","setutcEndDateTime","isEventTodayOrAfter","setEventTodayOrAfter","joinLiveVirtualEventLink","setJoinLiveVirtualEventLink","recordedSessionLink","setRecordedSessionLink","chatFileLink","setChatFileLink","recordedFileLink","setRecordedFileLink","virtualEventJoinable","setIsVirtualEventJoinable","isEventFull","setIsEventFull","csvData","setCSVData","csvBtnRef","useRef","isHostOrCreator","loadEventDetails","getAttendanceStatus","getFeed","attempt","getAllAttendees","getAttendees","loadMorePosts","lastPost","getEventFeed","trackScrolling","loadWorkout","loadChallengeAndRank","eventStartDate","eventEndDate","adjustedEventStartDate","adjustedEventEndDate","isBetween","isVirtualEventJoinable","isSameOrAfter","getJoinLiveVirtualEventLink","getRecordedSessionLink","getChatFileLink","getRecordedFileLink","getFirstZoomLink","watchRecordedLinkElement","getWorkout","LOADING_WORKOUT","loadChallenge","getChallenge","loadRank","getLeaderboardRank","required_unit","end_date","start_date","score","getAllMobileAttendees","mergedAttendees","totalCount","eventAttendees","checked_in","going","interested","count","mergeAttendees","getMobileAttendanceStatus","getMobileEvent","is_removed","res","currentFeed","newPost","deleteAttendanceStatus","prevAttendance","filteredAttendees","attendee","updateMobileAttendanceStatus","updateAttendanceStatus","ATTENDANCE_SLUGS","eventStatusHandler","setInitialMobileAttendanceStatus","setInitialAttendanceStatus","imgAlt","eventFrom","urlBase","writeText","contentContainer","eventNameAndReportContainer","eventNameAndChapterContainer","chapter","calendarContainer","tomorrow","getDisplayDate","sessionEndedContainer","eventHostContainer","hostProfileImg","hostDetails","hostTitle","locationContainer","mapContainer","challengeInfoContainer","flex","canceledEventContainer","removedEventContainer","removeEvent","eventStatus","statusButton","patchEvent","updatedEventData","updateButton","getAttendeeListButton","getAllMobileAttendeesCsv","click","attendanceStatusLoading","asyncOnClick","filename","buttonsContainerCheckedIn","statusButtonClicked","aria-disabled","buttonsContainer","goingButton","eventLinks","isChapterEvent","CanceledEventIcon","AttendeesAndFollowedUsers","followingAttendees","imagesContainer","imageFirst","imageNotFirst","displayAttendees","followingAttendeesContainer","displayFollowingNames","EventListItem","loadAttendees","attendees_count","h1Class","dateContainer","margin","infoContainer","canceledEventWrapper","canceledEvent","EventHost","TicketIcon","Header","subtitle","onBack","noBottomPadding","lessHeight","leftAlign","headerContainer","lessHeightContainer","headerTextContainer","noRightTextPadding","leftAlignText","borderRadius","paddingLeft","paddingRight","eventDate","eventHost","setselectedValue","goingAttendees","setGoingAttendees","interestedAttendees","setInterestedAttendees","checkedInAttendees","setCheckedInAttendees","setfilteredAttendees","checkedInURL","setCheckedInURL","goingURL","setGoingURL","interestedURL","setInterestedURL","filterAttendees","loadMore","nextURL","list","loadNextURL","next","justify","CustomButton","buttonStyling","buttonStyle","primary","primaryDisabled","secondary","tertiary","disabledLink","customStyles","EventCreationChoices","createEventModal","setCreateEventModal","setIsChapterEvent","openCreateEventHandler","buttonWrapper","CreateEventButton","createEventChoices","SearchIcon","SearchBar","onSubmit","noRightRadius","searching","searchType","onKeyPress","CustomPicker","pickerHanlder","invisible","DEFAULT_LOCAL_OPTIONS","DEFAULT_VIRTUAL_OPTIONS","filters","hasRetrieved","eventDistance","sortBy","eventCategory","eventGroupOption","eventFilterNavTab","virtualSubtype","virtualEventDate","virtualSortBy","virtualEventGroupOption","virtualTime","_retrieveFilters","storedFilters","setFilter","getFilters","previousFilters","assignedFilters","newFilters","currentFilters","deleteFilters","resetLocalFilters","resetVirtualFilters","resetGroupFilters","FILTER_NAV_TABS_KEYS","left","transform","reset","onCloseFilters","distanceSliderSelectedValue","setdistanceSliderSelectedValue","opt","datePickerSelectedValue","setdatePickerSelectedValue","datePickerIsOpen","setdatePickerIsOpen","sortPickerSelectedValue","setsortPickerSelectedValue","sortPickerIsOpen","setsortPickerIsOpen","activityModalSelectedValue","setactivityModalSelectedValue","activityModalIsOpen","setactivityModalIsOpen","virtualSubTypeSelectedValue","setVirtualSubTypeSelectedValue","virtualSubTypeIsOpen","setVirtualSubTypeIsOpen","activeFilterTab","setActiveFilterTab","activeGroupOption","setActiveGroupOption","activeGroupOptionIsOpen","setActiveGroupOptionIsOpen","activeVirtualGroupOption","setActiveVirtualGroupOption","activeVirtualGroupOptionIsOpen","setActiveVirtualGroupOptionIsOpen","virtualTimeValue","setVirtualTimeValue","virtualTimeIsOpen","setVirtualTimeIsOpen","handleAnalytics","isVirtualTab","eventTypes","Typography","distanceLabel","Slider","step","valueLabelDisplay","marks","max","newValue","buttonContainer","Lozenge","filterLozenges","singleContainer","FiltersBar","activeMyEventsType","onFilterMyEvents","activeGroupEventActivity","changeGroupEventActivity","activePastEventType","onChangeActivePastEventType","openEventFilters","setopenEventFilters","filterCounter","setfilterCounter","filterOption","setFilterOption","kCategoryArray","filterCounterHandler","eventFilterHandler","isSubmit","filterLogType","filterVirtualEvents","national","counter","filtersContainer","lozengeIcon","filterEvents","LIST_TYPES","MyActivitiesListView","handleLoadMore","setVisibleTab","visibleList","getEvents","getUserHostedEvents","hostingPage","reloadHostingCacheUntilPage","hostingEvents","getMobileEvents","total_number_pages","total_number_posts","mounted","total_hosting_pages","filteredEvents","noResultsFoundHosting","stopFetchingHosting","loadingMoreHosting","getUserEvents","listType","upcomingPage","reloadUpcomingCacheUntilPage","pastPage","reloadPastCacheUntilPage","upcomingEvents","pastEvents","total_upcoming_pages","noResultsFoundUpcoming","stopFetchingUpcoming","loadingMoreUpcoming","total_past_pages","noResultsFoundPast","stopFetchingPast","loadingMorePast","noResultsFound","eagleLeaderIsViewing","alertLimitUsersDisplayedShowed","now","refreshPaging","alertLimitUsersDisplayed","pageParams","sortParams","newState","updateEvent","getEvent","newEvent","isEventInPast","events","objectList","getIndexFromID","emptyContainer","eventURLFormatter","localSearchingGroups","dateNowString","distanceSliderValue","distanceSliderHandler","dateFilter","timeSlug","days","endDate","startDate","generateFilteredTime","ReplyIcon","CommentView","deleteComment","handleCommentDeletion","commentContainer","userCommentContainer","reportDeleteContainer","CreateCommentBar","createCommentModal","setCreateCommentModal","contHolder","commentInput","SeePreviousComments","refreshing","allCommentsLoaded","previousCommentsContainer","displayNone","previousCommentsText","PostView","initializeScreen","loadingPoster","workoutEventName","newComment","comments","reactions","created_at","comment_id","user_id","commentsRef","scrollIntoView","block","behavior","loadMoreReactions","oldestCommentID","newComments","mergedComments","handleLikeClicked","handleEventLike","handleUserLike","previousScreen","imageFocused","backIcon","selectable","userPostContainer","comm","RecordWorkout","setMiles","milesErrorText","setMilesErrorText","stepsErrorText","setStepsErrorText","timeErrorText","setTimeErrorText","setSteps","setHours","setMinutes","setSeconds","workOutDate","handleBack","submitHandler","miles_error","steps_error","time_error","workoutEntryDate","workoutEntryDate_error","isWorkoutValid","entry_date","putWorkout","rootContainer","Number","stepsInput","timeInputsContainer","inputMinutes","submitButtonWrapper","SEARCHBAR_NAME_PLACEHOLDER","Events","retrievedLastEvent","fetchEvents","hanldeLocationError","loadingMore","stopFetching","setIsAdmin","checkIfAdmin","isGroupAdmin","getEventsCall","event_ids","getAllFollowedAttendees","followingAttendeesResult","followingAttendeesObjs","singleEvent","eventAttendeesObj","addFollowAttendeesToEvents","server_error_text","j","selectCurrentLocationHandler","localeString","extractLocale","submitSearchEvents","handleEventTypeChange","selectedEventType","activeGroupEventType","toggleGroupEventLozenge","changeActivePastEventType","yOffset","isVirtualInitial","userLocationData","groupLat","groupLong","preferredChapterEvent","showLocationSearch","createVisible","chapterEventCreation","eventCreationTypeVisible","myEventsVisible","collapsedHeader","params","queryString","keyValArray","stringPair","paramsObj","pair","urlToParamsObj","setFilters","nonPaddingContainer","MyEvents","exact","searchContainer","eventListContainer","joinedGrouped","isVisible","isCreateEventButtonVisible","joinedGroup","AggregateFeedList","pinnedPost","aggregateFeedContainter","isPostVisible","NotificationTabIcon","notification","filledIcon","pJSON","Feed","getPinnedPost","getTimeline","timeline","getTimelineFeed","searchUsers","usersList","searchUserHandler","updateProfile","updateAppVersion","updateProfileVisible","missingSections","personalComplete","militaryComplete","culturally_and_linguistically_diverse","privacyComplete","getMissingInfoSections","unseenNotifications","intervalId","incompleteSections","newAccount","savedAppVersion","setInterval","clearInterval","notificationsButton","NotificationIcon","notificationIcon","emptyListText","GroupCard","handlePress","onDetailOpen","searchPressed","horizontal","favorites","containerHorizontal","photo","favoritesPhoto","textContainerSearch","GroupContainer","isFavorites","handleHorizontalScroll","scrollContainerRef","scrollTo","top","scrollLeft","deltaY","behaviour","determineEmptyMessage","favoritesContainer","spinnerContainer","scrollContainer","onWheel","ExpandingText","isExpanded","setIsExpanded","lessText","showMoreLink","MyProfileIcon","EventsIcon","GroupDetail","loadGroupAndFeed","loadGroup","groupResult","feedResult","memberCount","members_count","members","eventCount","event_count","activeGroup","groupFeed","getGroupFeed","changeJoinStatus","userJoined","joinStatusChanging","updateJoined","userLeft","membersList","unshift","shift","changeFavoriteStatus","getGroupStatus","favoritedGroup","favorited","copyGroupURL","eventsVisible","sponsored_photo_url","groupDetailsContainer","sponsoredIcon","likeJoinContainer","opacity","joinIconContainer","joinedIconContainer","inactiveGroup","eventCountContainer","descriptionContainer","groupFeedContainer","HandPointerIcon","SearchSection","section","searchEmpty","sectionItem","SearchGroupsList","groups","instructionsMsg","GroupMembersList","GroupMembers","loadMoreUsers","loadUsers","canLoadMore","memberUsers","handleUserSelect","handleClearSearch","searchResults","searchLoading","searchLoadingMore","searchingMembers","searchValueChange","apiSearch","searchGroupMembers","admins","adminUsers","groupTitles","Groups","searchingGroups","retrievedLastGroup","loadMoreGroups","getLocation","onGroupsPage","enableHighAccuracy","loadAdminGroups","loadMyGroups","loadActivityGroups","loadNearbyGroups","loadNationalGroups","nationalGroups","other_groups","adminGroups","admin","loadFavoriteGroups","loadMyAndNearbyGroups","myGroups","my_groups","myGroupsLoading","activityGroups","activityGroupsLoading","nearbyGroups","nearby","nearbyGroupsLoading","handleSearchFocus","interactWithGroups","newToGroups","separateGroups","appendToSection","sections","updatedSections","updatedSection","clearSearchGroups","searchError","featured","favoritesGroupsLoading","featuredGroupsLoading","nationalGroupsLoading","NotificationListItem","renderProfilePhoto","renderActorName","renderAction","mentionText","taggedCurrentUser","renderSpecificText","userProfileClickHandler","photoClickable","photoClickId","notificationClickHandler","author_id","post_id","isFollowing","is_following","followContainer","unFollowContainer","updateFollowingStatus","NotificationsList","notifications","setNotifications","notificationsRequested","requestNotifications","retrievedLastNotification","setRetrievedLastNotification","getMoreNotifications","lastNotification","updateFollowStateHandler","unfollowUser","followUser","updatedNotifications","actor_user","Notifications","useRouteMatch","UploadPhotoIcon","RWBUserImages","coverPhoto","onChangeCover","onChangeProfile","coverImageContainer","uploadCoverImage","profileImageContainer","profileImageCrop","uploadProfileImage","BlockAndReportOverlay","loggedInUser","setOverlayVisible","myRef","blockUser","reportUser","ProfileDetail","setIsFollowing","isFollowed","setIsFollowed","firstName","setFirstName","lastName","setLastName","preferredChapter","setPreferredChapter","setWorkspace","setTitle","serviceInfo","setServiceInfo","militaryRank","setMilitaryRank","industry","setIndustry","profileBio","setProfileBio","setCoverPhoto","setProfilePhoto","followingAmount","setFollowingAmount","followersAmount","setFollowersAmount","isEagleLeader","setIsEagleLeader","expirationTermOfService","setExpirationTermOfService","anonymousProfile","setAnonymousProfile","isLoadingFeed","setIsLoadingFeed","setUserFeed","retrieveUser","getUsersFollowSummary","fData","following","followers","getFollowerRelationship","followed","getFollowingRelationship","feed","getUserByID","nameContainer","chapterContainer","roleContainer","industryContainer","profileActions","followCount","selectedUserID","followsYouText","followButton","followButtonFollowed","SettingsIcon","EditIcon","PROFILE_TAB_LABELS","isFollowSummaryLoading","setIsFollowSummaryLoading","isInitialFeedLoading","setIsInitialFeedloading","isMoreFeedLoading","setIsMoreFeedLoading","userMetric","setUserMetric","userbadges","setuserBadges","getUserMetrics","getBadges","getUserBadges","badges","navigateBadges","badgesData","editButton","donationBtn","expiration_date","appSettingsMembershipLabel","membershipPurchaseLinkText","home_chapter","purchaseData","contentContainerDiv","metricBox","metricNum","all_time_challenges_participated","metricLable","mtd_events_participated","ytd_events_participated","imageContainerFlex","badge","noUserBadgesContainer","RWBRowButton","rowButton","INTRODUCTION","LEGAL","Inclusivity","Medical","IndemnficationAndRisk","Responsibility","Entirety","NoWaiver","Severability","Signatures","LegalWaiver","outlineColor","goBackButton","cursor","LegalModal","aria-describedby","PrivacyIcon","AccountIcon","LogoutIcon","KeyIcon","fillRule","TrashIcon","stroke-width","stroke-linecap","stroke-linejoin","EmailIcon","BlockIcon","class","MyAppSettings","bottomRow","isLegalWaiver","setIsLegalWaiver","setuserDetails","legalWaiverHandler","firstItem","Close","UserCard","followable","onFollow","userContainer","ProfileFollowers","setSelectedValue","followersList","setFollowersList","followingList","setFollowingList","retrievedLastFollower","setRetrievedLastFollower","retrievedLastFollowing","setRetrievedLastFollowing","loggedInID","filterFollowing","followingObj","getFollowersList","getFollowingList","handleInitialFollowing","updateFollowStateFollowers","followersListTemp","callbackArr","followedUser","newFollowersArr","updateFollowStateFollowing","followingListTemp","newFollowingArr","selectUserHandler","newFollowersList","newFollowingList","FlagIcon","RadioButtons","userProp","setMilitaryValue","extraMarginBottom","setValue","FormControl","FormLabel","RadioGroup","aria-label","FormControlLabel","control","Radio","military_props","status_radio_props","branch_radio_props","disability_radio_props","zone_radio_props","deployment_radio_props","personal_info_props","address_type_radio_props","gender_radio_props","anonymity_props","anon_radio_props","radio_props","sizes_radio_props","MenuButton","memo","fullWidth","anchorEl","setAnchorEl","selectedItem","setSelectedItem","selectHandler","aria-controls","aria-haspopup","currentTarget","Menu","menu","keepMounted","MenuItem","armyWarrantRanks","armyOfficerRanks","marinesWarrantRanks","marinesOfficerRanks","navyOfficerRanks","airForceOfficerRanks","coastGuardOfficerRanks","theme","heading","typography","pxToRem","fontWeightRegular","marginLeft","svg","expansionPanel","MILITARY_PROPS","Icon","militaryStatus","militaryFamily","militaryBranch","disability","militaryETSMonth","militaryETSDay","militaryETSYear","militaryETSError","combatZone","combatZoneOperation","setMilitaryStatus","setMilitaryFamily","setMilitaryBranch","setMilitaryETSMonth","setMilitaryETSDay","setMilitaryETSYear","rankError","setDisability","setCombatZone","setCombatZoneOperation","expanded","ExpansionPanel","ExpansionPanelSummary","expandIcon","ExpansionPanelDetails","EditMyProfile","useMemo","etsDate","ets_date_valid","isValid","setProfileImage","profileImageUri","setProfileImageUri","coverImage","setCoverImage","coverImageFile","setCoverImageFile","firstNameError","setFirstNameError","lastNameError","setLastNameError","bioValue","setBioValue","bioError","setBioError","setMilitaryETSError","setRankError","chapterData","setChapterData","newsletterSubscription1","setNewsletterSubscription1","newsletterSubscription2","setNewsletterSubscription2","expandedMilitaryPanel","setExpandedMilitaryPanel","addImageHandler","uploadImage","putUser","maxChar","contentContainerBox","RadioForm","listRadioItems","radioProps","radioInput","inline","COUNTRY_OPTIONS","AddressesList","addressSuggestions","fullAddress","suiteName","error_codes","complete_callback","fulladdress","verifyAddress","resultObj","address_not_verified","address_street","error_string","record","verified","startsWith","error_code","line1","line2","melissaFreeform","search_text","number_of_results","freeForm","list_key","suiteList","melissaGlobalFreeForm","globalFreeForm","subBuilding","melissaCityState","commaIndex","cityState","melissaLookup","api","addressFieldDisplay","state_string","zip_string","city_string","apartment_string","address_string","PERSONAL_INFO_PROPS","ProfilePersonalInfo","selectAddressHandler","showApartmentModal","apartmentList","apartment","fullAddressInternational","onCountrySelect","showCountryModal","countrySlug","onApartmentSelect","fetchOptions","updateOptionsSingular","address_type_index","gender_index","needsToSave","manual_address_entry","first_name_error","last_name_error","email_error","phone_error","gender_error","stateDropdownVisible","gender_description_error","clearErrorWarnings","address_error","country_error","addressWithApartment","savePressed","doSave","strippedPhone","endsWith","email_error_text","city_error","state_error","address_verified","international_address_verified","updateUser","user_data","zip_error","fields","hasSpecificStateOptions","save","formContainer","radioForm","autocompleteItems","setPassword","useReducer","newPassword","newPasswordConfirm","newPasswordError","setNewPasswordError","newPasswordConfirmError","setNewPasswordConfirmError","updatePassword","new_password","ANON_PROPS","radioGroup","radioItem","privacyPolicyLabel","isPrivacyModal","setIsPrivacyModal","Divider","DangerIcon","passwordError","setPasswordError","deleteAccountPressed","deleteAccount","dangerIconWrapper","verticalMargin","BlockedUser","setNewData","unblock","unblockUser","getListOfBlockedUsers","BlockedUsersList","BlockedUsers","newData","RadioFormOptions","discount","discountRate","isCurrentMembershipTier","valueText","MembershipOptionView","getSubscriptionOptions","optionData","reformatOptions","getDiscountRate","rate","membershipOptionsError","closePressed","price","logo","optionError","validateInput","optionIndex","navigateToFeed","optionChanged","selectedOption","userAmountPaid","amount_paid","isExpiredPurchase","privacyPolicyContainer","joinMembershipText","purchase_choice","supportingBrandsText","supportingBrandsLink","supportingBrandsLinkText","closeButtonText","InfoForm","military_status_error","military_branch_error","has_disability_error","setServiceCheck","onPressStatus","onPressServiceType","ProfileExtraInfoUpdate","PureComponent","etsd_error","military_specialty_error","military_rank_error","combat_deployment_operations_error","industry_error","years_error","validateProfile","etsd_month","etsd_day","etsd_year","REQUIRED_FIELD","years","years_in_industry","makePayload","onSpecialtySelect","specialty","specialtyVisible","onRankSelect","rankVisible","monthVisible","dayVisible","yearVisible","onMonthSelect","month","onDaySelect","day","onYearSelect","year","OnchangeIndustry","OnchangeYears","Profile","_defs","_g","SvgAppLogo","_ref","svgRef","createElement","ForwardRef","forwardRef","ApiInfo","userCreationSteps","profileSteps","getStepIndex","curentStep","getTotalSteps","getFirstScreen","getNextScreen","currentScreen","currentIndex","getPreviousScreen","getStepText","totalSteps","currentStepIndex","withOktaAuth","password_error_text","oktaSignIn","valueChangeHandler","field","loginHandler","clearErrors","getOktaConfig","oktaConfig","oktaCallback","loginUser","firstScreen","registerProfileFlow","port","oktaHandler","oktaContactUs","authStateManager","subscribe","authState","isAuthenticated","isLoginRedirect","parseFromUrl","tokenManager","setTokens","forgotPasswordText","VerifyEmailIcon","DialogTitle","other","disableTypography","closeButton","DialogContent","MuiDialogContent","DialogActions","MuiDialogActions","AlertDialog","handleClose","Dialog","gutterBottom","RegisterVerifyEmail","logout","checkVerification","verifyEmail","confirmationCode","codeError","updateCode","currentValue","newIndex","focus","keyCode","showDialog","userEmail","verifyEmailContent","userEmailText","enterConfirmationCodeText","codeInput","noEmail","RegisterPersonalInfo","nextPressed","doNext","incomplete","custom_gender_error","profile","nextStep","currentPath","existing_profile","default_state","showAndroidImageSheet","showMelissaModal","assigned_state","stepText","prevStep","RegisterSocialProfile","imageStateHandler","profilePhotoPayload","formDataMaker","putUserPhotoWeb","jsonBody","formData","FormData","append","profile_bio_error","editingCoverPhoto","editingProfilePhoto","airForceRankData","AIRFORCE_OFFICER","armyRankData","ARMY_WARRANT","ARMY_OFFICER","marinesRankData","MARINES_WARRANT","MARINES_OFFICER","navyRankData","NAVY_OFFICER","coastGuardRankData","COASTGUARD_OFFICER","RegisterMilitaryService","getRanks","combat_zone_error","combat_deployment_operation_error","disability_error","createDaysArray","daysArray","createYearArray","currentYear","endYear","disabilityHandler","combatZoneHandler","combatDeploymentHandler","militaryFamilyMemberHandler","etsMonthHandler","etsDayHandler","etsYearHandler","militaryRankHandler","militaryBranchHandler","dayModalIsOpen","monthModalIsOpen","yearModalIsOpen","formatRegisterServiceInfo","radioButtonsContainer","RegisterPrivacyWaiver","legalWaiverStatusHandler","legal_waiver","anonymousProfileHandler","legal_waiver_error_text","navigatePreviousPage","legalVaiwerStatusSwitch","RegisterWorkspaceAccessCode","verifyWorkSpace","verifyWorkspaceAccessCode","workSpaceCodeInput","Registration","setEmail","confirmEmail","setConfirmEmail","confirmPassword","setConfirmPassword","firstNameErrorText","setFirstNameErrorText","lastNameErrorText","setLastNameErrorText","emailErrorText","setEmailErrorText","confirmEmailErrorText","setConfirmEmailErrorText","passwordErrorText","setPasswordErrorText","confirmPasswordErrorText","setConfirmPasswordErrorText","serverErrorText","setServerErrorText","createAccountPressed","createNewUser","registerProfileComponentMap","PersonalInfo","SocialProfile","MilitaryService","PrivacyWaiver","RegisterWorkSpaceAccessCode","centerText","Home","HomeIcon","GroupsIcon","ChallengeTabIcon","ACTIVE_TAB","NavigationButton","NavigationColumn","showNavBar","allowedPaths","allowedPath","isNavBarDisplayed","navLinkContainer","navLogo","settingsContainer","ChallengeCardHeader","ended","badgeURL","topContainer","titleAndTimeContainer","listBadgeIcon","UnjoinedChallengeCard","refreshChallenges","setParticipants","followingParticipants","setFollowingParticipants","participantsCount","setParticipantsCount","getParticipants","getFollowingParticipants","getChallengeParticipants","getChallengeFollowingParticipants","joinChallenge","joinButton","ChallengeProgressBar","barContainer","percentageText","bottomContainer","lastValue","ordinalIndicator","JoinedChallengeCard","placementContainer","ChallengeDetail","setName","setDescription","setEventcount","changingChallengeStatus","setChangingChallengeStatus","joinedChallenge","setJoinedChallenge","totalUsers","setTotalUsers","totalUsersCount","setTotalUsersCount","setBadgeUrl","setHasBadge","badgeName","setBadgeName","setGoal","setPlace","checkin_event_category","setCheckinEventCategory","setMetric","leaderboard","setLeaderboard","setFeed","userList","leaveChallenge","loadTopParticipants","topParticipants","hasJoinedChallenge","loadChallengeRank","loadChallengeFeed","badge_name","badge_image_url","cover_image_url","getLeaderboardTop","getChallengeFeed","handleNewPost","eventCategoryDisplay","challengeDetailContainer","badgeContainer","badgeIcon","progressWrapper","instructionsWrapper","eventIconWrapper","instructions","avatarContainer","leaderboardContainer","ranking","seeMoreLink","ChallengeLeaderboard","getLeaderboardCentered","ranker","ChallengeParticipants","setPage","setLoadingMore","retrievedLastParticipant","setRetrievedLastParticipant","participant","Challenges","yourActiveChallenges","setYourActiveChallenges","availableChallenges","setAvailableChallenges","upcomingChallenges","setUpcomingChallenges","pastChallenges","setPastChallenges","totalPages","setTotalPages","currentSelectedTab","setCurrentSelectedTab","getActiveChallenges","getChallenges","separateData","challenges","unjoinedChallenges","separateUnjoinedChallenges","unjoined","challengeTabsContainer","challengeTab","challengeTabActive","challengeTabTitle","challengeTabTitleActive","sectionHeader","createPaymentMethod","SHIRTSIZE_DATA","cells","separators","headerText","legendContainer","cell","legendText","rowContainer","rowText","RADIO_PROPS","PaymentView","getMembershipExpireDate","setCardNumber","card_number","insertCharBefore","char","setExpirationDate","card_expiration","handleCardCvv","cvv","card_cvv","isExpiredCard","expirationDate","curDate","curMonth","curYear","alternate_shirt_address","manual_shirt_address","shirt_address_city","shirt_address_street","shirt_address_state","shirt_address_zip","user_email","user_name","card_zip","replaceAll","clearWarnings","hasShipment","shirt_size_error_text","shirt_address_general_error_text","shirt_address_city_error_text","shirt_address_street_error_text","shirt_address_state_error_text","shirt_address_zip_error_text","card_name_error_text","card_number_error_text","card_expiration_error_text","card_cvv_error_text","card_zip_error_text","uploadUserInfo","payment_state","shirt_address_apartment","current_user","createIntent","formatBillingDetails","getCountrySlug","userInfo","addressBody","userBody","fullBody","createPaymentIntent","purchase_choice_id","product","paymentProduct","receipt_email","clientSecret","intent_information","client_secret","createPayment","updateErrorStateFromServer","updatePaymentIntent","paymentRecord","confirmPaymentIntent","payment_intent_id","makePaymentMethod","cardDetails","billing_details","militaryOffices","isMilitaryAddress","splitAddress","changeFromPaymentState","initialPI","metadata","amount","makePayment","storeConfirmationData","paymentIntent","receiptEmail","updatedPI","next_action","validationURL","use_stripe_sdk","stripe_js","paymentState","onShirtSizePickerDismiss","selectedShirtSize","complete_user","shirt_address_country_error_text","shippingAddressState","showShirtSizeModal","pagesLoaded","displayCardNumber","formattedText","substr","RegExp","countryDisplay","displayPaymentStatus","selectButtonType","shirt_country_error","alternate_shirt_address_text","addressLines","centerDiv","titleDiv","paymentDiv","membershipValidityText","paymentRow","imgCenter","selectBoxRow","selectBoxSize","selectSize","errorText","shippingAddressRow","shippingAddressLabel","shippingAddressFlex","switchBox","sliderBox","Box","modalContentContainer","modalHead","countriesList","expRow","OrderConfirmationView","orderCompleteSection","confirmationText","openDialog","onDelete","onShare","toggleOverlay","workoutDate","workoutCardContainer","dateBox","workoutDatetext","optionsIconWrapper","overlayContainer","workoutInfoContainer","workoutInfoText","workoutInfoLabelText","WorkoutLog","workoutData","setWorkoutData","selectedElementIndex","setSelectedElementIndex","openDeleteDialog","setShowDeleteDialog","showWorkoutModal","setShareWorkoutModal","fetchUserWorkout","getUserWorkouts","workouts","deleteWorkout","createPostContainer","Analytics","fetchAnalytics","analytics","getUsageAnalytics","fetched_analytics","navigateWorkspaceAnalytics","analyticsItem","workSpace","active_users_last_30_days","total_registrations","workspace_name","renderSingleEntry","fetchedAnalyticsItem","sum","total_participants","analyticsBlock","analyticsHeader","statsContainer","mini","statbox","WorkSpaceAnalytics","navigateChallengeWorkSpace","workspaceData","titleName","formatNumber","num","totalChallengesParticipants","totalEventsParticipants","total_steps","total_miles","total_badges","total_checkins","ChallengeWorkSpace","downloadWorkspaceLeaderboardCsv","isDownloading","getWorkspaceLeaderboardCsv","download","createObjectURL","appendChild","removeChild","downloadWorkspaceAttendeeCsv","getWorkspaceAttendeeCsv","downloadWorkspaceUserCsv","getWorkspaceUserCsv","challengeEventContainer","csvButton","csvDisabled","metricHeader","challenge_name","full_name","date_joined","ChallengeBadges","dateText","NavigationWrapper","setOktaConfig","signInWithRedirect","setOktaNewConfig","pkce","scopes","LoginCallback","App","head","innerHTML","Favicon","OGCover","AppleTouchIcon","DynamicManifest","Logo192","Logo512","stringManifest","manifestURL","querySelector","setAttribute","script","hostname","StrictMode","serviceWorker","registration","unregister"],"mappings":"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","file":"static/js/main.9c588917.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Registration_container__3sPqD\",\"headerContainer\":\"Registration_headerContainer__6Quoq\",\"contentContainer\":\"Registration_contentContainer__2eMgZ\",\"radioForm\":\"Registration_radioForm__ejNh2\",\"buttonContainer\":\"Registration_buttonContainer__2mAig\",\"dropdownWrapper\":\"Registration_dropdownWrapper__14SjD\",\"privacyPolicyContainer\":\"Registration_privacyPolicyContainer__2S4R1\",\"clickable\":\"Registration_clickable__3fc9W\",\"centerText\":\"Registration_centerText__2V-ik\",\"displayNone\":\"Registration_displayNone__38O0d\",\"verifyEmailContent\":\"Registration_verifyEmailContent__35v3a\",\"autocompleteItems\":\"Registration_autocompleteItems__t2Gbz\",\"userImageContainer\":\"Registration_userImageContainer__37gma\",\"ETSContainer\":\"Registration_ETSContainer__3Fcob\",\"ETSdropdownWrapper\":\"Registration_ETSdropdownWrapper__2dEs9\",\"rankDropdownWrapper\":\"Registration_rankDropdownWrapper__A7P4V\",\"imageContainer\":\"Registration_imageContainer__2LL13\",\"redShirtMotto\":\"Registration_redShirtMotto__13wpT\",\"pickerContainer\":\"Registration_pickerContainer__YgWvc\",\"sizeChartBtn\":\"Registration_sizeChartBtn__bCaeu\",\"paymentFormColumn\":\"Registration_paymentFormColumn__2syFc\",\"radioButtonsContainer\":\"Registration_radioButtonsContainer__1ROSa\",\"errorMessage\":\"Registration_errorMessage__3K9Eg\",\"link\":\"Registration_link__q0BkT\",\"legalVaiwerStatusSwitch\":\"Registration_legalVaiwerStatusSwitch__1oLQy\",\"redShirtMottoOrderConfirmation\":\"Registration_redShirtMottoOrderConfirmation__2XaVg\",\"emailMessage\":\"Registration_emailMessage__10_MW\",\"noEmail\":\"Registration_noEmail__4GXKe\",\"codeInput\":\"Registration_codeInput__2kTwi\",\"workSpaceCodeInput\":\"Registration_workSpaceCodeInput__1IYAk\",\"userEmailText\":\"Registration_userEmailText__111Wd\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CreateEvent_container__31Z5o\",\"modal\":\"CreateEvent_modal__2yGQe\",\"contentScroll\":\"CreateEvent_contentScroll__L3Qzy\",\"content\":\"CreateEvent_content__2aL_L\",\"icon\":\"CreateEvent_icon__14d7w\",\"eventCreationFields\":\"CreateEvent_eventCreationFields__2hC75\",\"titleInput\":\"CreateEvent_titleInput__1QgGS\",\"attendeeInput\":\"CreateEvent_attendeeInput__2gD5S\",\"chapterEventUserType\":\"CreateEvent_chapterEventUserType__1w079\",\"chapterEventUserCard\":\"CreateEvent_chapterEventUserCard__2wRS9\",\"hostUsersInput\":\"CreateEvent_hostUsersInput__3Pbv_\",\"hostUsersList\":\"CreateEvent_hostUsersList__k9rhH\",\"item\":\"CreateEvent_item__37l0M\",\"linkItem\":\"CreateEvent_linkItem__dyuaT\",\"addPhotoInput\":\"CreateEvent_addPhotoInput__1QhOO\",\"locationPlacesList\":\"CreateEvent_locationPlacesList__3bmOy\",\"locationItem\":\"CreateEvent_locationItem__1IvFQ\",\"locationSearchInputContainer\":\"CreateEvent_locationSearchInputContainer__NcXGB\",\"fullInlineContainer\":\"CreateEvent_fullInlineContainer__2OGVG\",\"endTimePicker\":\"CreateEvent_endTimePicker__3Rhsc\",\"endTimeIcon\":\"CreateEvent_endTimeIcon__3GMuO\",\"linksContainer\":\"CreateEvent_linksContainer__3xVXE\",\"descriptionTextArea\":\"CreateEvent_descriptionTextArea__3JqIC\",\"inviteUsersTextArea\":\"CreateEvent_inviteUsersTextArea__2PlgG\",\"inviteSelectedUser\":\"CreateEvent_inviteSelectedUser__25vTB\",\"invitedUsersList\":\"CreateEvent_invitedUsersList__3n4Q6\",\"invitedUsersItem\":\"CreateEvent_invitedUsersItem__3YNE3\",\"attachPhotoContainer\":\"CreateEvent_attachPhotoContainer__3Dx8g\",\"attachPhotoButton\":\"CreateEvent_attachPhotoButton__3B0tY\",\"attachPhotoText\":\"CreateEvent_attachPhotoText__fvoY8\",\"hideDefaultUpload\":\"CreateEvent_hideDefaultUpload___VRy4\",\"imgPreviewContainer\":\"CreateEvent_imgPreviewContainer__2J_Yl\",\"imgPreview\":\"CreateEvent_imgPreview__33ZEJ\",\"modalXContainer\":\"CreateEvent_modalXContainer__3Ui_C\",\"titleContainer\":\"CreateEvent_titleContainer__3_syS\",\"allDayEventContainer\":\"CreateEvent_allDayEventContainer__hm77E\",\"label\":\"CreateEvent_label__j6MO-\",\"disabledContainer\":\"CreateEvent_disabledContainer__3qWfd\",\"subtypeContainer\":\"CreateEvent_subtypeContainer__1DQNg\",\"subtypeButton\":\"CreateEvent_subtypeButton__3gC6o\",\"unactiveSubtypeButton\":\"CreateEvent_unactiveSubtypeButton__3TA-n\",\"activeSubtypeButton\":\"CreateEvent_activeSubtypeButton__YsusF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navigation\":\"ProfileDetail_navigation__34ldJ\",\"contentContainer\":\"ProfileDetail_contentContainer__2ENIQ\",\"contentContainerDiv\":\"ProfileDetail_contentContainerDiv__2GqA3\",\"inlineContainer\":\"ProfileDetail_inlineContainer__2Dep0\",\"followsYouText\":\"ProfileDetail_followsYouText__1CTyI\",\"eagleLeaderText\":\"ProfileDetail_eagleLeaderText__2QIDl\",\"userImageContainer\":\"ProfileDetail_userImageContainer__1ndwf\",\"profileActions\":\"ProfileDetail_profileActions__2PrzF\",\"followCount\":\"ProfileDetail_followCount__1RiCC\",\"editButton\":\"ProfileDetail_editButton__24H15\",\"editButtonClicked\":\"ProfileDetail_editButtonClicked__1CPvc\",\"followButton\":\"ProfileDetail_followButton__3VpXE\",\"followButtonFollowed\":\"ProfileDetail_followButtonFollowed__2_OTk\",\"followButtonClicked\":\"ProfileDetail_followButtonClicked__2Up7x\",\"showMoreLink\":\"ProfileDetail_showMoreLink__9cNQc\",\"hover\":\"ProfileDetail_hover__2M-eH\",\"nameContainer\":\"ProfileDetail_nameContainer__3yMmn\",\"chapterContainer\":\"ProfileDetail_chapterContainer__3IAeD\",\"roleContainer\":\"ProfileDetail_roleContainer__1FQuq\",\"industryContainer\":\"ProfileDetail_industryContainer__3xOF_\",\"metricBox\":\"ProfileDetail_metricBox__3R0X3\",\"metricNum\":\"ProfileDetail_metricNum__3hJNE\",\"metricLable\":\"ProfileDetail_metricLable__1cF7J\",\"noUserBadgesContainer\":\"ProfileDetail_noUserBadgesContainer__1o81e\",\"imageContainer\":\"ProfileDetail_imageContainer__2lRIt\",\"imageContainerFlex\":\"ProfileDetail_imageContainerFlex__1hI_9\",\"profileImage\":\"ProfileDetail_profileImage__1yuN6\",\"emptyContainer\":\"ProfileDetail_emptyContainer__3GZC7\",\"donationBtn\":\"ProfileDetail_donationBtn__2WcoR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentContainer\":\"EventDetail_contentContainer__1gl2F\",\"chapterName\":\"EventDetail_chapterName__2X_Wu\",\"calendarContainer\":\"EventDetail_calendarContainer__3kvS0\",\"locationContainer\":\"EventDetail_locationContainer__FQArc\",\"virtualIcon\":\"EventDetail_virtualIcon__3B_FC\",\"eventHostContainer\":\"EventDetail_eventHostContainer__3vxjR\",\"hostProfileImg\":\"EventDetail_hostProfileImg__3-2lj\",\"hostDetails\":\"EventDetail_hostDetails__2Y4mE\",\"hostTitle\":\"EventDetail_hostTitle__2P5Jl\",\"hostName\":\"EventDetail_hostName__1170s\",\"statusButton\":\"EventDetail_statusButton__1dScO\",\"goingButton\":\"EventDetail_goingButton__2kk9C\",\"statusButtonClicked\":\"EventDetail_statusButtonClicked__2i5pN\",\"recordWorkoutButtonLink\":\"EventDetail_recordWorkoutButtonLink__2xvew\",\"recordWorkoutButton\":\"EventDetail_recordWorkoutButton__ClhXb\",\"cancelButton\":\"EventDetail_cancelButton__3AxGQ\",\"canceledEventContainer\":\"EventDetail_canceledEventContainer__3hUMJ\",\"removedEventContainer\":\"EventDetail_removedEventContainer__1YbsL\",\"updateButton\":\"EventDetail_updateButton__1P7c6\",\"checkButton\":\"EventDetail_checkButton__2jxkb\",\"getAttendeeListButton\":\"EventDetail_getAttendeeListButton__3Bz3E\",\"eventStatus\":\"EventDetail_eventStatus__FzY2H\",\"buttonsContainerCheckedIn\":\"EventDetail_buttonsContainerCheckedIn__1sX-5\",\"buttonsContainer\":\"EventDetail_buttonsContainer__TGuk9\",\"attendeesContainer\":\"EventDetail_attendeesContainer__2t0GW\",\"attendees\":\"EventDetail_attendees__1GaLA\",\"attendeesCount\":\"EventDetail_attendeesCount__1xNrz\",\"attendeesCountIcon\":\"EventDetail_attendeesCountIcon__2NTTD\",\"description\":\"EventDetail_description__ILAW2\",\"eventLinks\":\"EventDetail_eventLinks__1nz3z\",\"loadingNewPostContainer\":\"EventDetail_loadingNewPostContainer__3fzSh\",\"mapContainer\":\"EventDetail_mapContainer__1dYnL\",\"clickable\":\"EventDetail_clickable__3pcXx\",\"eventNameAndReportContainer\":\"EventDetail_eventNameAndReportContainer__lOdG9\",\"eventNameAndChapterContainer\":\"EventDetail_eventNameAndChapterContainer__1XdML\",\"optionsContainer\":\"EventDetail_optionsContainer__108Es\",\"virtualEventCategory\":\"EventDetail_virtualEventCategory__2-stb\",\"challengeInfoContainer\":\"EventDetail_challengeInfoContainer__1N24D\",\"recordWorkoutWrapper\":\"EventDetail_recordWorkoutWrapper__29Eh1\",\"eventLinkContainer\":\"EventDetail_eventLinkContainer__1zr7P\",\"sessionEndedContainer\":\"EventDetail_sessionEndedContainer__3pqyP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PaymentView_container__2VDVN\",\"textCenter\":\"PaymentView_textCenter__2rA4K\",\"headerContainer\":\"PaymentView_headerContainer__zqAde\",\"contentContainer\":\"PaymentView_contentContainer__3XhXL\",\"radioForm\":\"PaymentView_radioForm__15-Ue\",\"buttonContainer\":\"PaymentView_buttonContainer__2scLm\",\"dropdownWrapper\":\"PaymentView_dropdownWrapper__SCkib\",\"privacyPolicyContainer\":\"PaymentView_privacyPolicyContainer__3qQNa\",\"clickable\":\"PaymentView_clickable__14TRR\",\"centerText\":\"PaymentView_centerText__24fAC\",\"displayNone\":\"PaymentView_displayNone__1dwD-\",\"verifyEmailContent\":\"PaymentView_verifyEmailContent__33aVQ\",\"autocompleteItems\":\"PaymentView_autocompleteItems__104E_\",\"userImageContainer\":\"PaymentView_userImageContainer__mOQ-6\",\"ETSContainer\":\"PaymentView_ETSContainer__3Woqu\",\"ETSdropdownWrapper\":\"PaymentView_ETSdropdownWrapper__3j1os\",\"rankDropdownWrapper\":\"PaymentView_rankDropdownWrapper__2erE7\",\"imageContainer\":\"PaymentView_imageContainer__2Srsb\",\"redShirtMotto\":\"PaymentView_redShirtMotto__1d_pD\",\"pickerContainer\":\"PaymentView_pickerContainer__2PzL4\",\"sizeChartBtn\":\"PaymentView_sizeChartBtn___JwRx\",\"paymentFormColumn\":\"PaymentView_paymentFormColumn__1Pu-Q\",\"radioButtonsContainer\":\"PaymentView_radioButtonsContainer__1E0TF\",\"errorMessage\":\"PaymentView_errorMessage__5pwjb\",\"link\":\"PaymentView_link__tWPRc\",\"legalVaiwerStatusSwitch\":\"PaymentView_legalVaiwerStatusSwitch__Lg4Sp\",\"redShirtMottoOrderConfirmation\":\"PaymentView_redShirtMottoOrderConfirmation__2XyLq\",\"emailMessage\":\"PaymentView_emailMessage__15jWP\",\"noEmail\":\"PaymentView_noEmail__2SvTJ\",\"codeInput\":\"PaymentView_codeInput__3FPpv\",\"valueText\":\"PaymentView_valueText__2-YTR\",\"centerDiv\":\"PaymentView_centerDiv__A7MYP\",\"titleDiv\":\"PaymentView_titleDiv__3ibTw\",\"paymentDiv\":\"PaymentView_paymentDiv__3_mk3\",\"expRow\":\"PaymentView_expRow__KWVkL\",\"paymentRow\":\"PaymentView_paymentRow__3SCUV\",\"imgCenter\":\"PaymentView_imgCenter__1GveX\",\"selectBoxRow\":\"PaymentView_selectBoxRow__HwPV5\",\"selectBoxSize\":\"PaymentView_selectBoxSize__cPVci\",\"selectSize\":\"PaymentView_selectSize__eNBS8\",\"sizeChart\":\"PaymentView_sizeChart__3kc5E\",\"shippingAddressRow\":\"PaymentView_shippingAddressRow__1VidN\",\"shippingAddressLabel\":\"PaymentView_shippingAddressLabel__1o9VL\",\"shippingAddressFlex\":\"PaymentView_shippingAddressFlex__7fGnS\",\"switchBox\":\"PaymentView_switchBox__3Nglu\",\"sliderBox\":\"PaymentView_sliderBox__X6j6Q\",\"shippingAddresstext\":\"PaymentView_shippingAddresstext__2EuXQ\",\"modalContentContainer\":\"PaymentView_modalContentContainer__3SCFa\",\"modalHead\":\"PaymentView_modalHead__2XnnJ\",\"tableHeading\":\"PaymentView_tableHeading__FpGZn\",\"countriesList\":\"PaymentView_countriesList__14b_X\",\"errorText\":\"PaymentView_errorText__dG5LT\"};","module.exports = \"data:image/png;base64,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gACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgABma5WcAAAF+ElEQVSB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewCAj17h9VHgAABAlUICPQq2qxIAgQIEMguINCzd1h9BAgQIFCFgECvos2KJECAAIHsAgI9e4fVR4AAAQJVCAj0KtqsSAIECBDILiDQs3dYfQQIECBQhYBAr6LNiiRAgACB7AICPXuH1UeAAAECVQgI9CrarEgCBAgQyC4g0LN3WH0ECBAgUIWAQK+izYokQIAAgewC/wcxllw4o6l6owAAAABJRU5ErkJggg==\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"FeedListItem_container__3gsv0\",\"userActivityContainer\":\"FeedListItem_userActivityContainer__2Kxf2\",\"userImageContainer\":\"FeedListItem_userImageContainer__3sDzZ\",\"profileImage\":\"FeedListItem_profileImage__3-FAp\",\"sponsorAdminIcon\":\"FeedListItem_sponsorAdminIcon__2Oo-c\",\"name\":\"FeedListItem_name__1WwV_\",\"postText\":\"FeedListItem_postText__r25EF\",\"reactionContainer\":\"FeedListItem_reactionContainer__1lfkk\",\"likeContainer\":\"FeedListItem_likeContainer__39RKw\",\"likeIcon\":\"FeedListItem_likeIcon__2kiJn\",\"commentsContainer\":\"FeedListItem_commentsContainer__1AtMm\",\"postImageContainer\":\"FeedListItem_postImageContainer__kMT7a\",\"postImage\":\"FeedListItem_postImage__YEyLu\",\"tallContainer\":\"FeedListItem_tallContainer__28Bfg\",\"tallImage\":\"FeedListItem_tallImage__1c7pF\",\"deleteButtonContainer\":\"FeedListItem_deleteButtonContainer__3fkia\",\"deleteButton\":\"FeedListItem_deleteButton__3w5Vn\",\"imageAndTextContainer\":\"FeedListItem_imageAndTextContainer__37uxB\",\"pinnedPostText\":\"FeedListItem_pinnedPostText__1sHZ-\",\"pinnedContainer\":\"FeedListItem_pinnedContainer__jhIGG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PostView_container__-Sl4u\",\"userActivityContainer\":\"PostView_userActivityContainer__3H2xD\",\"backIcon\":\"PostView_backIcon__1UV7M\",\"userImageContainer\":\"PostView_userImageContainer__1KUtj\",\"profileImage\":\"PostView_profileImage__2GEZb\",\"userPostContainer\":\"PostView_userPostContainer__2LMlL\",\"postText\":\"PostView_postText__35zoM\",\"reactionContainer\":\"PostView_reactionContainer__2togM\",\"likeContainer\":\"PostView_likeContainer__2WCpN\",\"likeIcon\":\"PostView_likeIcon__19ftY\",\"postImage\":\"PostView_postImage__IpGdf\",\"commentContainer\":\"PostView_commentContainer__rduOC\",\"userCommentContainer\":\"PostView_userCommentContainer__3Kh5l\",\"replyContainer\":\"PostView_replyContainer__21dBh\",\"userReplyContainer\":\"PostView_userReplyContainer__1dFrn\",\"replyIcon\":\"PostView_replyIcon__266O0\",\"imgModalContainer\":\"PostView_imgModalContainer__rrptu\",\"modal\":\"PostView_modal__2z0Uz\",\"modalXContainer\":\"PostView_modalXContainer__3TyMY\",\"reportDeleteContainer\":\"PostView_reportDeleteContainer__1-XYd\",\"previousCommentsContainer\":\"PostView_previousCommentsContainer__3NlMJ\",\"previousCommentsText\":\"PostView_previousCommentsText__3J8jW\",\"commentsContainer\":\"PostView_commentsContainer__sIBur\",\"displayNone\":\"PostView_displayNone__aIkhH\",\"selectable\":\"PostView_selectable__2sXMn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentContainer\":\"ChallengeWorkSpace_contentContainer__1iC-2\",\"metricHeader\":\"ChallengeWorkSpace_metricHeader__KbuIz\",\"metricBox\":\"ChallengeWorkSpace_metricBox__3nIuT\",\"metricNum\":\"ChallengeWorkSpace_metricNum__1trfT\",\"metricLable\":\"ChallengeWorkSpace_metricLable__1IyQG\",\"disableDiv\":\"ChallengeWorkSpace_disableDiv__1f4Ug\",\"challengeEventContainer\":\"ChallengeWorkSpace_challengeEventContainer__1WUCA\",\"headerContainer\":\"ChallengeWorkSpace_headerContainer__1OAle\",\"csvButton\":\"ChallengeWorkSpace_csvButton__ALNmY\",\"csvDisabled\":\"ChallengeWorkSpace_csvDisabled__1BmvF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"analyticsBlock\":\"Analytics_analyticsBlock__3PJlA\",\"analyticsHeader\":\"Analytics_analyticsHeader__25Tzg\",\"statsContainer\":\"Analytics_statsContainer__oIG2u\",\"statbox\":\"Analytics_statbox__fegDI\",\"mini\":\"Analytics_mini__31OGk\",\"contentContainer\":\"Analytics_contentContainer__Sbqaz\",\"metricBox\":\"Analytics_metricBox__3FQT2\",\"metricNum\":\"Analytics_metricNum__3unAx\",\"metricLable\":\"Analytics_metricLable__3Vy06\",\"disableDiv\":\"Analytics_disableDiv__1-4hq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"chatStateContainer\":\"ChatBox_chatStateContainer__2f_HE\",\"lastMessageContainer\":\"ChatBox_lastMessageContainer__2FZXQ\",\"maximizeButton\":\"ChatBox_maximizeButton__3WrOd\",\"maximizeButtonText\":\"ChatBox_maximizeButtonText__2Jr3O\",\"chatContainer\":\"ChatBox_chatContainer__1Bq81\",\"flexContainerCentered\":\"ChatBox_flexContainerCentered__3VANP\",\"flexContainer\":\"ChatBox_flexContainer__36cNl\",\"toggleButton\":\"ChatBox_toggleButton__2s-YW\",\"flipChevron\":\"ChatBox_flipChevron__1Qncu\",\"messageContainer\":\"ChatBox_messageContainer__3CN_E\",\"leftJustify\":\"ChatBox_leftJustify__1MJwP\",\"rightJustify\":\"ChatBox_rightJustify__3mltL\",\"profileImage\":\"ChatBox_profileImage__1S8LC\",\"textContainer\":\"ChatBox_textContainer__14gBg\",\"username\":\"ChatBox_username__1UBm1\",\"messageText\":\"ChatBox_messageText__9TKJQ\",\"link\":\"ChatBox_link__3UFJG\",\"messagesList\":\"ChatBox_messagesList__3CNTj\",\"inputContainer\":\"ChatBox_inputContainer__2XkuV\",\"input\":\"ChatBox_input__1fsSe\",\"sendButton\":\"ChatBox_sendButton__1uBOk\",\"sendButtonIcon\":\"ChatBox_sendButtonIcon__UExOE\",\"minimizedView\":\"ChatBox_minimizedView__263Mk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ChallengeCard_container__2LcGo\",\"topContainer\":\"ChallengeCard_topContainer__weoO8\",\"titleAndTimeContainer\":\"ChallengeCard_titleAndTimeContainer__15Sx7\",\"title\":\"ChallengeCard_title__1jHZG\",\"description\":\"ChallengeCard_description__310st\",\"joinButton\":\"ChallengeCard_joinButton__1Zeul\",\"profileImg\":\"ChallengeCard_profileImg__2dL7H\",\"barContainer\":\"ChallengeCard_barContainer__3jx9U\",\"bottomContainer\":\"ChallengeCard_bottomContainer__PFJ6g\",\"placementContainer\":\"ChallengeCard_placementContainer__TPjEE\",\"percentageText\":\"ChallengeCard_percentageText__3leKA\",\"listBadgeIcon\":\"ChallengeCard_listBadgeIcon__2CAgj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"UpdateProfileOverlay_container__3y-Zj\",\"contentSquare\":\"UpdateProfileOverlay_contentSquare__1MF7a\",\"bottomContainer\":\"UpdateProfileOverlay_bottomContainer__3Bwlb\",\"leftChevron\":\"UpdateProfileOverlay_leftChevron__1ibrL\",\"dot\":\"UpdateProfileOverlay_dot__17Gp9\",\"continueButton\":\"UpdateProfileOverlay_continueButton__3SNGN\",\"contentContainer\":\"UpdateProfileOverlay_contentContainer__18G0T\",\"top\":\"UpdateProfileOverlay_top__19A2j\",\"bottom\":\"UpdateProfileOverlay_bottom__1YanR\",\"arrow\":\"UpdateProfileOverlay_arrow__1SLxz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"challengeDetailContainer\":\"ChallengeDetail_challengeDetailContainer__161tg\",\"description\":\"ChallengeDetail_description__3zOn6\",\"instructionsWrapper\":\"ChallengeDetail_instructionsWrapper__1wHXA\",\"eventIconWrapper\":\"ChallengeDetail_eventIconWrapper__2bw8K\",\"instructions\":\"ChallengeDetail_instructions__2IdHY\",\"buttonContainer\":\"ChallengeDetail_buttonContainer__xQz2C\",\"button\":\"ChallengeDetail_button__2kKHR\",\"avatarContainer\":\"ChallengeDetail_avatarContainer__3Iyel\",\"badgeContainer\":\"ChallengeDetail_badgeContainer__2giEi\",\"badgeIcon\":\"ChallengeDetail_badgeIcon__2xF6s\",\"leaderboardContainer\":\"ChallengeDetail_leaderboardContainer__XP7L1\",\"seeMoreLink\":\"ChallengeDetail_seeMoreLink__2tLNt\",\"progressWrapper\":\"ChallengeDetail_progressWrapper__3-kCX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ProfilePersonalInfo_container__1-GAY\",\"modal\":\"ProfilePersonalInfo_modal__3mW0v\",\"content\":\"ProfilePersonalInfo_content__1g9Ck\",\"contentContainer\":\"ProfilePersonalInfo_contentContainer__1Dv6t\",\"radioForm\":\"ProfilePersonalInfo_radioForm__KW4nq\",\"buttonContainer\":\"ProfilePersonalInfo_buttonContainer__1If5I\",\"dropdownWrapper\":\"ProfilePersonalInfo_dropdownWrapper__3qket\",\"autocompleteItems\":\"ProfilePersonalInfo_autocompleteItems__3IsGJ\",\"clickable\":\"ProfilePersonalInfo_clickable__2-MQE\",\"displayNone\":\"ProfilePersonalInfo_displayNone__fCCtT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterLozenges\":\"FiltersBar_filterLozenges__DiZFk\",\"filtersContainer\":\"FiltersBar_filtersContainer__zbnuU\",\"singleContainer\":\"FiltersBar_singleContainer__1DJmG\",\"selected\":\"FiltersBar_selected__2HIj2\",\"filterCounter\":\"FiltersBar_filterCounter__3EINw\",\"groupEventLozengesContainer\":\"FiltersBar_groupEventLozengesContainer__2oQFi\",\"lozengeIcon\":\"FiltersBar_lozengeIcon__1-vEb\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Challenges_container__1c9X9\",\"challengeTabsContainer\":\"Challenges_challengeTabsContainer__3ymIi\",\"challengeTab\":\"Challenges_challengeTab__3DK8P\",\"challengeTabActive\":\"Challenges_challengeTabActive__1-S2C\",\"challengeTabTitle\":\"Challenges_challengeTabTitle__3dAAZ\",\"challengeTabTitleActive\":\"Challenges_challengeTabTitleActive__3D5_B\",\"sectionHeader\":\"Challenges_sectionHeader__3Mtx5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"workoutCardContainer\":\"WorkoutCardDate_workoutCardContainer__2rNFb\",\"workoutInfoContainer\":\"WorkoutCardDate_workoutInfoContainer__1M8ol\",\"workoutInfoLabelText\":\"WorkoutCardDate_workoutInfoLabelText__1bMnm\",\"optionsIconWrapper\":\"WorkoutCardDate_optionsIconWrapper__15IQB\",\"workoutInfoText\":\"WorkoutCardDate_workoutInfoText__2-Dmq\",\"optionsContainer\":\"WorkoutCardDate_optionsContainer__2w9-T\",\"overlayContainer\":\"WorkoutCardDate_overlayContainer__35za3\",\"dateBox\":\"WorkoutCardDate_dateBox__38ik7\",\"workoutDatetext\":\"WorkoutCardDate_workoutDatetext__2rH_s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"groupDetailsContainer\":\"GroupDetail_groupDetailsContainer__KJ7Kb\",\"groupType\":\"GroupDetail_groupType__3GRKy\",\"buttonsContainer\":\"GroupDetail_buttonsContainer__CzjuY\",\"likeJoinContainer\":\"GroupDetail_likeJoinContainer__qjd2b\",\"likeIconContainer\":\"GroupDetail_likeIconContainer__1J4DB\",\"likedIconContainer\":\"GroupDetail_likedIconContainer__2ES6L\",\"joinIconContainer\":\"GroupDetail_joinIconContainer__2UKRA\",\"joinedIconContainer\":\"GroupDetail_joinedIconContainer__wi_R6\",\"eventCountContainer\":\"GroupDetail_eventCountContainer__24yER\",\"inactiveGroup\":\"GroupDetail_inactiveGroup__2hNhY\",\"descriptionContainer\":\"GroupDetail_descriptionContainer__1kiuo\",\"sponsoredIcon\":\"GroupDetail_sponsoredIcon__1oIkH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Attendee_container__N4zgX\",\"imgContainer\":\"Attendee_imgContainer__2YJ2p\",\"img\":\"Attendee_img__2SD9S\",\"adminIconContainer\":\"Attendee_adminIconContainer__2GQk4\",\"name\":\"Attendee_name__3bkG0\",\"labelContainer\":\"Attendee_labelContainer__2jGQV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"workoutCardContainer\":\"WorkoutCard_workoutCardContainer__1ka65\",\"workoutInfoContainer\":\"WorkoutCard_workoutInfoContainer__1Af-t\",\"workoutInfoLabelText\":\"WorkoutCard_workoutInfoLabelText__1aihd\",\"optionsIconWrapper\":\"WorkoutCard_optionsIconWrapper__3TkyN\",\"workoutInfoText\":\"WorkoutCard_workoutInfoText__2X17x\",\"optionsContainer\":\"WorkoutCard_optionsContainer__3yrux\",\"overlayContainer\":\"WorkoutCard_overlayContainer__MFDZv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"DeleteAccount_container__3PR86\",\"modal\":\"DeleteAccount_modal__3zU8D\",\"root\":\"DeleteAccount_root__Xe3tl\",\"menuButton\":\"DeleteAccount_menuButton__3VFjh\",\"title\":\"DeleteAccount_title__1y2dl\",\"toolbar\":\"DeleteAccount_toolbar__3hjzc\",\"dangerIconWrapper\":\"DeleteAccount_dangerIconWrapper__2MxbP\",\"button\":\"DeleteAccount_button__39iw-\",\"verticalMargin\":\"DeleteAccount_verticalMargin__19kbP\",\"password\":\"DeleteAccount_password__XoWgz\",\"tintColor\":\"DeleteAccount_tintColor__9-gI7\",\"privacyPolicyLabel\":\"DeleteAccount_privacyPolicyLabel__ZsIjw\",\"contentContainer\":\"DeleteAccount_contentContainer__1522g\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"OrderConfirmationView_container__2Zb3b\",\"headerContainer\":\"OrderConfirmationView_headerContainer__2Nj7C\",\"contentContainer\":\"OrderConfirmationView_contentContainer__anIZZ\",\"centerDiv\":\"OrderConfirmationView_centerDiv__Q1J_B\",\"titleDiv\":\"OrderConfirmationView_titleDiv__3KY0A\",\"paymentDiv\":\"OrderConfirmationView_paymentDiv__2xsGs\",\"paymentRow\":\"OrderConfirmationView_paymentRow__1fSxq\",\"confirmationText\":\"OrderConfirmationView_confirmationText__2gT8-\",\"buttonContainer\":\"OrderConfirmationView_buttonContainer__nETeW\",\"orderCompleteSection\":\"OrderConfirmationView_orderCompleteSection__39fn1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CreatePost_container__1zQVJ\",\"modal\":\"CreatePost_modal__oDq0M\",\"linkPreviewContainer\":\"CreatePost_linkPreviewContainer__o_26q\",\"content\":\"CreatePost_content__3Mcv0\",\"attachPhotoContainer\":\"CreatePost_attachPhotoContainer__1Tblz\",\"attachPhotoButton\":\"CreatePost_attachPhotoButton__33VFR\",\"attachPhotoText\":\"CreatePost_attachPhotoText__1VwgW\",\"hideDefaultUpload\":\"CreatePost_hideDefaultUpload__2LvL6\",\"imgPreviewContainer\":\"CreatePost_imgPreviewContainer__2doQt\",\"modalXContainer\":\"CreatePost_modalXContainer__1GcOZ\",\"usersListContainer\":\"CreatePost_usersListContainer__3X5qG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ProfileFollowers_container__3vQha\",\"userContainer\":\"ProfileFollowers_userContainer__2P-nT\",\"leftContainer\":\"ProfileFollowers_leftContainer__3oZAy\",\"profileImg\":\"ProfileFollowers_profileImg__x68ZJ\",\"textContainer\":\"ProfileFollowers_textContainer__JKnVo\",\"inlineContainer\":\"ProfileFollowers_inlineContainer__1BERU\",\"eagleLeaderText\":\"ProfileFollowers_eagleLeaderText__2WIiN\",\"starIcon\":\"ProfileFollowers_starIcon__1XABy\",\"followContainer\":\"ProfileFollowers_followContainer__3_f1R\",\"unFollowContainer\":\"ProfileFollowers_unFollowContainer__28144\",\"loadingContainer\":\"ProfileFollowers_loadingContainer__1Nv_c\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"labelContainer\":\"CustomModal_labelContainer__1lzIA\",\"label\":\"CustomModal_label__2w4s7\",\"h2\":\"CustomModal_h2__3gUap\",\"selected\":\"CustomModal_selected__21uwJ\",\"xIconContainer\":\"CustomModal_xIconContainer__1cZZt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"labelContainer\":\"CountryModal_labelContainer__3j6Km\",\"label\":\"CountryModal_label__3aUQy\",\"h2\":\"CountryModal_h2__2QxuU\",\"selected\":\"CountryModal_selected__1jLrh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SearchGooglePlaces_container__1a5z2\",\"searchBar\":\"SearchGooglePlaces_searchBar__1bPgg\",\"noLeftRadius\":\"SearchGooglePlaces_noLeftRadius__1klA5\",\"icon\":\"SearchGooglePlaces_icon__3t6AU\",\"iconRight\":\"SearchGooglePlaces_iconRight__3wQqq\",\"clearSearch\":\"SearchGooglePlaces_clearSearch__3nGzb\",\"persistentClearSearch\":\"SearchGooglePlaces_persistentClearSearch__2hdig\",\"hideClear\":\"SearchGooglePlaces_hideClear__2GFhR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"BlockedUser_container__1uzzW\",\"infoContainer\":\"BlockedUser_infoContainer__Pseq8\",\"buttonContainer\":\"BlockedUser_buttonContainer__-uJmO\",\"unblock\":\"BlockedUser_unblock__23805\",\"imgContainer\":\"BlockedUser_imgContainer__1Lx4r\",\"img\":\"BlockedUser_img__3DbWZ\",\"adminIconContainer\":\"BlockedUser_adminIconContainer__3eY5y\",\"name\":\"BlockedUser_name__1MJVY\",\"labelContainer\":\"BlockedUser_labelContainer__1QJeM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MembershipOptionView_container__35eJh\",\"headerContainer\":\"MembershipOptionView_headerContainer__bLzNl\",\"contentContainer\":\"MembershipOptionView_contentContainer__25OGQ\",\"radioForm\":\"MembershipOptionView_radioForm__1AbiR\",\"buttonContainer\":\"MembershipOptionView_buttonContainer__i7czW\",\"dropdownWrapper\":\"MembershipOptionView_dropdownWrapper__36bcA\",\"privacyPolicyContainer\":\"MembershipOptionView_privacyPolicyContainer__3_wdG\",\"clickable\":\"MembershipOptionView_clickable__GqbIJ\",\"centerText\":\"MembershipOptionView_centerText__1wU8F\",\"displayNone\":\"MembershipOptionView_displayNone__2doC2\",\"verifyEmailContent\":\"MembershipOptionView_verifyEmailContent__1Kcpg\",\"autocompleteItems\":\"MembershipOptionView_autocompleteItems__3iLQ6\",\"userImageContainer\":\"MembershipOptionView_userImageContainer__1W054\",\"ETSContainer\":\"MembershipOptionView_ETSContainer__1KyqW\",\"ETSdropdownWrapper\":\"MembershipOptionView_ETSdropdownWrapper__2n1Bh\",\"rankDropdownWrapper\":\"MembershipOptionView_rankDropdownWrapper__Fr9vP\",\"imageContainer\":\"MembershipOptionView_imageContainer__3Cb__\",\"redShirtMotto\":\"MembershipOptionView_redShirtMotto__2bhT2\",\"pickerContainer\":\"MembershipOptionView_pickerContainer__3ivia\",\"sizeChartBtn\":\"MembershipOptionView_sizeChartBtn__1RMIA\",\"paymentFormColumn\":\"MembershipOptionView_paymentFormColumn__3zudn\",\"radioButtonsContainer\":\"MembershipOptionView_radioButtonsContainer__3VLU2\",\"errorMessage\":\"MembershipOptionView_errorMessage__3gILJ\",\"link\":\"MembershipOptionView_link__1Uhp1\",\"legalVaiwerStatusSwitch\":\"MembershipOptionView_legalVaiwerStatusSwitch__2v21V\",\"redShirtMottoOrderConfirmation\":\"MembershipOptionView_redShirtMottoOrderConfirmation__2XcRb\",\"emailMessage\":\"MembershipOptionView_emailMessage__1Ddh1\",\"noEmail\":\"MembershipOptionView_noEmail__1dEOQ\",\"codeInput\":\"MembershipOptionView_codeInput__151P2\",\"valueText\":\"MembershipOptionView_valueText__30swJ\",\"menuButton\":\"MembershipOptionView_menuButton__1q5YQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"NavigationButton_button__T8iqR\",\"active\":\"NavigationButton_active__HMHgx\",\"icon\":\"NavigationButton_icon__2Kmg9\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ShirtSizesModal_container__12TIv\",\"mainText\":\"ShirtSizesModal_mainText__95YCN\",\"headerContainer\":\"ShirtSizesModal_headerContainer__PnzEA\",\"legendContainer\":\"ShirtSizesModal_legendContainer__L3PYE\",\"legendText\":\"ShirtSizesModal_legendText__9Kd6u\",\"rowContainer\":\"ShirtSizesModal_rowContainer__1WUGC\",\"rowText\":\"ShirtSizesModal_rowText__15sCS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"optionsContainer\":\"ReportAndDeleteOverlay_optionsContainer__VY6sM\",\"container\":\"ReportAndDeleteOverlay_container__2KAe1\",\"editContainer\":\"ReportAndDeleteOverlay_editContainer__2wLgI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"UsersList_container__N56FI\",\"suggestionContainer\":\"UsersList_suggestionContainer__2jFtC\",\"profileImg\":\"UsersList_profileImg__l6cIi\",\"textContainer\":\"UsersList_textContainer__1ePqB\",\"inlineContainer\":\"UsersList_inlineContainer__1vltO\",\"eagleLeaderText\":\"UsersList_eagleLeaderText__1ewYh\",\"starIcon\":\"UsersList_starIcon__2xwAb\",\"loadingContainer\":\"UsersList_loadingContainer__3NsBt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"cardContainer\":\"SitePreviewCard_cardContainer__1OLkL\",\"cardContent\":\"SitePreviewCard_cardContent__A0WoU\",\"cardCover\":\"SitePreviewCard_cardCover__3vvcL\",\"siteTitle\":\"SitePreviewCard_siteTitle__2D8wQ\",\"siteLink\":\"SitePreviewCard_siteLink__3Tmqs\",\"siteDescription\":\"SitePreviewCard_siteDescription__1x86_\",\"cancelButton\":\"SitePreviewCard_cancelButton__zQ8ON\",\"fallbackIcon\":\"SitePreviewCard_fallbackIcon__2jM1g\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"EnhancedCard_container__3akjf\",\"imageContainer\":\"EnhancedCard_imageContainer__3z_eE\",\"eventTitle\":\"EnhancedCard_eventTitle__2C7S5\",\"cardImage\":\"EnhancedCard_cardImage__295v6\",\"cardInfoContainer\":\"EnhancedCard_cardInfoContainer__mBn4p\",\"groupName\":\"EnhancedCard_groupName__2ruTG\",\"dateInfo\":\"EnhancedCard_dateInfo__1MLki\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"CustomButton_button__25zKo\",\"primary\":\"CustomButton_primary__2RXXi\",\"primaryDisabled\":\"CustomButton_primaryDisabled__3Fkq8\",\"secondary\":\"CustomButton_secondary__176OO\",\"tertiary\":\"CustomButton_tertiary__8R3R5\",\"default\":\"CustomButton_default__35gJc\",\"disabledLink\":\"CustomButton_disabledLink__1Eylr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"RWBUserImages_container__xWai0\",\"coverImageContainer\":\"RWBUserImages_coverImageContainer__240nA\",\"profileImageContainer\":\"RWBUserImages_profileImageContainer__3kg_l\",\"profileImageCrop\":\"RWBUserImages_profileImageCrop__2ked_\",\"uploadCoverImage\":\"RWBUserImages_uploadCoverImage__x3yyz\",\"uploadProfileImage\":\"RWBUserImages_uploadProfileImage__3Lmee\",\"hideDefaultUpload\":\"RWBUserImages_hideDefaultUpload__2Bk_Y\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Feed_container__-7EQI\",\"searchContainer\":\"Feed_searchContainer__1KX2d\",\"notificationsButton\":\"Feed_notificationsButton__1dJlv\",\"emptyListText\":\"Feed_emptyListText__2AHBP\",\"aggregateFeedContainter\":\"Feed_aggregateFeedContainter__3nS7R\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CreateComment_container__1EPFT\",\"modal\":\"CreateComment_modal__1zBMR\",\"content\":\"CreateComment_content__12syP\",\"postContainer\":\"CreateComment_postContainer__3VztF\",\"namePostContainer\":\"CreateComment_namePostContainer__2W9aP\",\"textImageContainer\":\"CreateComment_textImageContainer__1-Dno\",\"postImage\":\"CreateComment_postImage__2qm7s\",\"usersListContainer\":\"CreateComment_usersListContainer__2C97N\",\"linkPreviewContainer\":\"CreateComment_linkPreviewContainer__3Cf4E\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SearchBar_container__1nsMW\",\"searchBar\":\"SearchBar_searchBar__W2Qbi\",\"noRightRadius\":\"SearchBar_noRightRadius__1FT1_\",\"icon\":\"SearchBar_icon__1PBQG\",\"clearSearch\":\"SearchBar_clearSearch__3Dghc\",\"hideClear\":\"SearchBar_hideClear__1HyP4\",\"notificationIcon\":\"SearchBar_notificationIcon__VTyK4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"commentContainer\":\"CommentView_commentContainer__1sJSl\",\"userCommentContainer\":\"CommentView_userCommentContainer__3Fqrj\",\"userImageContainer\":\"CommentView_userImageContainer__1Y6Jz\",\"profileImage\":\"CommentView_profileImage__10sCg\",\"name\":\"CommentView_name__3sZsS\",\"reportDeleteContainer\":\"CommentView_reportDeleteContainer__3EBps\",\"commentText\":\"CommentView_commentText__2Brur\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rootContainer\":\"RecordWorkout_rootContainer__1fdbG\",\"contentContainer\":\"RecordWorkout_contentContainer__1dsnn\",\"eventNameAndChapterContainer\":\"RecordWorkout_eventNameAndChapterContainer__2UgPW\",\"chapterName\":\"RecordWorkout_chapterName__2gBgL\",\"calendarContainer\":\"RecordWorkout_calendarContainer__15eMR\",\"timeInputsContainer\":\"RecordWorkout_timeInputsContainer__34nUV\",\"stepsInput\":\"RecordWorkout_stepsInput__1LNat\",\"inputMinutes\":\"RecordWorkout_inputMinutes__IATED\",\"submitButtonWrapper\":\"RecordWorkout_submitButtonWrapper__WH2_0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"BlockedUsers_container__2HPnV\",\"modal\":\"BlockedUsers_modal__uJUt3\",\"root\":\"BlockedUsers_root__3dZGV\",\"menuButton\":\"BlockedUsers_menuButton__3O9W5\",\"title\":\"BlockedUsers_title__2ca2w\",\"toolbar\":\"BlockedUsers_toolbar__2h80B\",\"dangerIconWrapper\":\"BlockedUsers_dangerIconWrapper__K4hVv\",\"button\":\"BlockedUsers_button__3WbJs\",\"verticalMargin\":\"BlockedUsers_verticalMargin__2YtPt\",\"password\":\"BlockedUsers_password__2CshF\",\"tintColor\":\"BlockedUsers_tintColor__2gP_b\",\"privacyPolicyLabel\":\"BlockedUsers_privacyPolicyLabel__2H1zc\",\"contentContainer\":\"BlockedUsers_contentContainer__3CmOZ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loadingContainer\":\"Loading_loadingContainer__3Lbpi\",\"notFullLoadingContainer\":\"Loading_notFullLoadingContainer__3RGxa\",\"none\":\"Loading_none__3-c7a\",\"rightContainer\":\"Loading_rightContainer__1I_U9\",\"transparent\":\"Loading_transparent__e65KS\",\"footerContainer\":\"Loading_footerContainer__3RQjo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PlacesList_container__27JQ2\",\"suggestionContainer\":\"PlacesList_suggestionContainer__H5eAI\",\"currentLocationText\":\"PlacesList_currentLocationText__YO-TV\",\"loadingContainer\":\"PlacesList_loadingContainer__3lttU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"EventListItem_container__1fPdf\",\"dateContainer\":\"EventListItem_dateContainer__3dqfQ\",\"infoContainer\":\"EventListItem_infoContainer__3x1P0\",\"titleContainer\":\"EventListItem_titleContainer__3wosI\",\"virtualIcon\":\"EventListItem_virtualIcon__1c0UX\",\"canceledEventWrapper\":\"EventListItem_canceledEventWrapper__1ixGt\",\"canceledEvent\":\"EventListItem_canceledEvent__aUUtT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headerContainer\":\"Header_headerContainer__2Msqc\",\"noBottomPadding\":\"Header_noBottomPadding__2U0XI\",\"lessHeightContainer\":\"Header_lessHeightContainer__2D5fl\",\"headerTextContainer\":\"Header_headerTextContainer__12npV\",\"noRightTextPadding\":\"Header_noRightTextPadding__2hNR-\",\"leftAlignText\":\"Header_leftAlignText__3zF_X\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"labelContainer\":\"CustomPicker_labelContainer__2gxLO\",\"label\":\"CustomPicker_label__1pDW4\",\"contentContainer\":\"CustomPicker_contentContainer__nUoBW\",\"invisible\":\"CustomPicker_invisible__2jlwB\",\"h2\":\"CustomPicker_h2__3PCkQ\",\"selected\":\"CustomPicker_selected__1z2Hy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"GroupCard_container__Gck7u\",\"containerHorizontal\":\"GroupCard_containerHorizontal__1wZlX\",\"photo\":\"GroupCard_photo__3y-Qy\",\"favoritesPhoto\":\"GroupCard_favoritesPhoto__bsu5R\",\"textContainerSearch\":\"GroupCard_textContainerSearch__NZReW\",\"name\":\"GroupCard_name__29WiA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NotificationListItem_container__35c71\",\"textContainer\":\"NotificationListItem_textContainer__fLb1m\",\"userImageContainer\":\"NotificationListItem_userImageContainer__1KWYe\",\"profileImage\":\"NotificationListItem_profileImage__YhYs0\",\"followContainer\":\"NotificationListItem_followContainer__3vrZh\",\"unFollowContainer\":\"NotificationListItem_unFollowContainer__3psTY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"RadioFormOption_container__1uMWd\",\"radioInput\":\"RadioFormOption_radioInput__2QadZ\",\"error\":\"RadioFormOption_error__1fV3q\",\"inlineContainer\":\"RadioFormOption_inlineContainer__gtWNl\",\"valueText\":\"RadioFormOption_valueText__WMfyc\",\"icon\":\"RadioFormOption_icon__2nbxw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"none\":\"NavigationColumn_none__250W2\",\"container\":\"NavigationColumn_container__2fQoD\",\"navLogo\":\"NavigationColumn_navLogo__1dmV3\",\"navLinkContainer\":\"NavigationColumn_navLinkContainer__2ReMs\",\"settingsContainer\":\"NavigationColumn_settingsContainer__12JZ_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contentContainer\":\"ChallengeBadges_contentContainer__uFOh9\",\"badgeContainer\":\"ChallengeBadges_badgeContainer__M4f9H\",\"imageContainer\":\"ChallengeBadges_imageContainer__8w9uQ\",\"profileImage\":\"ChallengeBadges_profileImage__3pC0D\",\"dateContainer\":\"ChallengeBadges_dateContainer__1SAai\",\"dateText\":\"ChallengeBadges_dateText__2Z2Ne\"};","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nvar geocodeByAddress = (exports.geocodeByAddress = function geocodeByAddress(\n address,\n) {\n var geocoder = new window.google.maps.Geocoder();\n var OK = window.google.maps.GeocoderStatus.OK;\n\n return new Promise(function (resolve, reject) {\n geocoder.geocode({address: address}, function (results, status) {\n if (status !== OK) {\n reject(status);\n }\n resolve(results);\n });\n });\n});\n\nvar getLatLng = (exports.getLatLng = function getLatLng(result) {\n return new Promise(function (resolve, reject) {\n try {\n var latLng = {\n lat: result.geometry.location.lat(),\n lng: result.geometry.location.lng(),\n };\n resolve(latLng);\n } catch (e) {\n reject(e);\n }\n });\n});\n\nvar geocodeByPlaceId = (exports.geocodeByPlaceId = function geocodeByPlaceId(\n placeId,\n) {\n var geocoder = new window.google.maps.Geocoder();\n var OK = window.google.maps.GeocoderStatus.OK;\n\n return new Promise(function (resolve, reject) {\n geocoder.geocode({placeId: placeId}, function (results, status) {\n if (status !== OK) {\n reject(status);\n }\n resolve(results);\n });\n });\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"PasswordUpdate_container__3bxCw\",\"modal\":\"PasswordUpdate_modal__3llYZ\",\"contentContainer\":\"PasswordUpdate_contentContainer__jlxK2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imgModalContainer\":\"PhotoView_imgModalContainer__3XCpJ\",\"modal\":\"PhotoView_modal__15QxI\",\"modalXContainer\":\"PhotoView_modalXContainer__3E3C0\",\"postImage\":\"PhotoView_postImage__2H6Jo\",\"likeContainer\":\"PhotoView_likeContainer__FvQHg\",\"likeIcon\":\"PhotoView_likeIcon__78N23\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"TextInput_container__3wwYp\",\"reducedMargin\":\"TextInput_reducedMargin__-4yno\",\"label\":\"TextInput_label__16tsb\",\"textInput\":\"TextInput_textInput__1ZPI7\",\"textInputError\":\"TextInput_textInputError__2wR5l\",\"form-file\":\"TextInput_form-file__22nua\",\"has-value\":\"TextInput_has-value__12P4q\",\"characterCount\":\"TextInput_characterCount__1h39o\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ToggleSwitch_container__1KWjS\",\"switch\":\"ToggleSwitch_switch__2K4Wg\",\"slider\":\"ToggleSwitch_slider__1CGJR\",\"description\":\"ToggleSwitch_description__jbVpG\",\"greenBackground\":\"ToggleSwitch_greenBackground__IkitS\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchContainer\":\"Events_searchContainer__Fob1j\",\"filterContainer\":\"Events_filterContainer__WmTqz\",\"container\":\"Events_container__1D2xV\",\"nonPaddingContainer\":\"Events_nonPaddingContainer__3uFYy\",\"eventListContainer\":\"Events_eventListContainer__3dbn0\",\"emptyContainer\":\"Events_emptyContainer__3KmJ7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"EventFilters_container__1mLRS\",\"modal\":\"EventFilters_modal__1Dc09\",\"tabsContainer\":\"EventFilters_tabsContainer__2jKFv\",\"contentScroll\":\"EventFilters_contentScroll__3ho3T\",\"contentContainer\":\"EventFilters_contentContainer__25iDK\",\"distanceLabel\":\"EventFilters_distanceLabel__2jZSV\",\"buttonContainer\":\"EventFilters_buttonContainer__22rV0\",\"resetFilterContainer\":\"EventFilters_resetFilterContainer__Uc7hi\",\"resetFilterText\":\"EventFilters_resetFilterText__zNtr4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"GroupContainer_container__3Lqz6\",\"favoritesContainer\":\"GroupContainer_favoritesContainer__3pvCu\",\"title\":\"GroupContainer_title__3NAJ3\",\"scrollContainer\":\"GroupContainer_scrollContainer__3n4pZ\",\"spinnerContainer\":\"GroupContainer_spinnerContainer__3DCi3\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MenuButton_container__2mXZ1\",\"button\":\"MenuButton_button__2lNo7\",\"selectedValue\":\"MenuButton_selectedValue__1ymEm\",\"menu\":\"MenuButton_menu__n0Ygq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"WorkoutLog_container__GILHj\",\"content\":\"WorkoutLog_content__2VEgi\",\"floatingBtnContainer\":\"WorkoutLog_floatingBtnContainer__BkUTg\",\"addIcon\":\"WorkoutLog_addIcon__1qqZL\",\"createPostContainer\":\"WorkoutLog_createPostContainer__2V6tH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"userImageContainer\":\"EditMyProfile_userImageContainer__3zykg\",\"contentContainer\":\"EditMyProfile_contentContainer__1Jqhz\",\"contentContainerBox\":\"EditMyProfile_contentContainerBox__3Djki\",\"rowButton\":\"EditMyProfile_rowButton__1SdVf\",\"etsContainer\":\"EditMyProfile_etsContainer__2T-dz\",\"preferredChapterContainer\":\"EditMyProfile_preferredChapterContainer__2QrmV\",\"label\":\"EditMyProfile_label__BtljW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"FormattedPostText_container__ru-Cz\",\"postText\":\"FormattedPostText_postText__3FjUv\",\"fullName\":\"FormattedPostText_fullName__3_JNu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"attendeesContainer\":\"AvatarList_attendeesContainer__38UCy\",\"attendees\":\"AvatarList_attendees__3BK0H\",\"attendeesCount\":\"AvatarList_attendeesCount__2q5dF\",\"attendeesCountIcon\":\"AvatarList_attendeesCountIcon__3aXNA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"RankingRow_container__10aj4\",\"leftContainer\":\"RankingRow_leftContainer__avGuA\",\"imgContainer\":\"RankingRow_imgContainer__2IILY\",\"profilePhoto\":\"RankingRow_profilePhoto__2I_VY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"videoPlayerContainer\":\"VideoPlayerWithChat_videoPlayerContainer__39GkI\",\"videoPlayer\":\"VideoPlayerWithChat_videoPlayer__3TSqo\",\"chatBoxContainer\":\"VideoPlayerWithChat_chatBoxContainer__3DkMZ\",\"chatBox\":\"VideoPlayerWithChat_chatBox__1dGQ-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"imageNotFirst\":\"AttendeesAndFollowedUsers_imageNotFirst__XQnVO\",\"imageFirst\":\"AttendeesAndFollowedUsers_imageFirst__3uRaT\",\"imagesContainer\":\"AttendeesAndFollowedUsers_imagesContainer__1AQ9B\",\"followingAttendeesContainer\":\"AttendeesAndFollowedUsers_followingAttendeesContainer__29qA2\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"GroupMessages_container__3WFDR\",\"topHandContainer\":\"GroupMessages_topHandContainer__3ftx1\",\"bottomHandContainer\":\"GroupMessages_bottomHandContainer__eEAgO\",\"bottomText\":\"GroupMessages_bottomText__3xSBt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"RadioForm_container__3bR0k\",\"radioInput\":\"RadioForm_radioInput__2qHQK\",\"error\":\"RadioForm_error__3yovc\",\"inlineContainer\":\"RadioForm_inlineContainer__o71Ak\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"AddressesList_container__1Dug7\",\"suggestionContainer\":\"AddressesList_suggestionContainer__mKhPP\",\"address\":\"AddressesList_address__13OqQ\",\"currentLocationText\":\"AddressesList_currentLocationText__1gIy0\",\"loadingContainer\":\"AddressesList_loadingContainer__2-QdE\"};","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/logo512.f5df0f7e.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"TextArea_container__2nI_B\",\"textArea\":\"TextArea_textArea__fp9zv\",\"characterCount\":\"TextArea_characterCount__GCUGM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"ShareChallengeBox_container__2mSd8\",\"eventNameTitle\":\"ShareChallengeBox_eventNameTitle__13NNE\",\"detailsContainer\":\"ShareChallengeBox_detailsContainer__2z68c\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contHolder\":\"CreateCommentBar_contHolder__NL_qF\",\"container\":\"CreateCommentBar_container__2B6jT\",\"commentInput\":\"CreateCommentBar_commentInput__2EKsJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"instructionsMsg\":\"SearchGroupsList_instructionsMsg__2wv14\",\"container\":\"SearchGroupsList_container__26wpF\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SearchSection_container__1d3Ut\",\"sectionItem\":\"SearchSection_sectionItem__tDaZa\",\"emptyContainer\":\"SearchSection_emptyContainer__1XPKT\"};","module.exports = __webpack_public_path__ + \"static/media/favicon.d124163b.ico\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"floatingBtnContainer\":\"CreatePostButton_floatingBtnContainer__3zcpi\",\"addIcon\":\"CreatePostButton_addIcon__1hPxx\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"coverImgContainer\":\"DetailHeader_coverImgContainer__3BYbm\",\"navigation\":\"DetailHeader_navigation__1rPcG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"floatingBtnContainer\":\"CreateEventButton_floatingBtnContainer__1WKa4\",\"addIcon\":\"CreateEventButton_addIcon__2YTb-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"EventCreationChoices_container__Vb5yP\",\"buttonWrapper\":\"EventCreationChoices_buttonWrapper__3NI3n\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Groups_container__3IG4u\",\"searchContainer\":\"Groups_searchContainer__XzV01\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"lessText\":\"ExpandingText_lessText__3jcH7\",\"showMoreLink\":\"ExpandingText_showMoreLink__2mzFT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MyAppSettings_container__2vTBj\",\"modal\":\"MyAppSettings_modal__Spq0I\",\"content\":\"MyAppSettings_content__3Rb3A\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"rowButton\":\"RWBRowButton_rowButton__2wpVg\",\"label\":\"RWBRowButton_label__cwAkn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Login_container__3nQCv\",\"logo\":\"Login_logo__3YmU4\",\"forgotPasswordText\":\"Login_forgotPasswordText__dlly2\",\"socialLoginContainer\":\"Login_socialLoginContainer__NJhMP\",\"socialLoginIcons\":\"Login_socialLoginIcons__3SJRS\"};","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/opengraphcover.cba6eac6.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"postLink\":\"HyperLink_postLink__1g4zg\"};","module.exports = __webpack_public_path__ + \"static/media/EventCreationExample.0c8b8afe.png\";","module.exports = __webpack_public_path__ + \"static/media/SocialProfileExample.1248252d.png\";","module.exports = __webpack_public_path__ + \"static/media/UserFeedExample.c78df862.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchContainer\":\"GroupMembers_searchContainer__2wN5T\",\"searchLabel\":\"GroupMembers_searchLabel__3Ibk8\",\"container\":\"GroupMembers_container__3XZdz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"label\":\"GroupMembersList_label__3dcuI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Notifications_container__ti2Dl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Profile_container__7_vZc\",\"emptyContainer\":\"Profile_emptyContainer__1dgXL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"leaderboardContainer\":\"ChallengeLeaderboard_leaderboardContainer__pmb4e\"};","!function(a,i){\"use strict\";\"object\"==typeof module&&module.exports?module.exports=i(require(\"moment\")):\"function\"==typeof define&&define.amd?define([\"moment\"],i):i(a.moment)}(this,function(a){\"use strict\";void 0===a.version&&a.default&&(a=a.default);var i,e={},r={},o={},c={},A={};a&&\"string\"==typeof a.version||L(\"Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/\");var n=a.version.split(\".\"),t=+n[0],s=+n[1];function u(a){return a>96?a-87:a>64?a-29:a-48}function m(a){var i=0,e=a.split(\".\"),r=e[0],o=e[1]||\"\",c=1,A=0,n=1;for(45===a.charCodeAt(0)&&(i=1,n=-1);i3){var i=c[T(a)];if(i)return i;L(\"Moment Timezone found \"+a+\" from the Intl api, but did not have that data loaded.\")}}catch(a){}var e,r,o,A=function(){var a,i,e,r=(new Date).getFullYear()-2,o=new b(new Date(r,0,1)),c=[o];for(e=1;e<48;e++)(i=new b(new Date(r,e,1))).offset!==o.offset&&(a=g(o,i),c.push(a),c.push(new b(new Date(a.at+6e4)))),o=i;for(e=0;e<4;e++)c.push(new b(new Date(r+e,0,1))),c.push(new b(new Date(r+e,6,1)));return c}(),n=A.length,t=P(A),s=[];for(r=0;r0?s[0].zone.name:void 0}function T(a){return(a||\"\").toLowerCase().replace(/\\//g,\"_\")}function _(a){var i,r,o,A;for(\"string\"==typeof a&&(a=[a]),i=0;i= 2.6.0. You are using Moment.js \"+a.version+\". See momentjs.com\"),M.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){var i,e=+a,r=this.untils;for(i=0;ir&&y.moveInvalidForward&&(i=r),c0&&(this._z=null),N.apply(this,arguments)}),a.tz.setDefault=function(i){return(t<2||2===t&&s<9)&&L(\"Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js \"+a.version+\".\"),a.defaultZone=i?k(i):null,a};var K=a.momentProperties;return\"[object Array]\"===Object.prototype.toString.call(K)?(K.push(\"_z\"),K.push(\"_a\")):K&&(K._z=null),C({version:\"2020a\",zones:[\"Africa/Abidjan|GMT|0|0||48e5\",\"Africa/Nairobi|EAT|-30|0||47e5\",\"Africa/Algiers|CET|-10|0||26e5\",\"Africa/Lagos|WAT|-10|0||17e6\",\"Africa/Maputo|CAT|-20|0||26e5\",\"Africa/Cairo|EET|-20|0||15e6\",\"Africa/Casablanca|+00 +01|0 -10|010101010101010101010101010101|1O9e0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5\",\"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\"Africa/Johannesburg|SAST|-20|0||84e5\",\"Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5\",\"Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|\",\"Africa/Windhoek|CAT WAT|-20 -10|0101010|1Oc00 11B0 1nX0 11B0 1nX0 11B0|32e4\",\"America/Adak|HST HDT|a0 90|01010101010101010101010|1O100 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1O0X0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\"America/Santo_Domingo|AST|40|0||29e5\",\"America/Fortaleza|-03|30|0||34e5\",\"America/Asuncion|-03 -04|30 40|01010101010101010101010|1O6r0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0|28e5\",\"America/Panama|EST|50|0||15e5\",\"America/Mexico_City|CST CDT|60 50|01010101010101010101010|1Oc80 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\"America/Managua|CST|60|0||22e5\",\"America/La_Paz|-04|40|0||19e5\",\"America/Lima|-05|50|0||11e6\",\"America/Denver|MST MDT|70 60|01010101010101010101010|1O0V0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\"America/Campo_Grande|-03 -04|30 40|0101010101|1NTf0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4\",\"America/Cancun|CST EST|60 50|01|1NKU0|63e4\",\"America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5\",\"America/Chicago|CST CDT|60 50|01010101010101010101010|1O0U0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|MST MDT|70 60|01010101010101010101010|1Oc90 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\"America/Phoenix|MST|70|0||42e5\",\"America/Whitehorse|PST PDT MST|80 70 70|010101010102|1O0W0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|23e3\",\"America/New_York|EST EDT|50 40|01010101010101010101010|1O0T0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1O0W0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\"America/Fort_Nelson|PST MST|80 70|01|1O0W0|39e2\",\"America/Halifax|AST ADT|40 30|01010101010101010101010|1O0S0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\"America/Godthab|-03 -02|30 20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\"America/Grand_Turk|EST EDT AST|50 40 40|0121010101010101010|1O0T0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\"America/Havana|CST CDT|50 40|01010101010101010101010|1O0R0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\"America/Metlakatla|PST AKST AKDT|80 90 80|01212120121212121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Miquelon|-03 -02|30 20|01010101010101010101010|1O0R0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\"America/Montevideo|-02 -03|20 30|01|1O0Q0|17e5\",\"America/Noronha|-02|20|0||30e2\",\"America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1O0T0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"Antarctica/Palmer|-03 -04|30 40|010|1QSr0 Ap0|40\",\"America/Santiago|-03 -04|30 40|010101010101010101010|1QSr0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|62e5\",\"America/Sao_Paulo|-02 -03|20 30|0101010101|1NTe0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6\",\"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1O0Ru 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"Antarctica/Casey|+08 +11|-80 -b0|010|1RWg0 3m10|10\",\"Asia/Bangkok|+07|-70|0||15e6\",\"Asia/Vladivostok|+10|-a0|0||60e4\",\"Pacific/Bougainville|+11|-b0|0||18e4\",\"Asia/Tashkent|+05|-50|0||23e5\",\"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|14e5\",\"Asia/Baghdad|+03|-30|0||66e5\",\"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\"Asia/Dhaka|+06|-60|0||16e6\",\"Asia/Amman|EET EEST|-20 -30|01010101010101010101010|1O8m0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0|25e5\",\"Asia/Kamchatka|+12|-c0|0||18e4\",\"Asia/Baku|+04 +05|-40 -50|010|1O9c0 1o00|27e5\",\"Asia/Barnaul|+06 +07|-60 -70|01|1QyI0|\",\"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1O9a0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\"Asia/Kuala_Lumpur|+08|-80|0||71e5\",\"Asia/Kolkata|IST|-5u|0||15e6\",\"Asia/Chita|+08 +09|-80 -90|01|1QyG0|33e4\",\"Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5\",\"Asia/Shanghai|CST|-80|0||23e6\",\"Asia/Colombo|+0530|-5u|0||22e5\",\"Asia/Damascus|EET EEST|-20 -30|01010101010101010101010|1O8m0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|26e5\",\"Asia/Yakutsk|+09|-90|0||28e4\",\"Asia/Dubai|+04|-40|0||39e5\",\"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101201010101010101010|1O9d0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\",\"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1O8K0 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 11c0 1oo0 11c0 1rc0 Wo0 1rc0 Wo0 1rc0 11c0 1oo0 11c0 1oo0 11c0 1oo0|18e5\",\"Asia/Hong_Kong|HKT|-80|0||73e5\",\"Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3\",\"Europe/Istanbul|EET EEST +03|-20 -30 -30|01012|1O9d0 1tA0 U00 15w0|13e6\",\"Asia/Jakarta|WIB|-70|0||31e6\",\"Asia/Jayapura|WIT|-90|0||26e4\",\"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1O8o0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\"Asia/Kabul|+0430|-4u|0||46e5\",\"Asia/Karachi|PKT|-50|0||24e6\",\"Asia/Kathmandu|+0545|-5J|0||12e5\",\"Asia/Magadan|+10 +11|-a0 -b0|01|1QJQ0|95e3\",\"Asia/Makassar|WITA|-80|0||15e5\",\"Asia/Manila|PST|-80|0||24e6\",\"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\"Asia/Novosibirsk|+06 +07|-60 -70|01|1Rmk0|15e5\",\"Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5\",\"Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4\",\"Asia/Rangoon|+0630|-6u|0||48e5\",\"Asia/Sakhalin|+10 +11|-a0 -b0|01|1QyE0|58e4\",\"Asia/Seoul|KST|-90|0||23e6\",\"Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1O6ku 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0|14e6\",\"Asia/Tokyo|JST|-90|0||38e6\",\"Asia/Tomsk|+06 +07|-60 -70|01|1QXU0|10e5\",\"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\"Atlantic/Cape_Verde|-01|10|0||50e4\",\"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1ObQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1ObQu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST|-a0|0||20e5\",\"Australia/Darwin|ACST|-9u|0||12e4\",\"Australia/Eucla|+0845|-8J|0||368\",\"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1ObP0 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu|347\",\"Australia/Perth|AWST|-80|0||18e5\",\"Pacific/Easter|-05 -06|50 60|010101010101010101010|1QSr0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|30e2\",\"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Etc/GMT-1|+01|-10|0||\",\"Pacific/Fakaofo|+13|-d0|0||483\",\"Pacific/Kiritimati|+14|-e0|0||51e2\",\"Etc/GMT-2|+02|-20|0||\",\"Pacific/Tahiti|-10|a0|0||18e4\",\"Pacific/Niue|-11|b0|0||12e2\",\"Etc/GMT+12|-12|c0|0||\",\"Pacific/Galapagos|-06|60|0||25e3\",\"Etc/GMT+7|-07|70|0||\",\"Pacific/Pitcairn|-08|80|0||56\",\"Pacific/Gambier|-09|90|0||125\",\"Etc/UTC|UTC|0|0||\",\"Europe/Ulyanovsk|+03 +04|-30 -40|01|1QyL0|13e5\",\"Europe/London|GMT BST|0 -10|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1O9c0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\"Europe/Moscow|MSK|-30|0||16e6\",\"Europe/Saratov|+03 +04|-30 -40|01|1Sfz0|\",\"Europe/Volgograd|+03 +04|-30 -40|01|1WQL0|10e5\",\"Pacific/Honolulu|HST|a0|0||37e4\",\"MET|MET MEST|-10 -20|01010101010101010101010|1O9d0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|\",\"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|600\",\"Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101010|1ObO0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00|37e3\",\"Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101010|1NF20 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 20o0 s00 20o0 pc0 20o0 pc0 20o0 pc0 20o0 pc0 20o0|88e4\",\"Pacific/Guam|ChST|-a0|0||17e4\",\"Pacific/Marquesas|-0930|9u|0||86e2\",\"Pacific/Pago_Pago|SST|b0|0||37e2\",\"Pacific/Norfolk|+1130 +11 +12|-bu -b0 -c0|012121212121212|1PoCu 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0|25e4\",\"Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3\"],links:[\"Africa/Abidjan|Africa/Accra\",\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Bissau\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Monrovia\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|America/Danmarkshavn\",\"Africa/Abidjan|Atlantic/Reykjavik\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Abidjan|Etc/GMT\",\"Africa/Abidjan|Etc/GMT+0\",\"Africa/Abidjan|Etc/GMT-0\",\"Africa/Abidjan|Etc/GMT0\",\"Africa/Abidjan|Etc/Greenwich\",\"Africa/Abidjan|GMT\",\"Africa/Abidjan|GMT+0\",\"Africa/Abidjan|GMT-0\",\"Africa/Abidjan|GMT0\",\"Africa/Abidjan|Greenwich\",\"Africa/Abidjan|Iceland\",\"Africa/Algiers|Africa/Tunis\",\"Africa/Cairo|Africa/Tripoli\",\"Africa/Cairo|Egypt\",\"Africa/Cairo|Europe/Kaliningrad\",\"Africa/Cairo|Libya\",\"Africa/Casablanca|Africa/El_Aaiun\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Ndjamena\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Maputo|Africa/Blantyre\",\"Africa/Maputo|Africa/Bujumbura\",\"Africa/Maputo|Africa/Gaborone\",\"Africa/Maputo|Africa/Harare\",\"Africa/Maputo|Africa/Kigali\",\"Africa/Maputo|Africa/Lubumbashi\",\"Africa/Maputo|Africa/Lusaka\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Juba\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|America/Juneau\",\"America/Anchorage|America/Nome\",\"America/Anchorage|America/Sitka\",\"America/Anchorage|America/Yakutat\",\"America/Anchorage|US/Alaska\",\"America/Campo_Grande|America/Cuiaba\",\"America/Chicago|America/Indiana/Knox\",\"America/Chicago|America/Indiana/Tell_City\",\"America/Chicago|America/Knox_IN\",\"America/Chicago|America/Matamoros\",\"America/Chicago|America/Menominee\",\"America/Chicago|America/North_Dakota/Beulah\",\"America/Chicago|America/North_Dakota/Center\",\"America/Chicago|America/North_Dakota/New_Salem\",\"America/Chicago|America/Rainy_River\",\"America/Chicago|America/Rankin_Inlet\",\"America/Chicago|America/Resolute\",\"America/Chicago|America/Winnipeg\",\"America/Chicago|CST6CDT\",\"America/Chicago|Canada/Central\",\"America/Chicago|US/Central\",\"America/Chicago|US/Indiana-Starke\",\"America/Chihuahua|America/Mazatlan\",\"America/Chihuahua|Mexico/BajaSur\",\"America/Denver|America/Boise\",\"America/Denver|America/Cambridge_Bay\",\"America/Denver|America/Edmonton\",\"America/Denver|America/Inuvik\",\"America/Denver|America/Ojinaga\",\"America/Denver|America/Shiprock\",\"America/Denver|America/Yellowknife\",\"America/Denver|Canada/Mountain\",\"America/Denver|MST7MDT\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Fortaleza|America/Araguaina\",\"America/Fortaleza|America/Argentina/Buenos_Aires\",\"America/Fortaleza|America/Argentina/Catamarca\",\"America/Fortaleza|America/Argentina/ComodRivadavia\",\"America/Fortaleza|America/Argentina/Cordoba\",\"America/Fortaleza|America/Argentina/Jujuy\",\"America/Fortaleza|America/Argentina/La_Rioja\",\"America/Fortaleza|America/Argentina/Mendoza\",\"America/Fortaleza|America/Argentina/Rio_Gallegos\",\"America/Fortaleza|America/Argentina/Salta\",\"America/Fortaleza|America/Argentina/San_Juan\",\"America/Fortaleza|America/Argentina/San_Luis\",\"America/Fortaleza|America/Argentina/Tucuman\",\"America/Fortaleza|America/Argentina/Ushuaia\",\"America/Fortaleza|America/Bahia\",\"America/Fortaleza|America/Belem\",\"America/Fortaleza|America/Buenos_Aires\",\"America/Fortaleza|America/Catamarca\",\"America/Fortaleza|America/Cayenne\",\"America/Fortaleza|America/Cordoba\",\"America/Fortaleza|America/Jujuy\",\"America/Fortaleza|America/Maceio\",\"America/Fortaleza|America/Mendoza\",\"America/Fortaleza|America/Paramaribo\",\"America/Fortaleza|America/Recife\",\"America/Fortaleza|America/Rosario\",\"America/Fortaleza|America/Santarem\",\"America/Fortaleza|Antarctica/Rothera\",\"America/Fortaleza|Atlantic/Stanley\",\"America/Fortaleza|Etc/GMT+3\",\"America/Godthab|America/Nuuk\",\"America/Halifax|America/Glace_Bay\",\"America/Halifax|America/Goose_Bay\",\"America/Halifax|America/Moncton\",\"America/Halifax|America/Thule\",\"America/Halifax|Atlantic/Bermuda\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/La_Paz|America/Boa_Vista\",\"America/La_Paz|America/Guyana\",\"America/La_Paz|America/Manaus\",\"America/La_Paz|America/Porto_Velho\",\"America/La_Paz|Brazil/West\",\"America/La_Paz|Etc/GMT+4\",\"America/Lima|America/Bogota\",\"America/Lima|America/Eirunepe\",\"America/Lima|America/Guayaquil\",\"America/Lima|America/Porto_Acre\",\"America/Lima|America/Rio_Branco\",\"America/Lima|Brazil/Acre\",\"America/Lima|Etc/GMT+5\",\"America/Los_Angeles|America/Ensenada\",\"America/Los_Angeles|America/Santa_Isabel\",\"America/Los_Angeles|America/Tijuana\",\"America/Los_Angeles|America/Vancouver\",\"America/Los_Angeles|Canada/Pacific\",\"America/Los_Angeles|Mexico/BajaNorte\",\"America/Los_Angeles|PST8PDT\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Managua|America/Belize\",\"America/Managua|America/Costa_Rica\",\"America/Managua|America/El_Salvador\",\"America/Managua|America/Guatemala\",\"America/Managua|America/Regina\",\"America/Managua|America/Swift_Current\",\"America/Managua|America/Tegucigalpa\",\"America/Managua|Canada/Saskatchewan\",\"America/Mexico_City|America/Bahia_Banderas\",\"America/Mexico_City|America/Merida\",\"America/Mexico_City|America/Monterrey\",\"America/Mexico_City|Mexico/General\",\"America/New_York|America/Detroit\",\"America/New_York|America/Fort_Wayne\",\"America/New_York|America/Indiana/Indianapolis\",\"America/New_York|America/Indiana/Marengo\",\"America/New_York|America/Indiana/Petersburg\",\"America/New_York|America/Indiana/Vevay\",\"America/New_York|America/Indiana/Vincennes\",\"America/New_York|America/Indiana/Winamac\",\"America/New_York|America/Indianapolis\",\"America/New_York|America/Iqaluit\",\"America/New_York|America/Kentucky/Louisville\",\"America/New_York|America/Kentucky/Monticello\",\"America/New_York|America/Louisville\",\"America/New_York|America/Montreal\",\"America/New_York|America/Nassau\",\"America/New_York|America/Nipigon\",\"America/New_York|America/Pangnirtung\",\"America/New_York|America/Thunder_Bay\",\"America/New_York|America/Toronto\",\"America/New_York|Canada/Eastern\",\"America/New_York|EST5EDT\",\"America/New_York|US/East-Indiana\",\"America/New_York|US/Eastern\",\"America/New_York|US/Michigan\",\"America/Noronha|Atlantic/South_Georgia\",\"America/Noronha|Brazil/DeNoronha\",\"America/Noronha|Etc/GMT+2\",\"America/Panama|America/Atikokan\",\"America/Panama|America/Cayman\",\"America/Panama|America/Coral_Harbour\",\"America/Panama|America/Jamaica\",\"America/Panama|EST\",\"America/Panama|Jamaica\",\"America/Phoenix|America/Creston\",\"America/Phoenix|America/Dawson_Creek\",\"America/Phoenix|America/Hermosillo\",\"America/Phoenix|MST\",\"America/Phoenix|US/Arizona\",\"America/Santiago|Chile/Continental\",\"America/Santo_Domingo|America/Anguilla\",\"America/Santo_Domingo|America/Antigua\",\"America/Santo_Domingo|America/Aruba\",\"America/Santo_Domingo|America/Barbados\",\"America/Santo_Domingo|America/Blanc-Sablon\",\"America/Santo_Domingo|America/Curacao\",\"America/Santo_Domingo|America/Dominica\",\"America/Santo_Domingo|America/Grenada\",\"America/Santo_Domingo|America/Guadeloupe\",\"America/Santo_Domingo|America/Kralendijk\",\"America/Santo_Domingo|America/Lower_Princes\",\"America/Santo_Domingo|America/Marigot\",\"America/Santo_Domingo|America/Martinique\",\"America/Santo_Domingo|America/Montserrat\",\"America/Santo_Domingo|America/Port_of_Spain\",\"America/Santo_Domingo|America/Puerto_Rico\",\"America/Santo_Domingo|America/St_Barthelemy\",\"America/Santo_Domingo|America/St_Kitts\",\"America/Santo_Domingo|America/St_Lucia\",\"America/Santo_Domingo|America/St_Thomas\",\"America/Santo_Domingo|America/St_Vincent\",\"America/Santo_Domingo|America/Tortola\",\"America/Santo_Domingo|America/Virgin\",\"America/Sao_Paulo|Brazil/East\",\"America/St_Johns|Canada/Newfoundland\",\"America/Whitehorse|America/Dawson\",\"America/Whitehorse|Canada/Yukon\",\"Antarctica/Palmer|America/Punta_Arenas\",\"Asia/Baghdad|Antarctica/Syowa\",\"Asia/Baghdad|Asia/Aden\",\"Asia/Baghdad|Asia/Bahrain\",\"Asia/Baghdad|Asia/Kuwait\",\"Asia/Baghdad|Asia/Qatar\",\"Asia/Baghdad|Asia/Riyadh\",\"Asia/Baghdad|Etc/GMT-3\",\"Asia/Baghdad|Europe/Kirov\",\"Asia/Baghdad|Europe/Minsk\",\"Asia/Bangkok|Antarctica/Davis\",\"Asia/Bangkok|Asia/Ho_Chi_Minh\",\"Asia/Bangkok|Asia/Krasnoyarsk\",\"Asia/Bangkok|Asia/Novokuznetsk\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Saigon\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Bangkok|Etc/GMT-7\",\"Asia/Bangkok|Indian/Christmas\",\"Asia/Dhaka|Antarctica/Vostok\",\"Asia/Dhaka|Asia/Almaty\",\"Asia/Dhaka|Asia/Bishkek\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dhaka|Asia/Kashgar\",\"Asia/Dhaka|Asia/Omsk\",\"Asia/Dhaka|Asia/Qostanay\",\"Asia/Dhaka|Asia/Thimbu\",\"Asia/Dhaka|Asia/Thimphu\",\"Asia/Dhaka|Asia/Urumqi\",\"Asia/Dhaka|Etc/GMT-6\",\"Asia/Dhaka|Indian/Chagos\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Dubai|Asia/Tbilisi\",\"Asia/Dubai|Asia/Yerevan\",\"Asia/Dubai|Etc/GMT-4\",\"Asia/Dubai|Europe/Samara\",\"Asia/Dubai|Indian/Mahe\",\"Asia/Dubai|Indian/Mauritius\",\"Asia/Dubai|Indian/Reunion\",\"Asia/Gaza|Asia/Hebron\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jakarta|Asia/Pontianak\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kamchatka|Asia/Anadyr\",\"Asia/Kamchatka|Etc/GMT-12\",\"Asia/Kamchatka|Kwajalein\",\"Asia/Kamchatka|Pacific/Funafuti\",\"Asia/Kamchatka|Pacific/Kwajalein\",\"Asia/Kamchatka|Pacific/Majuro\",\"Asia/Kamchatka|Pacific/Nauru\",\"Asia/Kamchatka|Pacific/Tarawa\",\"Asia/Kamchatka|Pacific/Wake\",\"Asia/Kamchatka|Pacific/Wallis\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Kuala_Lumpur|Asia/Brunei\",\"Asia/Kuala_Lumpur|Asia/Irkutsk\",\"Asia/Kuala_Lumpur|Asia/Kuching\",\"Asia/Kuala_Lumpur|Asia/Singapore\",\"Asia/Kuala_Lumpur|Etc/GMT-8\",\"Asia/Kuala_Lumpur|Singapore\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Rangoon|Indian/Cocos\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|Asia/Macao\",\"Asia/Shanghai|Asia/Macau\",\"Asia/Shanghai|Asia/Taipei\",\"Asia/Shanghai|PRC\",\"Asia/Shanghai|ROC\",\"Asia/Tashkent|Antarctica/Mawson\",\"Asia/Tashkent|Asia/Aqtau\",\"Asia/Tashkent|Asia/Aqtobe\",\"Asia/Tashkent|Asia/Ashgabat\",\"Asia/Tashkent|Asia/Ashkhabad\",\"Asia/Tashkent|Asia/Atyrau\",\"Asia/Tashkent|Asia/Dushanbe\",\"Asia/Tashkent|Asia/Oral\",\"Asia/Tashkent|Asia/Samarkand\",\"Asia/Tashkent|Asia/Yekaterinburg\",\"Asia/Tashkent|Etc/GMT-5\",\"Asia/Tashkent|Indian/Kerguelen\",\"Asia/Tashkent|Indian/Maldives\",\"Asia/Tehran|Iran\",\"Asia/Tokyo|Japan\",\"Asia/Ulaanbaatar|Asia/Choibalsan\",\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\"Asia/Vladivostok|Antarctica/DumontDUrville\",\"Asia/Vladivostok|Asia/Ust-Nera\",\"Asia/Vladivostok|Etc/GMT-10\",\"Asia/Vladivostok|Pacific/Chuuk\",\"Asia/Vladivostok|Pacific/Port_Moresby\",\"Asia/Vladivostok|Pacific/Truk\",\"Asia/Vladivostok|Pacific/Yap\",\"Asia/Yakutsk|Asia/Dili\",\"Asia/Yakutsk|Asia/Khandyga\",\"Asia/Yakutsk|Etc/GMT-9\",\"Asia/Yakutsk|Pacific/Palau\",\"Atlantic/Azores|America/Scoresbysund\",\"Atlantic/Cape_Verde|Etc/GMT+1\",\"Australia/Adelaide|Australia/Broken_Hill\",\"Australia/Adelaide|Australia/South\",\"Australia/Adelaide|Australia/Yancowinna\",\"Australia/Brisbane|Australia/Lindeman\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Darwin|Australia/North\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/Currie\",\"Australia/Sydney|Australia/Hobart\",\"Australia/Sydney|Australia/Melbourne\",\"Australia/Sydney|Australia/NSW\",\"Australia/Sydney|Australia/Tasmania\",\"Australia/Sydney|Australia/Victoria\",\"Etc/UTC|Etc/UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UCT\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Athens|Asia/Nicosia\",\"Europe/Athens|EET\",\"Europe/Athens|Europe/Bucharest\",\"Europe/Athens|Europe/Helsinki\",\"Europe/Athens|Europe/Kiev\",\"Europe/Athens|Europe/Mariehamn\",\"Europe/Athens|Europe/Nicosia\",\"Europe/Athens|Europe/Riga\",\"Europe/Athens|Europe/Sofia\",\"Europe/Athens|Europe/Tallinn\",\"Europe/Athens|Europe/Uzhgorod\",\"Europe/Athens|Europe/Vilnius\",\"Europe/Athens|Europe/Zaporozhye\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Atlantic/Canary\",\"Europe/Lisbon|Atlantic/Faeroe\",\"Europe/Lisbon|Atlantic/Faroe\",\"Europe/Lisbon|Atlantic/Madeira\",\"Europe/Lisbon|Portugal\",\"Europe/Lisbon|WET\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|Europe/Simferopol\",\"Europe/Moscow|W-SU\",\"Europe/Paris|Africa/Ceuta\",\"Europe/Paris|Arctic/Longyearbyen\",\"Europe/Paris|Atlantic/Jan_Mayen\",\"Europe/Paris|CET\",\"Europe/Paris|Europe/Amsterdam\",\"Europe/Paris|Europe/Andorra\",\"Europe/Paris|Europe/Belgrade\",\"Europe/Paris|Europe/Berlin\",\"Europe/Paris|Europe/Bratislava\",\"Europe/Paris|Europe/Brussels\",\"Europe/Paris|Europe/Budapest\",\"Europe/Paris|Europe/Busingen\",\"Europe/Paris|Europe/Copenhagen\",\"Europe/Paris|Europe/Gibraltar\",\"Europe/Paris|Europe/Ljubljana\",\"Europe/Paris|Europe/Luxembourg\",\"Europe/Paris|Europe/Madrid\",\"Europe/Paris|Europe/Malta\",\"Europe/Paris|Europe/Monaco\",\"Europe/Paris|Europe/Oslo\",\"Europe/Paris|Europe/Podgorica\",\"Europe/Paris|Europe/Prague\",\"Europe/Paris|Europe/Rome\",\"Europe/Paris|Europe/San_Marino\",\"Europe/Paris|Europe/Sarajevo\",\"Europe/Paris|Europe/Skopje\",\"Europe/Paris|Europe/Stockholm\",\"Europe/Paris|Europe/Tirane\",\"Europe/Paris|Europe/Vaduz\",\"Europe/Paris|Europe/Vatican\",\"Europe/Paris|Europe/Vienna\",\"Europe/Paris|Europe/Warsaw\",\"Europe/Paris|Europe/Zagreb\",\"Europe/Paris|Europe/Zurich\",\"Europe/Paris|Poland\",\"Europe/Ulyanovsk|Europe/Astrakhan\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Bougainville|Antarctica/Macquarie\",\"Pacific/Bougainville|Asia/Srednekolymsk\",\"Pacific/Bougainville|Etc/GMT-11\",\"Pacific/Bougainville|Pacific/Efate\",\"Pacific/Bougainville|Pacific/Guadalcanal\",\"Pacific/Bougainville|Pacific/Kosrae\",\"Pacific/Bougainville|Pacific/Noumea\",\"Pacific/Bougainville|Pacific/Pohnpei\",\"Pacific/Bougainville|Pacific/Ponape\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Fakaofo|Etc/GMT-13\",\"Pacific/Fakaofo|Pacific/Enderbury\",\"Pacific/Galapagos|Etc/GMT+6\",\"Pacific/Gambier|Etc/GMT+9\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|HST\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kiritimati|Etc/GMT-14\",\"Pacific/Niue|Etc/GMT+11\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Pitcairn|Etc/GMT+8\",\"Pacific/Tahiti|Etc/GMT+10\",\"Pacific/Tahiti|Pacific/Rarotonga\"],countries:[\"AD|Europe/Andorra\",\"AE|Asia/Dubai\",\"AF|Asia/Kabul\",\"AG|America/Port_of_Spain America/Antigua\",\"AI|America/Port_of_Spain America/Anguilla\",\"AL|Europe/Tirane\",\"AM|Asia/Yerevan\",\"AO|Africa/Lagos Africa/Luanda\",\"AQ|Antarctica/Casey Antarctica/Davis Antarctica/DumontDUrville Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Syowa Antarctica/Troll Antarctica/Vostok Pacific/Auckland Antarctica/McMurdo\",\"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia\",\"AS|Pacific/Pago_Pago\",\"AT|Europe/Vienna\",\"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Currie Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla\",\"AW|America/Curacao America/Aruba\",\"AX|Europe/Helsinki Europe/Mariehamn\",\"AZ|Asia/Baku\",\"BA|Europe/Belgrade Europe/Sarajevo\",\"BB|America/Barbados\",\"BD|Asia/Dhaka\",\"BE|Europe/Brussels\",\"BF|Africa/Abidjan Africa/Ouagadougou\",\"BG|Europe/Sofia\",\"BH|Asia/Qatar Asia/Bahrain\",\"BI|Africa/Maputo Africa/Bujumbura\",\"BJ|Africa/Lagos Africa/Porto-Novo\",\"BL|America/Port_of_Spain America/St_Barthelemy\",\"BM|Atlantic/Bermuda\",\"BN|Asia/Brunei\",\"BO|America/La_Paz\",\"BQ|America/Curacao America/Kralendijk\",\"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco\",\"BS|America/Nassau\",\"BT|Asia/Thimphu\",\"BW|Africa/Maputo Africa/Gaborone\",\"BY|Europe/Minsk\",\"BZ|America/Belize\",\"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Blanc-Sablon America/Toronto America/Nipigon America/Thunder_Bay America/Iqaluit America/Pangnirtung America/Atikokan America/Winnipeg America/Rainy_River America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Yellowknife America/Inuvik America/Creston America/Dawson_Creek America/Fort_Nelson America/Vancouver America/Whitehorse America/Dawson\",\"CC|Indian/Cocos\",\"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi\",\"CF|Africa/Lagos Africa/Bangui\",\"CG|Africa/Lagos Africa/Brazzaville\",\"CH|Europe/Zurich\",\"CI|Africa/Abidjan\",\"CK|Pacific/Rarotonga\",\"CL|America/Santiago America/Punta_Arenas Pacific/Easter\",\"CM|Africa/Lagos Africa/Douala\",\"CN|Asia/Shanghai Asia/Urumqi\",\"CO|America/Bogota\",\"CR|America/Costa_Rica\",\"CU|America/Havana\",\"CV|Atlantic/Cape_Verde\",\"CW|America/Curacao\",\"CX|Indian/Christmas\",\"CY|Asia/Nicosia Asia/Famagusta\",\"CZ|Europe/Prague\",\"DE|Europe/Zurich Europe/Berlin Europe/Busingen\",\"DJ|Africa/Nairobi Africa/Djibouti\",\"DK|Europe/Copenhagen\",\"DM|America/Port_of_Spain America/Dominica\",\"DO|America/Santo_Domingo\",\"DZ|Africa/Algiers\",\"EC|America/Guayaquil Pacific/Galapagos\",\"EE|Europe/Tallinn\",\"EG|Africa/Cairo\",\"EH|Africa/El_Aaiun\",\"ER|Africa/Nairobi Africa/Asmara\",\"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary\",\"ET|Africa/Nairobi Africa/Addis_Ababa\",\"FI|Europe/Helsinki\",\"FJ|Pacific/Fiji\",\"FK|Atlantic/Stanley\",\"FM|Pacific/Chuuk Pacific/Pohnpei Pacific/Kosrae\",\"FO|Atlantic/Faroe\",\"FR|Europe/Paris\",\"GA|Africa/Lagos Africa/Libreville\",\"GB|Europe/London\",\"GD|America/Port_of_Spain America/Grenada\",\"GE|Asia/Tbilisi\",\"GF|America/Cayenne\",\"GG|Europe/London Europe/Guernsey\",\"GH|Africa/Accra\",\"GI|Europe/Gibraltar\",\"GL|America/Godthab America/Danmarkshavn America/Scoresbysund America/Thule\",\"GM|Africa/Abidjan Africa/Banjul\",\"GN|Africa/Abidjan Africa/Conakry\",\"GP|America/Port_of_Spain America/Guadeloupe\",\"GQ|Africa/Lagos Africa/Malabo\",\"GR|Europe/Athens\",\"GS|Atlantic/South_Georgia\",\"GT|America/Guatemala\",\"GU|Pacific/Guam\",\"GW|Africa/Bissau\",\"GY|America/Guyana\",\"HK|Asia/Hong_Kong\",\"HN|America/Tegucigalpa\",\"HR|Europe/Belgrade Europe/Zagreb\",\"HT|America/Port-au-Prince\",\"HU|Europe/Budapest\",\"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura\",\"IE|Europe/Dublin\",\"IL|Asia/Jerusalem\",\"IM|Europe/London Europe/Isle_of_Man\",\"IN|Asia/Kolkata\",\"IO|Indian/Chagos\",\"IQ|Asia/Baghdad\",\"IR|Asia/Tehran\",\"IS|Atlantic/Reykjavik\",\"IT|Europe/Rome\",\"JE|Europe/London Europe/Jersey\",\"JM|America/Jamaica\",\"JO|Asia/Amman\",\"JP|Asia/Tokyo\",\"KE|Africa/Nairobi\",\"KG|Asia/Bishkek\",\"KH|Asia/Bangkok Asia/Phnom_Penh\",\"KI|Pacific/Tarawa Pacific/Enderbury Pacific/Kiritimati\",\"KM|Africa/Nairobi Indian/Comoro\",\"KN|America/Port_of_Spain America/St_Kitts\",\"KP|Asia/Pyongyang\",\"KR|Asia/Seoul\",\"KW|Asia/Riyadh Asia/Kuwait\",\"KY|America/Panama America/Cayman\",\"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral\",\"LA|Asia/Bangkok Asia/Vientiane\",\"LB|Asia/Beirut\",\"LC|America/Port_of_Spain America/St_Lucia\",\"LI|Europe/Zurich Europe/Vaduz\",\"LK|Asia/Colombo\",\"LR|Africa/Monrovia\",\"LS|Africa/Johannesburg Africa/Maseru\",\"LT|Europe/Vilnius\",\"LU|Europe/Luxembourg\",\"LV|Europe/Riga\",\"LY|Africa/Tripoli\",\"MA|Africa/Casablanca\",\"MC|Europe/Monaco\",\"MD|Europe/Chisinau\",\"ME|Europe/Belgrade Europe/Podgorica\",\"MF|America/Port_of_Spain America/Marigot\",\"MG|Africa/Nairobi Indian/Antananarivo\",\"MH|Pacific/Majuro Pacific/Kwajalein\",\"MK|Europe/Belgrade Europe/Skopje\",\"ML|Africa/Abidjan Africa/Bamako\",\"MM|Asia/Yangon\",\"MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan\",\"MO|Asia/Macau\",\"MP|Pacific/Guam Pacific/Saipan\",\"MQ|America/Martinique\",\"MR|Africa/Abidjan Africa/Nouakchott\",\"MS|America/Port_of_Spain America/Montserrat\",\"MT|Europe/Malta\",\"MU|Indian/Mauritius\",\"MV|Indian/Maldives\",\"MW|Africa/Maputo Africa/Blantyre\",\"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Mazatlan America/Chihuahua America/Ojinaga America/Hermosillo America/Tijuana America/Bahia_Banderas\",\"MY|Asia/Kuala_Lumpur Asia/Kuching\",\"MZ|Africa/Maputo\",\"NA|Africa/Windhoek\",\"NC|Pacific/Noumea\",\"NE|Africa/Lagos Africa/Niamey\",\"NF|Pacific/Norfolk\",\"NG|Africa/Lagos\",\"NI|America/Managua\",\"NL|Europe/Amsterdam\",\"NO|Europe/Oslo\",\"NP|Asia/Kathmandu\",\"NR|Pacific/Nauru\",\"NU|Pacific/Niue\",\"NZ|Pacific/Auckland Pacific/Chatham\",\"OM|Asia/Dubai Asia/Muscat\",\"PA|America/Panama\",\"PE|America/Lima\",\"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier\",\"PG|Pacific/Port_Moresby Pacific/Bougainville\",\"PH|Asia/Manila\",\"PK|Asia/Karachi\",\"PL|Europe/Warsaw\",\"PM|America/Miquelon\",\"PN|Pacific/Pitcairn\",\"PR|America/Puerto_Rico\",\"PS|Asia/Gaza Asia/Hebron\",\"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores\",\"PW|Pacific/Palau\",\"PY|America/Asuncion\",\"QA|Asia/Qatar\",\"RE|Indian/Reunion\",\"RO|Europe/Bucharest\",\"RS|Europe/Belgrade\",\"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Astrakhan Europe/Volgograd Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr\",\"RW|Africa/Maputo Africa/Kigali\",\"SA|Asia/Riyadh\",\"SB|Pacific/Guadalcanal\",\"SC|Indian/Mahe\",\"SD|Africa/Khartoum\",\"SE|Europe/Stockholm\",\"SG|Asia/Singapore\",\"SH|Africa/Abidjan Atlantic/St_Helena\",\"SI|Europe/Belgrade Europe/Ljubljana\",\"SJ|Europe/Oslo Arctic/Longyearbyen\",\"SK|Europe/Prague Europe/Bratislava\",\"SL|Africa/Abidjan Africa/Freetown\",\"SM|Europe/Rome Europe/San_Marino\",\"SN|Africa/Abidjan Africa/Dakar\",\"SO|Africa/Nairobi Africa/Mogadishu\",\"SR|America/Paramaribo\",\"SS|Africa/Juba\",\"ST|Africa/Sao_Tome\",\"SV|America/El_Salvador\",\"SX|America/Curacao America/Lower_Princes\",\"SY|Asia/Damascus\",\"SZ|Africa/Johannesburg Africa/Mbabane\",\"TC|America/Grand_Turk\",\"TD|Africa/Ndjamena\",\"TF|Indian/Reunion Indian/Kerguelen\",\"TG|Africa/Abidjan Africa/Lome\",\"TH|Asia/Bangkok\",\"TJ|Asia/Dushanbe\",\"TK|Pacific/Fakaofo\",\"TL|Asia/Dili\",\"TM|Asia/Ashgabat\",\"TN|Africa/Tunis\",\"TO|Pacific/Tongatapu\",\"TR|Europe/Istanbul\",\"TT|America/Port_of_Spain\",\"TV|Pacific/Funafuti\",\"TW|Asia/Taipei\",\"TZ|Africa/Nairobi Africa/Dar_es_Salaam\",\"UA|Europe/Simferopol Europe/Kiev Europe/Uzhgorod Europe/Zaporozhye\",\"UG|Africa/Nairobi Africa/Kampala\",\"UM|Pacific/Pago_Pago Pacific/Wake Pacific/Honolulu Pacific/Midway\",\"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu\",\"UY|America/Montevideo\",\"UZ|Asia/Samarkand Asia/Tashkent\",\"VA|Europe/Rome Europe/Vatican\",\"VC|America/Port_of_Spain America/St_Vincent\",\"VE|America/Caracas\",\"VG|America/Port_of_Spain America/Tortola\",\"VI|America/Port_of_Spain America/St_Thomas\",\"VN|Asia/Bangkok Asia/Ho_Chi_Minh\",\"VU|Pacific/Efate\",\"WF|Pacific/Wallis\",\"WS|Pacific/Apia\",\"YE|Asia/Riyadh Asia/Aden\",\"YT|Africa/Nairobi Indian/Mayotte\",\"ZA|Africa/Johannesburg\",\"ZM|Africa/Maputo Africa/Lusaka\",\"ZW|Africa/Maputo Africa/Harare\"]}),a});\n","export default {\n url: \"http://localhost:14100/\"\n};","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true,\n});\nvar compose = (exports.compose = function compose() {\n for (\n var _len = arguments.length, fns = Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n fns[_key] = arguments[_key];\n }\n\n return function () {\n for (\n var _len2 = arguments.length, args = Array(_len2), _key2 = 0;\n _key2 < _len2;\n _key2++\n ) {\n args[_key2] = arguments[_key2];\n }\n\n fns.forEach(function (fn) {\n return fn && fn.apply(undefined, args);\n });\n };\n});\n\nvar pick = (exports.pick = function pick(obj) {\n for (\n var _len3 = arguments.length,\n props = Array(_len3 > 1 ? _len3 - 1 : 0),\n _key3 = 1;\n _key3 < _len3;\n _key3++\n ) {\n props[_key3 - 1] = arguments[_key3];\n }\n\n return props.reduce(function (newObj, prop) {\n if (obj.hasOwnProperty(prop)) {\n newObj[prop] = obj[prop];\n }\n return newObj;\n }, {});\n});\n","module.exports = __webpack_public_path__ + \"static/media/RWBRedShirt.7b3451af.jpg\";","import React, {Component} from 'react';\nimport {\n version as WebAppVersion,\n build as WebAppBuild,\n} from '../../package.json';\n\nexport default class BuildInfo extends Component {\n render() {\n return (\n
\n
Version number {WebAppVersion}
\n
Build number {WebAppBuild}
\n
\n );\n }\n}\n","const projectConfig = {\n version: '1.2.7',\n name: 'Buddy Up', // Display name Should also match APP_DISPLAY_NAME in in xcode (target>Build settings>User-Defined)\n slug: 'BuddyUp', // generates app.json value Should also match APP_MODULE_NAME in in xcode (target>Build settings>User-Defined), and APP_COMPONENT_NAME in app/build.gradle\n metaDescription: 'Buddy Up Australia connects current and former serving military and first responders, and their immediate families to their communities through physical fitness, social activities and purposeful volunteering.',\n primaryColorOne: '#006E83',\n primaryColorTwo: '#006E83',\n secondaryColorOne: '#47B1BE',\n secondaryColorTwo: '#E17F1E', // includes error text\n secondaryColorThree: '#9DA240',\n defaultCoverPhotoColor: '#47B1BE',\n primaryFontBaseSize: 12, // Base body copy size. Other sizes are relative. Tweak on a per-font basis. 12p is default (the base value throughout before implementing relative font sizes)\n secondaryFontBaseSize: 20, // Base header/tite size. Other sizes are relative. Tweak on a per-font basis. 20p is default (the base value throughout before implementing relative font sizes)\n fontLeading: 1.25, // a multiplier for line-height. 1.25 is default\n useEmphasisFonts: true, // use emphasis/italic fonts for headers, event titles, and profile names.\n primaryCountryCode: 'AU',\n addressFAQ: false, // displays questions and answers about why address is required.\n allowsOtherCountries: false, // if false, restricts location search results to primaryCountryCode. If true, enables international address features in profile/creation. \n internationalSupport: true,\n privacyPolicy: 'https://buddyupaustralia.org/privacy',\n termsConditions: 'https://buddyupaustralia.org/terms',\n cookiePolicy: 'https://buddyupaustralia.org/privacy',\n communityGuidelines: 'https://buddyupaustralia.org/code-of-conduct',\n userSupportLink: null, // If provided, shows a \"Help Center\" link in the user's settings (mobile) or sidebar (web)\n purchaseableShirt: false, // unused, but views and code exist to add it. according to niki on 02/16/2024, BU has no shirt.\n shirtPreviewTitle: null,\n shirtPreviewTagline: null,\n shirtPreviewMessage: null,\n shirtPreviewMessageNote: null,\n getShirtText: null,\n purchaseTitle: null,\n purchaseConfirmationTitle: null, // determine if other projects will have the confirmation match the preview tagline\n purchaseContactEmail: null,\n alertTitle: 'Buddy Up',\n supportEmail: 'info@buddyupaustralia.org',\n storeKey: 'Buddy Up',\n prodHost: 'app.buddyupaustralia.org',\n prodURL: 'https://app.buddyupaustralia.org/',\n stagingURL: 'https://buddyup-web-stage.fly.dev/',\n devURL: 'https://socialstack-dev.fly.dev/',\n devAPIURL: 'https://socialstack-dev.fly.dev/',\n stageAPIURL: 'https://buddyup-api-stage.fly.dev/',\n prodAPIURL: 'https://api.buddyupaustralia.org/',\n apiVersion: 'api/',\n registrationEmailWarning: '',\n verificationAccountTitle: 'Verification Code',\n emailConfirmationText:\n 'For your security, enter the confirmation code that was sent to the email you provided.',\n emailNotReceivedText: \"Didn't receive the email?\\nCheck your spam folder or \",\n // code or emailLink\n verificationType: 'code',\n verificationCodeLength: 6,\n // The Profile creation flow that's entered AFTER email/workspace verification.\n // `screen` values. Used by React Native. See App.js for the stackNavigator names.\n // `path` values. For React Web. See Registration.js. These path values correspond to URLs like https://yourvariant.com/registration/personal_info\n registerProfileSteps: [\n { screen: 'PersonalInfo', path: 'personal_info' },\n { screen: 'SocialProfile', path: 'social_info' },\n { screen: 'MilitaryService', path: 'military_info' },\n { screen: 'PrivacyWaiver', path: 'privacy_info' },\n],\n profileLocationStateOptions: [ // specified state options for manual entry for account address on registration and updating profile information\n 'ACT',\n 'NSW',\n 'QLD',\n 'SA',\n 'TAS',\n 'VIC',\n 'WA',\n 'NT',\n ],\n phoneRequested: true, // if true, a field for phone number is included on profile create/edit views.\n phoneRequired: true, // if true, the phone number is required.\n serviceCheckTitle: 'CULTURALLY AND LINGUISTICALLY DIVERSE (CaLD)',\n serviceCheckBody:\n 'Do you identify as someone who is CaLD who requires extra support?',\n emailAddressMessage: 'Please use a civilian or non-government email address.',\n FirstNameLabel: 'FIRST NAME',\n LastNameLabel: 'LAST NAME',\n allowBlankLastName: false,\n ProfileBoxFiller: 'Enter Profile Description',\n profileInfoTitle: 'Service Information',\n leaderRoleDisplay: 'Event Leader',\n distanceUnits: 'km',\n facebookID: '414454007478608',\n simplifyGroupTypeNames: false, // display simple the group types instead of using backend datatypes like \"National Group\" and \"Chapter\". See shimGroupTypeName(kind) in Helpers.js\n limitedEmail: null,\n melissaVerify: false,\n defaultEventImages: false,\n localEventTabName: 'Local Events',\n hasPast30Lozenge: false, // if true, a \"Past 30 days\" lozenge is shown on the events tab.\n prodDeepLink: /https:\\/\\/app.buddyupaustralia.org\\/|buddyup:\\/\\//,\n devDeepLink: /https:\\/\\/buddyup-web-stage.fly.dev\\/|https:\\/\\/socialstack-dev.fly.dev\\/|buddyup:\\/\\//,\n orgName: 'Buddy Up Australia',\n appleId: '6443403984',\n androidId: 'org.buddyup.BuddyUp', //applicationId set in app/build.gradle per project flavor\n hasGroups: true, // If true, groups tab is shown on the main tabs. Doesn't affect backend models/api.\n hasAnchorChapter: true, // If true, the app automatically assigns an anchor group, and that group is displayed in profiles.\n GCMSenderId: '728743300395', //0395 Buddy Up. Must match Buddy up's google-services.json project_number. Managed in Firebase console (buddy-up-f1889). Login with google workspace account. Adam, Arjin, Dan E, Dan W, Depash N, John-Paul W, Louis G, Nikole H are Owners.\n hasChallenges: false,\n hasPayment: false, // if true, complex. alters the behavior of the create event button, showing donation tiers, and whether purchases should be loaded on myprofile. Should be named dba-style-donation-tiers or something. Possibly collides with other settings like alwaysShowEventButton.\n genderRequested: true, // if true, a gender selection appears on profile/registration. Not necessarily public.\n validGenderOptions: [\n {label: 'Male', value: 'Male'},\n {label: 'Female', value: 'Female'},\n {label: 'Undisclosed', value: 'Undisclosed'},\n ],\n supportsAnonymousUsers: true,\n hasBadge: false,\n hasProfileInfo: false,\n eventRsvpLabel: \"Going\",\n eventRsvpHasRegistration: false, // if true, events can include a registration URL and RSVP will launch it if added (DBA feature)\n membershipDiscount: false,\n eventAttendeeListDownload: false,\n hasShareSupport: true,\n hasOpenGraphPreviews: true, // website previews in posts. Incurs cost with opengraph.io. If set to true, a key is required in APIKeys.js\n hasEventHostSelection: true, // when true, an even host other than the creator can be selected when creating a group event.\n hasWorkspaces: false, // if true, users are added to a workspace based on their email domain. The app client is mostly agnostic to this.\n hasInAppAnalytics: false, // if true, event_leaders, staff, and superusers can view in-app analytics.\n inAppAnalyticsLabel: 'ANALYTICS',\n\n // event creation rules\n leaderRole: 'event_leader', // Usually, the backend only has one permissions group: \"event_leader\". DBA-style donation levels added purchase_tier_perms.\n alwaysShowEventButton: false, // Ignore ALL other checks and always show the create-event button. Will be buggy unless you really know what you're doing.\n limitedNonGroupEventCreation: true, // event creation limited to users with a specific role\n allowsVirtualEventsOutsideGroups: false,\n eventsHaveAttendeeLimit: false,\n sessionEndedMessage:'This event has ended',\n hasOktaAuthentication: false, // if true, Sign in with Okta will be displayed on the login screen. Requires admin database records.\n hideRemovedEventPosts: true, // if an event has been removed, determine if the posts related to that removed event should be hidden on the feed. See `filterRemovedEvents` in FeedHelpers.js for more info.\n};\n\nexport {projectConfig};\n","'use strict';\n\nconst asyncLocalStorage = {\n setItem: function (key, value) {\n return Promise.resolve().then(() => {\n // The warning: if Unhandled Rejection (QuotaExceededError): Failed to execute 'setItem' on 'Storage': Setting the value of 'user_profile' exceeded the quota.\n // happens if the user has an invalid photo that is too large. This issue has been resolved so it should not happen, but if new photos ever get added\n // and this error pops up, it is because a new image was uploaded incorrectly and is too large\n window.localStorage.setItem(key, value);\n });\n },\n getItem: function (key) {\n return Promise.resolve().then(() => {\n return window.localStorage.getItem(key);\n });\n },\n removeItem: function (key) {\n return Promise.resolve().then(() => {\n return window.localStorage.removeItem(key);\n })\n },\n clear: function () {\n return Promise.resolve().then(() => {\n console.log('This operation not used throughout codebase.');\n return window.localStorage.clear();\n })\n }\n};\n\nexport default asyncLocalStorage;\n","'use strict';\n\nconst extensions = {\n jpeg: 'jpeg',\n jpg: 'jpg',\n png: 'png',\n gif: 'gif',\n heif: 'heif', //apple still photo\n heic: 'heic',\n plist: 'plist', //apple's way of saving edited photos on iOS 13+\n webp: 'webp',\n};\n\nconst mimetypes = {\n jpg: 'image/jpeg',\n png: 'image/png',\n gif: 'image/gif',\n heic: 'image/heic',\n heicSequence: 'image/heic-sequence',\n webp: 'image/webp',\n};\n\nconst webImageFormats = 'image/png, image/jpeg, image/gif, image/webp';\n\nexport { extensions as EXTENSIONS, mimetypes as MIMETYPES, webImageFormats as WEB_IMAGE_FORMATS };\n","// BuddyUp Whitelabel\n\n// for these to work, defaultEventImages must be true in projectConfig\nconst eventCoverPhotos = {\n // Map these to the slugs from the shared/[whitelabel]/eventConfig.js\n \n // for example\n // 'run-walk': require ('./runwalk.jpg'),\n // as of 10/11/2023 BuddyUp doesn't have default images provided/created\n\n};\n\nexport default eventCoverPhotos;\n","const subOptionTitle = 'Service Type';\n\nconst subOptions = [\n {label: 'Ambulance Service', value: 'Ambulance Service'},\n {label: 'Australian Army', value: 'Australian Army'},\n {label: 'Fire and Rescue Service', value: 'Fire and Rescue Service'},\n {label: 'OS Defense Force', value: 'OS Defense Force'},\n {label: 'OS Emergency Services', value: 'OS Emergency Services'},\n {label: 'Police Service', value: 'Police Service'},\n {label: 'Royal Australian Air Force', value: 'Royal Australian Air Force'},\n {label: 'Royal Australian Navy', value: 'Royal Australian Navy'},\n {label: 'State Emergency Services', value: 'State Emergency Services'},\n {\n label: 'Emergency Service Volunteer\\n(Ambulance, Fire, Police)',\n value: 'Emergency Service Volunteer',\n },\n];\n\nconst primaryOptionTitle = 'Status';\n\nconst primaryOptions = [\n {label: 'Active Service Member', value: 'Active Service Member', subOptions},\n {label: 'Former Service Member', value: 'Former Service Member', subOptions},\n {label: 'Family Member', value: 'Family Member', subOptions: []},\n {label: 'Supporter', value: 'Supporter', subOptions: []},\n];\n\nexport {subOptionTitle, primaryOptionTitle, primaryOptions, subOptions};\n","import { EXTENSIONS, MIMETYPES } from '../constants/ImageConstants';\nimport moment from 'moment';\nimport '../constants/moment-timezone-with-data-10-year-range';\nimport 'moment-timezone';\nimport eventCoverPhotos from '../project-info/images/eventCoverPhotos';\nimport DefaultProfileImg from '../project-info/images/DefaultProfileImg.png';\nimport { userProfile } from '../models/UserProfile';\nimport {primaryOptions} from '../project-info/serviceInfo';\nimport { projectConfig } from '../project-info/projectConfig';\n\nexport function getRadioIndexForValue(array, value, fallback) {\n // initial prop on radio buttons expects an index.\n // this returns the index, or a fallback index if not found\n let i = array?.findIndex((obj) => obj.value === value);\n if (i > -1) {\n return i;\n } else {\n return fallback;\n }\n}\nexport function isNullOrEmpty(str) {\n if (!str) {\n return true; // no input\n }\n if (!str.trim()) {\n return true; // only spaces\n }\n return false;\n}\n//Very simple email validation anystring@anystring.anystring\nexport function validateEmail(email) {\n var re = /\\S+@\\S+\\.\\S+/;\n return re.test(email);\n}\n\n//https://regexr.com/37i6s\nexport function validURL(url) {\n var re = /https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,4}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/i;\n return re.test(url);\n}\n\nexport function getDomain(url) {\n var re = /^(?:https?:\\/\\/)?(?:[^@\\n]+@)?(?:www\\.)?([^:\\/\\n]+)/im;\n return url?.match(re)[1];\n}\n\nexport function isPhoneNumber(phoneNumber) {\n const phoneNumberPattern = /^\\d{10}$/; // Matches exactly ten numeric characters in a row\n return phoneNumberPattern.test(phoneNumber);\n}\n\nexport function isObject(val) {\n if (val === null || Array.isArray(val)) return false;\n return typeof val === 'function' || typeof val === 'object';\n}\n\nexport function generateBody(data) {\n if (!isObject(data)) {\n throw new TypeError();\n }\n let formBody = [];\n for (let property in data) {\n if (\n typeof data[property] === 'object' ||\n typeof data[property] === 'function' ||\n typeof data[property] === 'symbol' ||\n Array.isArray(data[property])\n ) {\n throw new TypeError();\n }\n const encodedKey = encodeURIComponent(property);\n const encodedValue = encodeURIComponent(data[property]);\n formBody.push(encodedKey + '=' + encodedValue);\n }\n return formBody.join('&');\n}\n\nexport function urlToParamsObj(url) {\n const queryString = url.split('?')[1];\n if (queryString === undefined) {\n return {};\n }\n const keyValPairs = queryString.split('&');\n let keyValArray = keyValPairs.map((stringPair) => {\n return stringPair.split('=');\n });\n let paramsObj = {};\n for (let pair of keyValArray) {\n Object.assign(paramsObj, {\n [pair[0]]: pair[1],\n });\n }\n return paramsObj;\n}\n\nexport function getImageType(image) {\n // Per wordpress spec, this can only be .jpg, .jpeg, .png, and .gif\n let image_name = image.filename.toLowerCase();\n if (\n image_name.endsWith(EXTENSIONS.jpeg) ||\n image_name.endsWith(EXTENSIONS.jpg)\n ) {\n return MIMETYPES.jpg;\n } else if (image_name.endsWith(EXTENSIONS.png)) {\n return MIMETYPES.png;\n } else if (image_name.endsWith(EXTENSIONS.gif)) {\n return MIMETYPES.gif;\n } else if (image_name.endsWith(EXTENSIONS.webp)) {\n return MIMETYPES.webp;\n } else {\n throw new Error('The selected image type is not supported.');\n }\n}\n\n// For use on id: any, objectList: Array<{id: Number}>\nexport function getIndexFromID(id, objectList) {\n for (let i = 0; i < objectList.length; i++) {\n if (objectList[i].id === undefined) {\n throw new Error(`List element ${i} does not have id`);\n }\n if (objectList[i].id === id) {\n return i;\n }\n }\n return -1;\n}\n\nexport function jsonOrThrow(response) {\n if (response.ok) {\n return response.json();\n } else {\n throw new Error(`Response returned ${response.status}`);\n }\n}\nexport async function jsonOrThrowWithMessage(response) {\n if (response.ok) {\n return response.json();\n } else {\n const errorBody = await response.json();\n const errorMessage = errorBody.error || `Response returned ${response.status}`;\n throw new Error(errorMessage);\n }\n}\n\nexport function countUsers({ going, interested, checked_in }) {\n const goingCount =\n going && going.pagination ? going.pagination.total_count : 0;\n const interestedCount =\n interested && interested.pagination ? interested.pagination.total_count : 0;\n const checkedInCount =\n checked_in && checked_in.pagination ? checked_in.pagination.total_count : 0;\n return goingCount + interestedCount + checkedInCount;\n}\n\n// quick-and-dirty implementation\nexport function arrayDeepClone(array) {\n return JSON.parse(JSON.stringify(array));\n}\n\nexport function getBlobFromLocalURI(imageURI) {\n return fetch(imageURI)\n .then((result) => {\n return result\n .blob()\n .then((blob) => {\n return blob;\n })\n .catch((error) => {\n console.warn('Unable to obtain blob', error);\n });\n })\n .catch((error) => {\n console.warn('Fetch URI Error: ', error);\n });\n}\n\n// change name...maybe displayableOptionValue?\nexport function getDisplayableValue(value, options) {\n if (!value) return undefined;\n const entries = Object.entries(options);\n return entries.map((entry) => {\n if (\n entry[1].slug === value ||\n entry[0] === value ||\n entry[1].display === value\n )\n return entry[1].display;\n });\n}\n\nfunction getCurrentTimeUTC() {\n // moment.utc() and moment().utc() still uses local data for time comparisons\n // fromnow also compares to local time\n // get the offset and add that to the hours to get actual UTC time\n const currentTime = moment();\n const offsetHours = currentTime.utcOffset() / 60;\n return currentTime.subtract(offsetHours, 'hours');\n}\n\n// check if at any month of the year the device's timezone observes DLS\nfunction observesDLS() {\n let isDLS = false;\n const currentYear = new Date().getFullYear();\n const currentDate = new Date().getDate(); // date of month\n for (let i = 0; i < 12; i++) {\n if (moment([currentYear, `${i}`, currentDate]).isDST()) {\n isDLS = true;\n break;\n }\n }\n return isDLS;\n}\n\n// times by default display just the offset from UTC by their local time. Add the additional offset from the device,\n// which matters when looking at events in different time zones\nexport function getOffsetTime(time, tz) {\n if (time) {\n const localOffsetMinutes = moment().utcOffset();\n let timeOffsetMinutes = time.utcOffset();\n const minuteDifference = localOffsetMinutes - timeOffsetMinutes;\n return time.clone().add(minuteDifference, 'minutes');\n }\n}\n\n// returns a string for how long ago the post was made\nexport function howLongAgo(postTime) {\n /* \n post times do not contain the \"Z\" at the end indicating it is a utc time\n while comments do. This causes an additional time gap from the local\n time to current time utc for comments\n */\n if (postTime[postTime.length - 1] === 'Z') postTime = postTime.slice(0, -1);\n postTime = moment(postTime);\n const currentTimeUTC = getCurrentTimeUTC();\n // return the number and the first character of time (m, h, d)\n const originalMessage = postTime.from(currentTimeUTC, true).split(' ');\n if (originalMessage[0] === 'an') return '1h';\n else if (originalMessage[0].concat(originalMessage[1]) === 'aday')\n return '1d';\n else if (originalMessage[0].concat(originalMessage[1]) === 'aminute')\n return '1m';\n // a few seconds\n else if (originalMessage[0].concat(originalMessage[1]) === 'afew')\n return '<1m';\n else if (originalMessage[1] === 'minutes' || originalMessage[1] === 'hours' || originalMessage[1] === 'hour')\n return originalMessage[0] + originalMessage[1].slice(0, 1);\n // otherwise return days. Using this format to ensure it sticks with days\n return `${currentTimeUTC.diff(postTime, 'days')}d`;\n}\n\nexport function displayFullAddress(street, city, state, zip, country) {\n let displayedAddress = street;\n // some addresses come in with the city, state, and country\n // example address: 61088 Manhae Loop, Bend, OR, USA\n // Foreign address example: Place du Panthéon, 75005 Paris, France\n const addressComponents = street.split(\",\");\n // assuming if there are at least 2 commas the full address was passed in\n if (addressComponents.length >= 3) {\n if (country === 'US' || country === 'USA') {\n // these full addresses in the US do not include the zip\n if (zip) {\n // states will have a space before them\n if (addressComponents[2].trim().length === 2 && addressComponents[2].trim() === addressComponents[2].trim().toUpperCase()) {\n // append the zip to the state section\n addressComponents[2] = `${addressComponents[2]} ${zip}`;\n displayedAddress = addressComponents.join(',');\n }\n }\n }\n // NOTE: Did not do too extensive testing with various countries for zip codes\n else {\n addressComponents[1] = ` ${zip}${addressComponents[1]}`\n // example result: 79 Avenue Bosquet, 75007 Paris, France\n displayedAddress = addressComponents.join(',');\n }\n }\n else {\n // requiring city, state, and zip to all be provided.\n if (city && state && zip) displayedAddress += `, ${city}, ${state} ${zip}`;\n if (country) displayedAddress += `, ${country}`;\n }\n return displayedAddress;\n}\n\nexport function generateFilteredTime(timeSlug) {\n if (!timeSlug) return '';\n let days;\n let endDate;\n let startDate;\n // all and today both start with the current date\n if (timeSlug === 'today' || timeSlug === 'all') days = 0;\n else {\n timeSlug = timeSlug.split('-');\n days = timeSlug[1];\n if (timeSlug[0] === 'past') {\n days *= -1;\n }\n }\n if (days < 0) {\n startDate = moment().startOf('day').add(days, 'days').toISOString();\n endDate = moment().endOf('day').subtract(1, 'day').toISOString();\n } else if (days === 0) {\n // moment uses user's timezone and add it when using toISOString\n startDate = moment().startOf('day').toISOString();\n if (timeSlug === 'today') endDate = moment().endOf('day').toISOString();\n // \"all\", get events a year into the future\n else endDate = getCurrentTimeUTC().add(365, 'days').toISOString();\n } else {\n startDate = moment().startOf('day').toISOString();\n endDate = moment().endOf('day').add(days, 'days').toISOString();\n }\n return `after=${startDate}&before=${endDate}`;\n}\n\n// https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nexport function uuidv4() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nexport function extractAddressComponent(component, address_data) {\n for (let datum of address_data) {\n if (datum.types.includes(component)) {\n return datum;\n }\n }\n // some data might not be found, but depending on the level of data of location (i.e. state), that data might not be found\n return null;\n}\n\nexport function displayInvitedUsers(invitedUsers) {\n let displayedUsers = '';\n for (let i = 0; i < invitedUsers.length; i++) {\n displayedUsers += `${invitedUsers[i].name} `;\n }\n return displayedUsers;\n}\n\n// deprecated. use imported lodash debounce instead\nexport function debounce(fn, time) {\n let timeoutId;\n return (...args) => {\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n fn(...args);\n }, time);\n };\n}\n\nexport const defaultUserPhoto = DefaultProfileImg;\n\nexport function defaultEventPhoto(category) {\n if (!projectConfig.defaultEventImages) return null;\n if (category) {\n category = category.toLowerCase();\n return eventCoverPhotos[category] || eventCoverPhotos.default || null;\n }\n return eventCoverPhotos.default || null;\n}\n\nexport function mergeAttendees(eventAttendees) {\n let totalCount = 0;\n if (eventAttendees) {\n const { checked_in, going, interested } = eventAttendees;\n const mergedAttendees = [\n ...interested.attendees,\n ...going.attendees,\n ...checked_in.attendees,\n ].slice(0, 10);\n totalCount = checked_in.count + going.count + interested.count;\n return { mergedAttendees, totalCount };\n } else {\n const mergedAttendees = [];\n return { mergedAttendees, totalCount };\n }\n}\n\nexport function promiseTimeout(time) {\n (result) => new Promise((resolve) => setTimeout(resolve, time, result));\n}\n\nexport function generateYears() {\n let currentYear = new Date().getFullYear();\n let endYear = currentYear - 81;\n let years = [];\n for (let i = currentYear; i > endYear; i--) {\n years.push(i.toString());\n }\n return years;\n}\n\nexport function localizeTime(timeZoneID, time) {\n let adjustedTime;\n if (timeZoneID) {\n adjustedTime = moment.utc(time);\n adjustedTime = getOffsetTime(adjustedTime, timeZoneID);\n }\n else {\n adjustedTime = moment(time);\n }\n return adjustedTime;\n}\n\nexport function localizeDate(timeZoneID, date) {\n let adjustedDate;\n if (timeZoneID) {\n adjustedDate = moment.utc(date).tz(timeZoneID);\n adjustedDate = getOffsetTime(adjustedDate, timeZoneID);\n }\n else {\n adjustedDate = moment(date);\n };\n return adjustedDate;\n}\n\n\n\nexport function formatPostTitle(title, verb) {\n // when there is an event name for event posts, the title is an object we do not want\n if (typeof title === 'object' && title !== null) return '\\u25B6\\uFE0E';\n if (title && title.includes('interested')) title += ' in';\n else if (title && title.includes('going')) title += ' to';\n // case of loading a single event from notifications\n else if (!title && verb)\n if (verb === 'checked_in') return ' checked in to';\n else if (verb === 'going') return ' is going to';\n else if (verb === 'interested') return ' is interested in';\n else return '\\u25B6\\uFE0E'; //posts have no title but the verb create\n return title;\n}\n\n// only return users who did not have their name partially deleted and did not have the \"@\" sign removed\nexport function validTaggedUsers(taggedUsers, text) {\n let validIDs = [];\n for (let i = 0; i < taggedUsers.length; i++) {\n let user = taggedUsers[i];\n // first and last name are keys for users in the tagged array, while name is the key for searched users\n if (user.name === undefined && user.first_name && user.last_name) {\n user.name = `${user.first_name} ${user.last_name}`;\n }\n if (text.includes(`@${user.name}`))\n validIDs.push(user.id);\n }\n return validIDs;\n};\n\nexport function capitalizeFirstLetter(word) {\n return `${word.slice(0, 1).toUpperCase()}${word.slice(1, word.length)}`;\n}\n\n// version numbers are always X.Y.Z\n// if the version is less than the required version, the front end will send the user through the appropriate onboarding process\n// at the end of that onboarding process, the version will be updated\nexport function isUpdateNeeded(curVersion, checkedVersion) {\n let splitCurVersion = curVersion.split('.');\n let splitCheckedVersion = checkedVersion.split('.');\n for (let i = 0; i < splitCurVersion.length; i++) {\n if (parseInt(splitCurVersion[i]) < parseInt(splitCheckedVersion[i])) return true;\n else if (parseInt(splitCurVersion[i]) > parseInt(splitCheckedVersion[i])) return false;\n }\n return false;\n}\n\nexport function isMilitaryAddress(address, city, state) {\n const militaryOffices = ['APO', 'DPO', 'FPO'];\n let isMilitaryAddress = false;\n\n address = address.toUpperCase();\n city = city.toUpperCase();\n state = state.toUpperCase();\n\n // Generally APO/DPO/FPO is put manually in the city field, but also check state field\n if (militaryOffices.includes(city) || militaryOffices.includes(state)) isMilitaryAddress = true;\n // on the offchance the user puts it in the street address\n else {\n const splitAddress = address.split(\" \");\n for (let i = 0; i < splitAddress.length; i++) {\n if (militaryOffices.includes(splitAddress[i])) {\n isMilitaryAddress = true;\n break;\n }\n }\n }\n return isMilitaryAddress;\n}\n\nexport function ordinalIndicator(number) {\n if (number === undefined) return '';\n let num = number.toString();\n let indicator;\n const lastValue = num.slice(-1);\n if (lastValue === '1') indicator = 'st';\n else if (lastValue === '2') indicator = 'nd';\n else if (lastValue === '3') indicator = 'rd';\n else indicator = 'th';\n return `${number}${indicator}`;\n}\n\nexport function getPercentage(value, maximum) {\n let percentage = ((value / maximum) * 100);\n if (percentage > 100) percentage = 100;\n return percentage.toString().concat('%');\n}\n\n// used for attendees preview\nexport function putUserFirst(users, joined) {\n if (!joined) return users;\n const userProf = userProfile.getUserProfile();\n const currentUser = users.find((user) => user.id === userProf.id);\n // the user is in the returned amount, place them in front\n if (currentUser) {\n users = users.filter((user) => user.id !== userProf.id);\n return [currentUser, ...users];\n }\n // the user has joined but is not found in the list, place them in front\n else return [userProf, ...users];\n}\n\n// event/group feeds are followed and will otherwise show up in following\nexport function isValidFollowing(item) {\n // TODO determine if needed, it doesn't look like joined events/groups show up in following list anymore\n return true;\n // return !item.target_id.includes('event') && !item.target_id.includes('group');\n}\n\nexport function notNullOrZero(value) {\n return value !== null && value != 0;\n}\n\n// currently just used for services\nexport function hasOptions(value, options) {\n for (let i = 0; i < options.length; i++) {\n // TODO, figure out if we will ever change label/value, not much of a purpose if they are the same\n if (value === options[i].value) {\n return options[i].subOptions.length > 0;\n }\n }\n return false;\n}\n\nexport function httpsNext(url) {\n if (!url) return null;\n return url.replace('http://', 'https://');\n}\n\nexport function isMilitaryUser(status) {\n for (let i = 0; i < primaryOptions.length; i++) {\n const option = primaryOptions[i];\n if (option.value === status) {\n if (option.subOptions.length === 0) return false;\n else return true;\n }\n }\n}\n\nexport function formatStatusTitle(status, service_type) {\n let title = '';\n if (hasOptions(status, primaryOptions)) {\n // TODO avoid hard coded variable for white labeling in the future\n title =\n status === 'Former Service Member'\n ? `${status.split(' ')[0]} ${service_type}`\n : `${service_type}`;\n } else {\n if (status !== null) title = status;\n }\n return title;\n}\n\nexport function formatRegisterServiceInfo(\n value,\n combat_zone,\n military_status,\n military_specialty,\n military_rank,\n military_branch,\n has_disability,\n primaryOptions,\n) {\n value = Object.assign(\n value,\n {\n combat_zone:\n combat_zone && hasOptions(military_status, primaryOptions)\n ? combat_zone\n : null,\n military_specialty:\n military_specialty && hasOptions(military_status, primaryOptions)\n ? military_specialty\n : null,\n military_rank:\n military_rank && hasOptions(military_status, primaryOptions)\n ? military_rank\n : null,\n },\n !hasOptions(military_status, primaryOptions)\n ? {\n service_info: {\n status: military_status,\n culturally_and_linguistically_diverse: has_disability,\n },\n }\n : {\n service_info: {\n status: military_status,\n service_type: military_branch,\n culturally_and_linguistically_diverse: has_disability,\n },\n },\n // currently no ETS or similar functionality\n // hasOptions(military_status, primaryOptions)\n // ? {\n // military_ets: etsdDate.toISOString().slice(0, 10),\n // }\n // : {},\n );\n return value;\n}\n\nexport const getHyperlinks = (text) => {\n if (!text) return [];\n const linkRegex = /(https?:\\/\\/[^\\s]+)/gi;\n const hyperlinks = text.match(linkRegex);\n if (hyperlinks && hyperlinks.length) {\n return [...new Set(hyperlinks)];\n }\n return [];\n};\n\n// truncate trailing parameter (e.g. valor-challenge:\n// ex: DOMAIN/challenges/23?_ga=$GoogleAnalyticsParmeter)\nexport function cleanLinkID(value) {\n if (!value) return value\n if (value.includes('?')) value = value.split('?')[0];\n return value.trim();\n}\n\nexport function setOpenGraphData(openGraph, hybridGraph, htmlInferred, url) {\n let openGraphData = {};\n openGraphData.image = openGraph?.image?.url || hybridGraph?.image || htmlInferred?.image || hybridGraph?.imageSecureUrl || htmlInferred ?.imageSecureUrl || htmlInferred?.image_guess || (htmlInferred?.images.length ? htmlInferred?.images[0] : undefined);\n openGraphData.title = openGraph?.title || hybridGraph?.title || htmlInferred?.title;\n openGraphData.description = openGraph?.description || hybridGraph?.description || htmlInferred?.description;\n openGraphData.url = url || openGraph?.url || hybridGraph?.url || htmlInferred?.url; // we should always use the initial url to avoid differences with rerouting/minified links. Fallbacks have not been confirmed needed but are kept just in case\n return openGraphData;\n}\n\nexport function separatePostAndUserId(linkObj) {\n const cleanedURL = cleanLinkID(linkObj?.url);\n const streamIdAndUserId = cleanedURL.split('/feed/')[1].split('/user/');\n const poster = {id: streamIdAndUserId[1]};\n return {streamID: streamIdAndUserId[0], poster};\n}\n\nexport function getGroupTypeName(kind) {\n // this shim reflects that many whitelabels won't want to use terms like \"Chapter, National Group, etc\"\n // the data model on the backend uses those types, so for now we are patching it on the front end.\n if (projectConfig.simplifyGroupTypeNames && kind !== 'Sponsor') {\n return 'Group';\n } else {\n return `${capitalizeFirstLetter(kind)} Group`;\n }\n}\n\nexport function isInternalURL(url) {\n const urlObj = new URL(url);\n const internalOrigins = [projectConfig.prodURL, projectConfig.stagingURL, projectConfig.devURL, 'localhost'];\n return internalOrigins.includes(`${urlObj.origin}/`);\n}\n\nexport function openGraphFallbackPreview(url, platform) {\n // Implement logic to create a clickable link from the URL if opengrapgh fails or is disabled\n const isWeb = platform === 'web';\n const externalURL = !isInternalURL(url);\n let description = isWeb ? 'Click to open link' : 'Tab to navigate';\n if (externalURL && isWeb) description += ' in a new window'\n return {\n title: url,\n description,\n image: null,\n url: url,\n };\n}\n","'use strict';\n\nimport { primaryOptions } from '../project-info/serviceInfo';\n\nconst slugs = primaryOptions.reduce(\n (obj, item) => ((obj[item.key] = item.value), obj),\n {},\n);\n\nexport {slugs as MILITARY_STATUSES};\n","import AsyncStorage from './StorageHandler';\nimport { isObject } from '../utils/Helpers';\n// Device location if they use \"current location\"\n// it seems the intent was to also set this if they edit location from EventsListView, but I don't see evidence of that.\n// the strategy to handle null address backend across variants is to always retrieve location from here, and never user.location or userProfile.location\n// UserProfile now saves location to UserLocation.\nclass UserLocation {\n locale = '';\n street = '';\n city = '';\n state = '';\n zip = '';\n lat = 0;\n long = 0;\n _setUserLocation(data) {\n const { street, city, state, zip, lat, long } = data;\n this.street = street;\n this.city = city;\n this.state = state;\n this.zip = zip;\n this.lat = lat;\n this.long = long;\n }\n saveToUserLocation(value) {\n if (!value || !isObject(value)) {\n throw new Error(\"value must be of type Object\");\n }\n this._setUserLocation(value);\n return new Promise((resolve) => {\n try {\n AsyncStorage.setItem('user_location', JSON.stringify(value)).then(resolve);\n }\n catch (error) {\n throw Error(error);\n }\n });\n }\n loadUserLocation() {\n return AsyncStorage.getItem('user_location').then((value) => {\n if (!value)\n return false;\n try {\n this._setUserLocation(JSON.parse(data));\n return this.getUserLocation();\n }\n catch (error) {\n throw Error(error);\n }\n });\n }\n getUserLocation() {\n const { street, city, state, zip, lat, long, } = this;\n return {\n street,\n city,\n state,\n zip,\n lat,\n long\n };\n }\n deleteUserLocation() {\n this.locale = '';\n this.street = '';\n this.city = '';\n this.state = '';\n this.zip = '';\n this.lat = 0;\n this.long = 0;\n return AsyncStorage.removeItem('user_location');\n }\n}\n\nexport let userLocation = new UserLocation();\n","import AsyncStorage from './StorageHandler';\nimport {isObject} from '../utils/Helpers';\nimport {MILITARY_STATUSES} from '../../shared/constants/MilitaryStatusSlugs';\nimport { projectConfig } from '../project-info/projectConfig';\nimport { userLocation } from './UserLocation';\n\nclass UserProfile {\n newsletter_subscription = [];\n anchor_chapter = {};\n anonymous_profile = false;\n combat_deployment_operations = null;\n combat_zone = null;\n do_not_send_any_email = null;\n eagle_leader = false;\n eagle_leader_title = null;\n email = null;\n email_verified = null;\n first_name = null;\n gender = null;\n gender_description = null;\n has_disability = null;\n id = null;\n last_name = null;\n legal_waiver_signed = null;\n location = {};\n military_branch = null;\n military_family_member = null;\n military_status = null;\n military_specialty = null;\n military_rank = null;\n military_ets = null;\n phone = null;\n preferred_chapter = {};\n profile_completed = null;\n profile_photo_url = null;\n cover_photo_url = null;\n profile_bio = null;\n shipping_location = {};\n shirt_size = null;\n registration_started_via_app = false;\n salesforce_contact_id = null;\n service_info = null;\n extra_info = null;\n latest_purchase= null;\n workspace = null;\n isOperator = false;\n constructor() {\n this.dataLoaded = false;\n }\n _setUserProfile(data) {\n const {\n newsletter_subscription,\n anchor_chapter,\n anonymous_profile,\n combat_deployment_operations,\n combat_zone,\n do_not_send_any_email,\n\n // eagle_leader is a confusing concept in the whitelabel. It's leftover from RWB.\n // TODO: rename to event_leader\n // Furthermore, the backend currently has three ideas for this: eagle_leader, event_leader (or just leader), and the event_leader permissions group.\n // But in the end, it always just checks the permissions group to set the value anyway.\n\n // the client actually checks for eagle_leader OR event_leader permissions to set this bool.\n // it would be nice to clean it all up so there's one idea of event_leader.\n // there's also a confusing projectConfig setting with additional comments.\n \n eagle_leader,\n eagle_leader_title,\n email,\n email_verified,\n first_name,\n gender,\n gender_description,\n has_disability,\n id,\n last_name,\n legal_waiver_signed,\n location,\n military_branch,\n military_family_member,\n military_status,\n military_specialty,\n military_rank,\n military_ets,\n permissions,\n phone,\n preferred_chapter,\n profile_completed,\n profile_photo_url,\n cover_photo_url,\n profile_bio,\n shipping_location,\n shirt_size,\n registration_started_via_app,\n salesforce_contact_id,\n service_info,\n extra_info,\n latest_purchase,\n workspace,\n isOperator,\n } = data;\n let hasPermissions;\n if (permissions) {\n hasPermissions = permissions.includes(projectConfig.leaderRole);\n }\n this.newsletter_subscription = newsletter_subscription;\n this.anchor_chapter = anchor_chapter;\n this.anonymous_profile = anonymous_profile;\n this.combat_deployment_operations = combat_deployment_operations;\n this.combat_zone = combat_zone;\n this.do_not_send_any_email = do_not_send_any_email;\n this.eagle_leader = Boolean(eagle_leader || hasPermissions);\n this.eagle_leader_title = eagle_leader_title;\n this.email = email;\n this.email_verified = email_verified;\n this.first_name = first_name;\n this.gender = gender;\n this.gender_description = gender_description\n this.has_disability = has_disability;\n this.id = id;\n this.last_name = last_name;\n this.legal_waiver_signed = legal_waiver_signed;\n this.location = location;\n this.military_branch = military_branch;\n this.military_family_member = military_family_member;\n this.military_status = military_status;\n this.military_specialty = military_specialty;\n this.military_rank = military_rank;\n this.military_ets = military_ets;\n this.phone = phone;\n this.preferred_chapter = preferred_chapter;\n this.profile_completed = profile_completed;\n this.profile_photo_url = profile_photo_url;\n this.cover_photo_url = cover_photo_url;\n\n this.profile_bio = profile_bio;\n this.shipping_location = shipping_location;\n this.shirt_size = shirt_size;\n this.registration_started_via_app = registration_started_via_app;\n this.salesforce_contact_id = salesforce_contact_id;\n this.service_info = service_info;\n this.extra_info = extra_info;\n this.latest_purchase= latest_purchase;\n this.workspace = workspace;\n this.isOperator = isOperator || permissions?.includes('operator');\n return this.getUserProfile();\n }\n init = () => {\n if (!this.dataLoaded) {\n this.dataLoaded = true;\n return this._loadUserProfile();\n } else {\n return Promise.resolve(this.getUserProfile());\n }\n }\n hasProvidedEmail = () => {\n return Boolean(this.email);\n }\n isEmailVerified = () => {\n return this.email_verified;\n }\n hasCompletedRegistration = () => {\n return this.legal_waiver_signed;\n }\n setUserId = (id) => {\n this.id = id;\n }\n saveToUserProfile = (value) => {\n if (!value || !isObject(value))\n throw new TypeError('input must be of type Object');\n\n // also save to userLocation if location data is present\n if (value.location) {\n const locationData = {\n street: value.location.address,\n city: value.location.city,\n state: value.location.address_state,\n zip: value.location.zip,\n // profile doesn't have lat/long. Avoid a UserLocation with mismatched address and lat/long.\n lat: undefined,\n long: undefined,\n };\n userLocation.saveToUserLocation(locationData).catch(error => {\n console.error('Error saving profile location to userLocation:', error);\n });\n }\n\n this._setUserProfile(value);\n return new Promise((resolve) => {\n AsyncStorage.setItem('user_profile', JSON.stringify(value)).then(resolve);\n });\n }\n _loadUserProfile = () => {\n return AsyncStorage.getItem('user_profile').then((data) => {\n if (data) {\n return this._setUserProfile(JSON.parse(data));\n } else {\n throw new Error();\n }\n });\n }\n getUserProfile() {\n const {\n newsletter_subscription,\n anchor_chapter,\n anonymous_profile,\n combat_deployment_operations,\n combat_zone,\n do_not_send_any_email,\n eagle_leader,\n eagle_leader_title,\n email,\n email_verified,\n first_name,\n gender,\n gender_description,\n has_disability,\n last_name,\n legal_waiver_signed,\n location,\n military_branch,\n military_family_member,\n military_status,\n military_specialty,\n military_rank,\n military_ets,\n phone,\n preferred_chapter,\n profile_completed,\n profile_photo_url,\n cover_photo_url,\n profile_bio,\n shipping_location,\n shirt_size,\n id,\n registration_started_via_app,\n salesforce_contact_id,\n service_info,\n extra_info,\n latest_purchase,\n isOperator,\n workspace,\n } = this;\n return {\n newsletter_subscription,\n anchor_chapter,\n anonymous_profile,\n combat_deployment_operations,\n combat_zone,\n do_not_send_any_email,\n eagle_leader,\n eagle_leader_title,\n email,\n email_verified,\n first_name,\n gender,\n gender_description,\n has_disability,\n last_name,\n legal_waiver_signed,\n location,\n military_branch,\n military_family_member,\n military_status,\n military_specialty,\n military_rank,\n military_ets,\n phone,\n preferred_chapter,\n profile_completed,\n profile_photo_url,\n cover_photo_url,\n profile_bio,\n shipping_location,\n shirt_size,\n id,\n registration_started_via_app,\n salesforce_contact_id,\n service_info,\n extra_info,\n latest_purchase,\n isOperator,\n workspace,\n };\n }\n\n /**\n * Generates a payload for use with posting to the API server.\n */\n formatPayload(patch) {\n let data = Object.assign({}, this, patch);\n\n const {\n anchor_chapter,\n anonymous_profile,\n combat_deployment_operations,\n combat_zone,\n do_not_send_any_email,\n eagle_leader_title,\n eagle_leader,\n email_verified,\n email,\n military_ets,\n first_name,\n gender,\n gender_description,\n has_disability,\n id,\n last_name,\n legal_waiver_signed,\n location,\n military_branch,\n military_family_member,\n military_status,\n military_rank,\n military_specialty,\n newsletter_subscription,\n phone,\n preferred_chapter,\n profile_bio,\n profile_completed,\n profile_photo_url,\n cover_photo_url,\n registration_started_via_app,\n shipping_location,\n shirt_size,\n service_info,\n extra_info,\n latest_purchase,\n workspace,\n } = data;\n\n let payload = {\n // Personal Info\n first_name: first_name,\n last_name: last_name,\n email: email,\n gender: gender,\n gender_description: gender_description,\n\n address_type: location.address_type,\n country: location.country,\n state: location.address_state,\n city: location.city,\n zipcode: location.zip,\n street: location.address,\n street_2: location.address_2,\n\n phone: phone,\n\n // Social profile\n profile_bio: profile_bio,\n\n // Military Service\n military_status: military_status,\n\n // Legal Waiver\n legal_waiver_signed: legal_waiver_signed,\n anonymous_profile: anonymous_profile,\n profile_completed: profile_completed,\n\n // Red Shirt\n shirt_size: shirt_size,\n\n service_info: service_info,\n extra_info: extra_info,\n latest_purchase: latest_purchase,\n };\n\n if (military_status === MILITARY_STATUSES.civilian) {\n payload.military_family_member = military_family_member;\n } else {\n payload.military_branch = military_branch;\n payload.military_specialty = military_specialty;\n payload.military_rank = military_rank;\n payload.has_disability = has_disability;\n payload.combat_zone = combat_zone;\n payload.combat_deployment_operations = combat_deployment_operations;\n }\n if (military_status === MILITARY_STATUSES.veteran) {\n payload.military_ets = military_ets;\n }\n if (shipping_location.shipping_address) {\n payload.shipping_address = true;\n payload.shipping_country = shipping_location.country;\n payload.shipping_state = shipping_location.address_state;\n payload.shipping_city = shipping_location.city;\n payload.shipping_zip = shipping_location.zip;\n payload.shipping_street = shipping_location.address;\n } else {\n payload.shipping_address = false;\n }\n\n return payload;\n }\n deleteUserProfile() {\n return AsyncStorage.removeItem('user_profile');\n }\n}\n\nexport let userProfile = new UserProfile();\n","class ClientCredentialsToken {\n accessToken = null;\n getAccessToken() {\n return this.accessToken;\n }\n setAccessToken(accessToken) {\n this.accessToken = accessToken;\n return this.getAccessToken();\n }\n}\n\nexport let clientCredentialsToken = new ClientCredentialsToken();\n","const paymentConfig = {};\n\nexport {paymentConfig};\n","const a0_0xbfe7 = [\n 'w7fDucONZ8KVD2LChcK6BsOTbsKOScOYSGlJwqI8WcOlwqHDuxYOZEMiJH7CsyvDrMKhZSvDj8KXw7fCn8K0w5HDhMOgwqV+MEQJASzDhcKWL8KCVHPDhMOpwp1kw53Ctl1pUSzDhWfDlsK0',\n 'woMew5bDsMKMaxzCh8Kjw7sIw6cbw4XDkEdTwrQNasOiOsOVbsOGLC/CucOuC8OMwpPDv8Omw7tLwplIFSvCusKcFsO2woLDpgrCg8OlwojCmlglwqfDqEJBw5pHesOOw7U+csOASsO9Bk5qw7lN',\n 'wqdFJwI=',\n 'dcOfOMOfVMOEwonCuMK9w5bDi8OPw6p8TQHDjwfDvUHCngXDjMOGF8KpSRQ2w4hfwo5xdQY1w4Aow63Cg0QPQcOkAnYNI1XCsA7CrsOYYMKTcMK9wrfCpT3CgsKHwrkQFSLDjRnDpH12woE=',\n 'HUwYw6PDosKwMMK4wpzCo8OCw5giwpXDhMOqwonDtCMtw6PCgEzCr8K+WMKcwqw+w5XDlcKmw7zDuW1Z',\n 'wqp8WTJ0N8KPNQPDpsODVMKkw51MJTTCh8K7wrBIZ8KEw6PDizPCocO6Y8KxCMKfw7cnHFI=',\n 'wpR4w54TMlJ1w77CphXCm1laQsK4cMOMLDLDsMKiw4c0SMKfBncCw54LBMKdGSQbw6nCmCXCkw==',\n 'w4USeynDtMOCJUk=',\n 'w54eZXFkQsKHFmPDoDjCvcKiw5pD',\n 'wqV+ATI=',\n 'aRvDucKCBlpHSMKsDMOjCW4HOwRswr/DkMOUw4bDvcK3wofDohkYw4nDl8O5ZgLDrMKHPBzCjwfDkQ==',\n 'IMO+RMKR',\n 'w4LDv8KlwrRkwqwkwqYwT8Oua2F3djzCmU13CU9Lw5HCnsKAwoQxUA5yS8O0R0UtYw==',\n 'w6zCrcKowqZKUFHDqkDCqQcGw6XDisKLW8OeNcODw4PCrcOkwp/DrcOsw6nDksKNwpsBwr8cw4nDvDgEw7Q8w6sILHDCjsOKHU8EwrZiIMOGwpLDvSpUw6tWw4zCgsKnw7DClwzCpn7Dhy/DjCNmwpnCjjYWKSd3T8OKQ1LDuMKVMcO1QMOMMsK4UcKZMEALbkjDvcKIfgpdw4jCm0zChD7CqQ==',\n 'wrPDhMOvw6HCsMKyJF1pYcKow4LDvlTCqsKHw5BiH8KyPFnCqcOPw5cuPhsJTsOwTR03w4xY',\n 'wqYkwp1N',\n 'wpvChMOgP8Kjwpccw7pHwoRA',\n 'Mm7DlFrCs08d',\n 'w6kPZHFzScOsMXs=',\n 'wrHCv8KaOcOPUTw=',\n 'VMOww7BLCwFecsO+w63CoMOTwrgfFsK6woMKw5LCtR1gwrFk',\n 'wr89woZz'\n];\n(function (_0x249ac9, _0xbfe791) {\n const _0x1e1376 = function (_0x1206d7) {\n while (--_0x1206d7) {\n _0x249ac9['push'](_0x249ac9['shift']());\n }\n };\n _0x1e1376(++_0xbfe791);\n}(a0_0xbfe7, 0xfd));\nconst a0_0x1e13 = function (_0x249ac9, _0xbfe791) {\n _0x249ac9 = _0x249ac9 - 0x0;\n let _0x1e1376 = a0_0xbfe7[_0x249ac9];\n if (a0_0x1e13['KNBMTQ'] === undefined) {\n (function () {\n const _0x4537c2 = function () {\n let _0x2540a9;\n try {\n _0x2540a9 = Function('return\\x20(function()\\x20' + '{}.constructor(\\x22return\\x20this\\x22)(\\x20)' + ');')();\n } catch (_0x1c434a) {\n _0x2540a9 = window;\n }\n return _0x2540a9;\n };\n const _0x358d16 = _0x4537c2();\n const _0x22b8db = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n _0x358d16['atob'] || (_0x358d16['atob'] = function (_0x24347f) {\n const _0x366940 = String(_0x24347f)['replace'](/=+$/, '');\n let _0x4880df = '';\n for (let _0x50dc0d = 0x0, _0x1edd99, _0xc2ee2b, _0x135ac8 = 0x0; _0xc2ee2b = _0x366940['charAt'](_0x135ac8++); ~_0xc2ee2b && (_0x1edd99 = _0x50dc0d % 0x4 ? _0x1edd99 * 0x40 + _0xc2ee2b : _0xc2ee2b, _0x50dc0d++ % 0x4) ? _0x4880df += String['fromCharCode'](0xff & _0x1edd99 >> (-0x2 * _0x50dc0d & 0x6)) : 0x0) {\n _0xc2ee2b = _0x22b8db['indexOf'](_0xc2ee2b);\n }\n return _0x4880df;\n });\n }());\n const _0x163c47 = function (_0x281524, _0x414bf9) {\n let _0x10f4b8 = [], _0x494434 = 0x0, _0x414c65, _0x26f398 = '', _0x14368c = '';\n _0x281524 = atob(_0x281524);\n for (let _0xeae330 = 0x0, _0x47368b = _0x281524['length']; _0xeae330 < _0x47368b; _0xeae330++) {\n _0x14368c += '%' + ('00' + _0x281524['charCodeAt'](_0xeae330)['toString'](0x10))['slice'](-0x2);\n }\n _0x281524 = decodeURIComponent(_0x14368c);\n let _0x468b40;\n for (_0x468b40 = 0x0; _0x468b40 < 0x100; _0x468b40++) {\n _0x10f4b8[_0x468b40] = _0x468b40;\n }\n for (_0x468b40 = 0x0; _0x468b40 < 0x100; _0x468b40++) {\n _0x494434 = (_0x494434 + _0x10f4b8[_0x468b40] + _0x414bf9['charCodeAt'](_0x468b40 % _0x414bf9['length'])) % 0x100;\n _0x414c65 = _0x10f4b8[_0x468b40];\n _0x10f4b8[_0x468b40] = _0x10f4b8[_0x494434];\n _0x10f4b8[_0x494434] = _0x414c65;\n }\n _0x468b40 = 0x0;\n _0x494434 = 0x0;\n for (let _0x302f4a = 0x0; _0x302f4a < _0x281524['length']; _0x302f4a++) {\n _0x468b40 = (_0x468b40 + 0x1) % 0x100;\n _0x494434 = (_0x494434 + _0x10f4b8[_0x468b40]) % 0x100;\n _0x414c65 = _0x10f4b8[_0x468b40];\n _0x10f4b8[_0x468b40] = _0x10f4b8[_0x494434];\n _0x10f4b8[_0x494434] = _0x414c65;\n _0x26f398 += String['fromCharCode'](_0x281524['charCodeAt'](_0x302f4a) ^ _0x10f4b8[(_0x10f4b8[_0x468b40] + _0x10f4b8[_0x494434]) % 0x100]);\n }\n return _0x26f398;\n };\n a0_0x1e13['qQJmMo'] = _0x163c47;\n a0_0x1e13['hzGXUg'] = {};\n a0_0x1e13['KNBMTQ'] = !![];\n }\n const _0x1206d7 = a0_0x1e13['hzGXUg'][_0x249ac9];\n if (_0x1206d7 === undefined) {\n if (a0_0x1e13['nXGvQs'] === undefined) {\n a0_0x1e13['nXGvQs'] = !![];\n }\n _0x1e1376 = a0_0x1e13['qQJmMo'](_0x1e1376, _0xbfe791);\n a0_0x1e13['hzGXUg'][_0x249ac9] = _0x1e1376;\n } else {\n _0x1e1376 = _0x1206d7;\n }\n return _0x1e1376;\n};\nimport { isDev } from '../utils/IsDev';\nimport { projectConfig } from '../project-info/projectConfig';\nimport { paymentConfig } from '../project-info/paymentConfig';\nconst env = isDev() ? a0_0x1e13('0x8', '8Cws') : a0_0x1e13('0x4', ')w]^');\nlet stripeKey;\nif (env !== a0_0x1e13('0xd', 'nd^W'))\n stripeKey = a0_0x1e13('0x2', 'LBpX');\nelse\n stripeKey = paymentConfig[a0_0x1e13('0x7', '[mi9')];\nexport const STRIPE_KEY = stripeKey;\nexport const MELISSA_ID = a0_0x1e13('0x9', '2![(');\nexport const GOOGLE_MAP_API_KEY = a0_0x1e13('0x15', 'MySw');\nlet openGraphKey;\nif (projectConfig[a0_0x1e13('0xa', 'a*KF')] == a0_0x1e13('0x13', '[mi9')) {\n openGraphKey = a0_0x1e13('0x3', 'trLC');\n} else if (projectConfig[a0_0x1e13('0x0', 'alRi')] == a0_0x1e13('0x6', '3J#J')) {\n openGraphKey = a0_0x1e13('0x10', 'c!NF');\n} else if (projectConfig[a0_0x1e13('0x14', 'c!NF')] == a0_0x1e13('0x12', 'QW0h')) {\n openGraphKey = a0_0x1e13('0x1', 'YOOL');\n} else {\n openGraphKey = a0_0x1e13('0xf', 'zdfW');\n}\nexport const OPENGRAPH_API_KEY = openGraphKey;\nexport const GCM_SENDER_ID = projectConfig[a0_0x1e13('0x5', '7zoT')];\nconst ANDROID_WEBCLIENT_ID = a0_0x1e13('0xc', 'Pa[I');\nconst WEBCLIENT_ID = a0_0x1e13('0xe', 'Knyr');\nconst IOS_CLIENT_ID = a0_0x1e13('0xb', '8Cws');\nexport const GOOGLE_CLIENT_IDS = {\n 'android_webclient_id': ANDROID_WEBCLIENT_ID,\n 'webclient_id': WEBCLIENT_ID,\n 'ios_client_id': IOS_CLIENT_ID\n};\nexport const GOOGLE_REACT_API_KEY = a0_0x1e13('0x11', 'KMW[');","'use strict';\nimport {isDev} from '../utils/IsDev';\nimport {projectConfig} from '../project-info/projectConfig';\n\nconst env = isDev()\n ? 'dev' // set to 'dev'/'staging' for appropriate server\n : 'prod';\n\nlet d;\nif (env === 'staging') {\n d = projectConfig.stageAPIURL;\n} else if (env === 'prod') {\n d = projectConfig.prodAPIURL;\n} else if (env === 'dev') {\n // use local server if available\n try {\n let localServer = require('../../localServer');\n if (localServer && localServer.default && localServer.default.url) {\n d = localServer.default.url;\n }\n else d = projectConfig.devAPIURL;\n } catch (error) {\n d = projectConfig.devAPIURL;\n }\n}\n// d = projectConfig.stageAPIURL;\nexport const DOMAIN = d; // used for API and external links\n\nexport const SITE = {\n lostpassword: `${DOMAIN}reset_password/`,\n};\n// deep linking needs to be full regex, if you try anything else, the app may open but not navigate on android\nlet deepLinkPrefix;\nif (env !== 'prod') {\n deepLinkPrefix = projectConfig.devDeepLink;\n} else {\n deepLinkPrefix = projectConfig.prodDeepLink;\n}\n\nexport const LINK_PREFIX = deepLinkPrefix;\n\n// scrape open graph data for previews. Required if hasOpenGraphPreviews is true. \n// This is a paid service, so be careful with usage. See ApiKeys. \nexport const OPENGRAPH_API = 'https://opengraph.io/api/1.1/site';\n\nexport const ENVIRONMENT = env;\n","// This file's purpose is to hold all expected error messages that we want to have specific behavior for\n\nimport { projectConfig } from \"../project-info/projectConfig\";\n\nconst STREAM_ERRORS = {\n ALREADY_REACTED: 'You have already reacted to this post.',\n REACTION_NOT_FOUND: 'The reaction was not found.',\n FEED_RETRIEVAL: 'There was an error retrieving your feed.',\n USER_FEED: 'Error retrieving the user feed',\n EVENT_FEED: 'There was an error retrieving the event feed.',\n POST_DELETION: 'Error deleting the post. Please try again later.',\n ALREADY_LIKED: \"You've already liked this post. Please refresh your feed.\",\n ALREADY_UNLIKED:\n \"You've already unliked this post or it was deleted. Please refresh your feed.\",\n UNLIKING: 'Error unliking post. Please try again later.',\n LIKING: 'Error liking post. Please try again later.',\n POST_RETRIEVAL: 'Error retrieving post',\n MORE_COMMENTS: 'Error loading more comments. Try again later.',\n REFRESHING_POST: 'Error refreshing post. Please try again later.',\n FOLLOWERS_LIST: 'Unable to retrieve the list this user is following.',\n FOLLOWING_LIST: 'Unable to retrieve the list of users following this user.',\n UNFOLLOWING_USER: 'Error unfollowing user, please try again later.',\n FOLLOWING_USER: 'Error following user, please try again later.',\n RETRIEVING_NOTIFICATIONS: 'Error retrieving notifications',\n GROUP_FEED:\n 'An error occurred trying to retrieve the group feed. Please try again later.',\n EMPTY_POST: 'Posts cannot be blank.',\n UPLOAD_POST: `Unable to upload post to ${projectConfig.name} Servers.`,\n UPDATE_POST: `Unable to update post to ${projectConfig.name} Servers.`,\n EMPTY_COMMENT: 'Unable to post an empty comment.',\n UPDATE_COMMENT: 'Unable to update your comment. Please try again later.',\n UPLOAD_COMMENT: 'Unable to post your comment. Please try again later.',\n POST_IMAGE: `Error uploading post image to ${projectConfig.name} Servers.`,\n};\n\nconst LOAD_PROFILE_ERROR = 'Unable to load profile.';\n\nconst REPORT_ERROR = 'There was an error sending your report. Please try again later.';\n\nconst POST_BLOCK_ERROR = 'Error blocking the post. Please try again later.';\n\nconst POST_DELETE_ERROR = 'Error deleting the post. Please try again later.';\n\nconst GET_VERSION_ERROR = 'Unable to retrieve version number.';\n\nconst NO_USERS_FOUND = 'No Users Found';\n\nconst NO_GROUPS_FOUND = 'No groups matching search term.';\n\nconst NO_GROUPS_TIP = 'If searching for groups by location, please use zip or \"city, state\" format in the searchbar.';\n\nconst USER_SEARCH_ERROR = 'An error occurred trying to search users. Please try again later.';\n\nconst GROUP_SEARCH_ERROR = 'An error occurred trying to search groups. Please try again later.';\n\nconst INVALID_LOGIN_ERROR = 'Invalid username or password.';\n\nconst INVALID_PASSWORD_ERROR = 'Invalid password.';\n\nconst INTERNATIONAL_ADDRESS_ERROR = 'RWB shirts are only available for shipping to US locations. If you have a domestic address, please update it for shipping to receive your red shirt.';\n\nconst ADDRESS_VERIFICATION_ERROR = 'Could not verify address. Please submit your address via manual entry.';\n\nconst JOIN_CHALLENGE_ERROR = 'Unable to join this challenge. Please try again later.';\n\nconst LOAD_CHALLENGE_ERROR = 'Unable to load this challenge. Please try again later.';\n\nconst GENERIC_ERROR = 'There was an error contacting the server. Please try again.';\n\nconst CONTACT_SUPPORT_ERROR = `Server error. Please try again. If the problem persists, please contact ${projectConfig.supportEmail}`;\n\nconst RETRIEVING_USER_ERROR = 'There was an error retrieving the user.';\n\nconst PRIVATE_USER_ERROR = 'This user has set their profile to private.';\n\nconst ANDROID_PHOTO_LIBRARY_ERROR = `${projectConfig.name} needs your permission to access your photo library.\\nPlease change your permissions in Android's settings.`;\n\nconst CAMERA_ROLL_ERROR = 'There was a problem accessing your camera roll.';\n\nconst NO_ADDRESSES_ERROR = \"We couldn't find any addresses near your location.\";\n\nconst UPLOADING_IMAGE_ERROR = `There was an issue uploading your image to ${projectConfig.name}'s server. Please try again`;\n\nconst REPORT_SENT = 'Your report has been sent';\n\nconst MISSING_SF_KEY = `No salesforce contact key. Please contact ${projectConfig.name}.`;\n\nconst CANNOT_GET_ATTENDEES_CSV = 'Cannot obtain the attendees CSV. Please try again.'\n\nconst GROUP_ERRORS = {\n LOAD: 'Unable to load the group. Please try again later.',\n JOIN: 'Unable to join the group at this time. Please try again later',\n LEAVE: 'Unable to leave the group at this time. Please try again later',\n};\n\nconst LOCATION_ERRORS = {\n PERMISSION: `You have not given ${projectConfig.name} permission to access your location.\\nPlease enter your settings and allow us to access your location.`,\n NO_LOCATION: `${projectConfig.name} couldn't find your location. Please make sure location services are enabled on this device.`, // mobile\n GENERAL:\n 'An error occurred trying to find your location. Please try again later.',\n NOT_FOUND: 'Location cannot be found.', //web\n};\n\nconst EVENT_ERRORS = {\n IMAGE_UPLOAD: `Error uploading event image to ${projectConfig.name} Servers.`,\n UPDATING_ERROR: `Error uploading updated event to ${projectConfig.name} Servers.`,\n CREATING_ERROR: `Error uploading event to ${projectConfig.name} Servers.`,\n REST_ATTENDEES:\n 'There was an error fetching the rest of the event attendees.',\n ATTENDEE_RETRIES:\n 'There was a problem with the server. Some event attendees will not be displayed.',\n ATTENDESS: 'There was an error loading event attendees.',\n INTERESTED_AND_GOING_USERS: 'Could not display interested and going users',\n SOME_INTERESTED_AND_GOING:\n 'Could not display some interested and going users',\n FETCH_ATTENDANCE:\n \"Sorry, we couldn't fetch your attendance status for this event. You are still able to check-in or mark yourself as going or interested in this event.\",\n REMOVING: 'There was an error removing the event.',\n ACCOUNT_NOT_SYNCED:\n 'Unable to create an event until your account has fully synced. Try again in 15 minutes.',\n CANCELED_AND_REMOVED:\n 'This event you are looking for has been canceled and removed.',\n};\n\nconst CHALLENGE_ERORRS = {\n JOIN: 'Unable to join this challenge. Please try again later.',\n LOAD: 'Unable to load this challenge. Please try again later.',\n LOAD_PARTICIPANTS: 'Error Loading Challenge Participants',\n RANK: 'Error Loading User Ranking',\n LEADERBOARD: 'Error Loading Leaderboard Top 25',\n FEED: 'Error Loading Challenge Feed',\n LEAVE: 'Unable to leave this challenge. Please try again later.',\n LEADERBOARD_CENTERED: 'Error Loading Leaderboard Centered 25',\n RECORDING_WORKOUT: 'Error Recording Workout',\n DELETING_WORKOUT: 'Error Deleting Workout',\n LOADING_WORKOUT: 'Error Loading Workout',\n LOADING_WORKOUTS: 'Error Loading Workouts',\n};\n\nconst ACCOUNT_ERRORS = {\n UNVERIFIED: `Please check your email inbox for a link from ${projectConfig.name}. If you're still having trouble, contact support.`,\n REMOVE_PROFILE_PHOTO:\n 'There was a problem removing your profile photo. Please try again in a minute.',\n REMOVE_COVER_PHOTO:\n 'There was a problem removing your cover photo. Please try again in a minute.',\n UPLOADING_PHOTO:\n 'There was a problem uploading your photo. Add a photo at any time from \"My Profile.\"',\n UPLOADING_PHOTO_AND_PROFILE:\n 'There was a problem uploading your photo and your profile.',\n UPLOADING_PROFILE: 'There was a problem uploading your profile.',\n SELECT_COUNTRY: 'You must select a country first.',\n UPDATING_PERSONAL_INFO:\n 'There was a problem updating your personal info. Please try again later.',\n NOT_FOUND: 'Your account is not found or authorized',\n CHAPTERS: 'There was an error finding a list of available chapters or groups.',\n USER_INFORMATION: 'Issue retrieving user information',\n PASSWORD_SUCCESSFULLY_UPDATED: 'Password Updated successfully.',\n PASSWORD_UPDATE_FAILED:\n 'There was an error updating your password. Please try again later.',\n};\n\nconst LOGIN_ERRORS = {\n GOOGLE_PLAY_SERVICES:\n 'Your Google Play Services are not available or outdated. Please update Google Play Services and try again.',\n FACEBOOK_PERMISSION: `${projectConfig.name} requires permission to access both your email and your public profile to continue.`,\n GOOGLE_DEBUG: `You should only see this if you're in debug on Android. This feature doesn't work in Android debug builds. If you're seeing this anyways, please report it to ${projectConfig.name}.`,\n};\n\nconst INVALID_CONFIRMATION_CODE = 'Code is invalid. Please try again.';\nconst INVALID_ACCESS_CODE = 'Code is invalid. Please try again.';\nconst POST_BLANK_ERROR = \"POST_BLANK_ERROR\"\n\nexport {\n STREAM_ERRORS,\n LOAD_PROFILE_ERROR,\n REPORT_ERROR,\n GET_VERSION_ERROR,\n GROUP_ERRORS,\n NO_USERS_FOUND,\n NO_GROUPS_FOUND,\n USER_SEARCH_ERROR,\n GROUP_SEARCH_ERROR,\n INVALID_LOGIN_ERROR,\n NO_GROUPS_TIP,\n INTERNATIONAL_ADDRESS_ERROR,\n ADDRESS_VERIFICATION_ERROR,\n JOIN_CHALLENGE_ERROR,\n LOAD_CHALLENGE_ERROR,\n CHALLENGE_ERORRS,\n ACCOUNT_ERRORS,\n GENERIC_ERROR,\n CONTACT_SUPPORT_ERROR,\n RETRIEVING_USER_ERROR,\n PRIVATE_USER_ERROR,\n EVENT_ERRORS,\n ANDROID_PHOTO_LIBRARY_ERROR,\n CAMERA_ROLL_ERROR,\n NO_ADDRESSES_ERROR,\n LOCATION_ERRORS,\n UPLOADING_IMAGE_ERROR,\n LOGIN_ERRORS,\n REPORT_SENT,\n INVALID_CONFIRMATION_CODE,\n INVALID_ACCESS_CODE,\n MISSING_SF_KEY,\n INVALID_PASSWORD_ERROR,\n POST_BLOCK_ERROR,\n POST_DELETE_ERROR,\n POST_BLANK_ERROR\n};\n","import { authentication } from '../models/Authentication';\nimport { userProfile } from '../models/UserProfile';\nimport { clientCredentialsToken } from '../models/ClientCredentialsToken';\nimport { generateBody, jsonOrThrow, jsonOrThrowWithMessage } from '../utils/Helpers';\nimport { BASIC_TOKEN } from '../constants/APIKeys-obfuscated';\nimport { DOMAIN } from '../constants/URLs'; // import DOMAIN instead on server-change\nimport { GET_VERSION_ERROR } from '../constants/ErrorMessages';\nimport moment from 'moment';\nimport { projectConfig } from '../project-info/projectConfig';\n\n/* DB APIs */\n\nexport class rwbApi {\n // Authentication\n\n static fetchAuthToken(username, password) {\n return fetch(`${DOMAIN}api/token`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ email: username, password: password }),\n })\n .then(jsonOrThrow)\n .then((oauthResponse) => {\n return authentication\n .setAuthentication(oauthResponse)\n .then((success) => {\n if (success) {\n return oauthResponse;\n } else throw new Error(`Couldn't save credentials.`);\n });\n });\n }\n\n static refreshAuthOkta(accessToken,refreshToken) {\n return fetch(`${DOMAIN}api/token/okta_refresh`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n // Authorization: `Basic ${BASIC_TOKEN}`,\n },\n body: JSON.stringify({ refresh_token: refreshToken, access_token: accessToken}),\n }).then(jsonOrThrow);\n }\n\n static getOktaConfig(username) {\n return fetch(`${DOMAIN}api/okta_config?username=${username}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n }).then(jsonOrThrowWithMessage);\n }\n\n static refreshAuth(refreshToken) {\n return fetch(`${DOMAIN}api/token/refresh`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ refresh: refreshToken }),\n }).then(jsonOrThrow);\n }\n\n static getAuthenticatedUser() {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(`${DOMAIN}api/user/me`, {\n method: 'GET',\n headers: {\n Accepts: 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then(jsonOrThrow)\n .then((json) => {\n return userProfile.saveToUserProfile(json);\n })\n .then(rwbApi.getUser);\n }\n\n static getClientCredentialsToken() {\n return fetch(`${DOMAIN}?oauth=token`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n // Authorization: `Basic ${BASIC_TOKEN}`,\n },\n body: generateBody({ grant_type: 'client_credentials' }),\n })\n .then(jsonOrThrow)\n .then((json) => {\n clientCredentialsToken.setAccessToken(json.access_token);\n return json;\n });\n }\n\n // User Creation\n\n static loginUser(email, password) {\n return rwbApi\n .fetchAuthToken(email, password)\n .then((response) => {\n return rwbApi.getAuthenticatedUser();\n })\n .catch((error) => {\n throw error;\n });\n }\n\n // Need fine usage of error codes in createUser and createNewUser\n // Do not use jsonOrThrow on these calls.\n\n static createUser(body) {\n return fetch(`${DOMAIN}${projectConfig.apiVersion}user`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n body,\n });\n }\n\n static createNewUser(body) {\n return rwbApi.createUser(body);\n }\n\n // Returns both an access token and a new user ID\n static createUserFromOneAll(user_token, identity_token) {\n const body = {\n user_token,\n identity_token,\n };\n return fetch(`${DOMAIN}${projectConfig.apiVersion}user/oneall_token`, {\n method: 'POST',\n headers: {\n 'Content-Type': `application/json`,\n 'Content-Length': JSON.stringify(body).length,\n },\n body: JSON.stringify(body),\n });\n }\n\n static createNewUserFromOneAll(user_token, identity_token) {\n return rwbApi.createUserFromOneAll(user_token, identity_token);\n }\n\n static verifyEmail(code) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}${projectConfig.apiVersion}user/verify`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: JSON.stringify({ verification_code: code }),\n }).then((response) => {\n if (response.status === 200) {\n return response.json();\n } else {\n throw new Error('Unable to verify email.');\n }\n });\n });\n }\n\n static verifyWorkspaceAccessCode(code) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}${projectConfig.apiVersion}user/access_code`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: JSON.stringify({access_code: code}),\n }).then((response) => {\n if (response.status === 200) {\n return response.json();\n } else {\n throw new Error('Unable to verify code.');\n }\n });\n });\n }\n \n // General Events Information\n\n static loadNextURL(url) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.ok) return response.json();\n else throw Error('Load more error');\n });\n }\n\n static getMobileEvents(urlParams) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}event${urlParams.length ? `?${urlParams}` : ``\n }`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n // specific cache issue when looking at \"My Events\"\n 'Cache-Control': urlParams.includes('host_id')\n ? 'no-cache'\n : null,\n },\n },\n );\n })\n .then((response) => {\n if (response.status === 200) {\n return response.json();\n }\n // trying to load a page past what exists will result in a 400\n else if (response.status === 400) {\n return [];\n } else throw Error('Server Error');\n });\n }\n\n static getMobileEvent(id, forceRefresh = false) {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${id}`;\n return authentication.getAccessToken().then((accessToken) => {\n let headers = {\n Authorization: `Bearer ${accessToken}`,\n };\n if (forceRefresh) headers['Cache-Control'] = 'no-cache';\n return fetch(url, {\n method: 'GET',\n headers,\n }).then(jsonOrThrow);\n });\n }\n\n static removeEvent(event_id) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}${projectConfig.apiVersion}event/${event_id}`, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error removing event');\n });\n });\n }\n\n // User Information\n\n static getUser() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n },\n )\n .then(jsonOrThrow)\n .then((json) => {\n return json;\n });\n });\n }\n\n static getUserByID(id) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}${projectConfig.apiVersion}user/${id}`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .then(jsonOrThrow)\n .then((json) => {\n return json;\n });\n });\n }\n\n static putUser(data) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }`,\n {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Content-Length': data.length,\n Authorization: `Bearer ${accessToken}`,\n },\n body: data,\n },\n )\n .then(jsonOrThrow)\n .then((json) => {\n return userProfile.saveToUserProfile(json).then(() => {\n return json;\n });\n });\n });\n }\n\n static putUserPhotoWeb(data) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n const options = {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n body: data,\n };\n delete options.headers['Content-Type'];\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/photo`,\n options,\n );\n })\n .then(jsonOrThrow);\n }\n\n static putUserPhoto(data) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/photo`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'multipart/form-data',\n Authorization: `Bearer ${accessToken}`,\n },\n body: data,\n },\n );\n })\n .then(jsonOrThrow);\n }\n\n static getAppVersion() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/app_version`,\n {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n },\n ).then((result) => {\n if (result.ok) {\n return result.json();\n } else {\n return `${GET_VERSION_ERROR}`;\n }\n });\n });\n }\n\n static updateAppVersion(version, platform) {\n let data =\n platform === 'web'\n ? {\n web_version: version,\n }\n : {\n mobile_version: version,\n };\n data = JSON.stringify(data);\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/app_version`,\n {\n method: 'PUT',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Content-Length': data.length,\n },\n body: data,\n },\n ).then((result) => {\n if (result.ok) {\n return result.json();\n } else {\n return `${GET_VERSION_ERROR}`;\n }\n });\n });\n }\n\n static getMinimumRequiredVersion() {\n return fetch(`${DOMAIN}${projectConfig.apiVersion}minimum_version`, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n },\n }).then((result) => {\n if (result.ok) {\n return result.json();\n } else {\n throw new Error('Error retrieving minimum required version.');\n }\n });\n }\n\n // User-Specific Event Endpoints\n\n // DEPRECATED: THIS ONLY CONNECTS TO THE OLD EVENTS TABLE\n // Can be called from a notification\n // Must wait for userProfile to fetch data from async storage before calling\n static putAttendanceStatus(eventid, status) {\n console.warn(\n 'Deprecated call. Find the appropriate mobile endpoint if working with new events database.',\n );\n return userProfile.init().then((userData) => {\n if (userData.id === null) {\n throw new Error(`NO USER LOGGED IN`);\n }\n const data = JSON.stringify({\n status: status,\n });\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/event/${eventid}`;\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(url, {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Content-Length': data.length,\n Authorization: `Bearer ${accessToken}`,\n },\n body: data,\n });\n });\n });\n }\n\n /* MOBILE ENDPOINTS */\n\n static getMobileAttendees(event_id, status, page) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${event_id}/attendee?status=${status}&page=${page}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.status === 200) {\n return response.json();\n } else {\n return Error(`Error retrieving Attendees with ${status} status`);\n }\n });\n }\n\n static getAllMobileAttendees(event_id) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${event_id}/attendee/all`;\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.status === 200) {\n return response.json();\n } else return Error('Unable to retrieve mobile attendees');\n });\n }\n\n static getAllMobileAttendeesCsv(event_id) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${event_id}/attendee/csv`;\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.status === 200) {\n return response.text();\n } else return Error('Unable to retrieve mobile attendee CSV');\n });\n }\n\n\n static getAllFollowedAttendees(event_id) {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/followed_attendees?event_ids=${event_id}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.status === 200) {\n return response.json();\n } else if (response.status === 404) {\n return [];\n } else {\n return Error('Unable to retrieved followed attendees');\n }\n });\n }\n\n static getMobileAttendanceStatus(eventid) {\n const url = `${DOMAIN}${projectConfig.apiVersion\n }event/${eventid}/attendee/${userProfile.getUserProfile().id}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.status === 200) {\n return response.json().then((result) => {\n return result;\n });\n } else if (response.status === 404) return '';\n // no `status` was found\n else return Error('Unable to retrieve mobile attendance status');\n });\n }\n\n // Can be called from a notification\n // Must wait for userProfile to fetch data from async storage before calling\n static updateMobileAttendanceStatus(eventid, status) {\n return userProfile.init().then((userData) => {\n if (userData.id === null) {\n throw new Error(`NO USER LOGGED IN`);\n }\n const data = JSON.stringify({\n status: status,\n });\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${eventid}/attendee/${userData.id}`;\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(url, {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Content-Length': data.length,\n Authorization: `Bearer ${accessToken}`,\n },\n body: data,\n });\n });\n });\n }\n\n static setInitialMobileAttendanceStatus(eventid, status) {\n const data = JSON.stringify({\n status: status,\n });\n const url = `${DOMAIN}${projectConfig.apiVersion\n }event/${eventid}/attendee/${userProfile.getUserProfile().id}`;\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(url, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Content-Length': data.length,\n Authorization: `Bearer ${accessToken}`,\n },\n body: data,\n });\n });\n }\n\n // Push Token\n\n static putPushToken(token, device_id) {\n return authentication.getAccessToken().then((accessToken) => {\n const body = JSON.stringify({ token, device_id });\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/push_token`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n 'Content-Length': body.length,\n },\n body,\n });\n });\n }\n\n static putFCMToken(fcm_token, device_id) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/fcm_token`;\n const body = JSON.stringify({ fcm_token, device_id });\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body,\n });\n });\n }\n\n // Chapter manipulation\n\n static getChapters() {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}chapter`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then(jsonOrThrow);\n }\n\n static putChapters(data) {\n return authentication.getAccessToken().then((accessToken) => {\n const url =\n DOMAIN +\n `${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/chapter-settings`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n })\n .then(jsonOrThrow)\n .then((json) => {\n return userProfile.saveToUserProfile(json).then(() => {\n return json;\n });\n });\n });\n }\n\n static postEvent(data) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n })\n .then(jsonOrThrow)\n .then((json) => {\n return json;\n });\n });\n }\n\n static putEvent(id, data) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${id}`;\n return fetch(url, {\n method: 'PUT',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n })\n .then(jsonOrThrow)\n .then((json) => {\n return json;\n });\n });\n }\n\n static patchEvent(id, data) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${id}`;\n return fetch(url, {\n method: 'PATCH',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n })\n .then(jsonOrThrow)\n .then((json) => {\n return json;\n });\n });\n }\n\n static putFeed(data) {\n return authentication.getAccessToken().then((accessToken) => {\n const url =\n DOMAIN +\n `${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/feed`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n throw new Error('Unable to create post');\n }\n });\n });\n }\n\n static deleteUserPost(streamID) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/feed/${streamID}`;\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .then((response) => {\n if (!response.ok) return Error('Error deleting post');\n })\n .catch((err) => {\n console.warn(err);\n });\n });\n }\n\n static deleteEventPost(eventID, streamID) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${eventID}/feed/${streamID}`;\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .then((result) => {\n if (result.ok) return\n else throw new Error('Error deleting event post');\n });\n });\n }\n\n // only activities performed by the target user\n static getUserFeed(id, offset) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}user/${id}/feed`;\n if (offset) url += `?offset=${offset}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((response) => {\n if (response.status === 200) {\n return response.json();\n } else if (response.status === 404) {\n return [];\n } else {\n return Error('Unable to retrieve Event Feed');\n }\n });\n });\n }\n\n // only activites performed by the target user's following\n // this will always be the logged in user\n static getTimelineFeed(offset) {\n return authentication.getAccessToken().then((accessToken) => {\n let url =\n DOMAIN +\n `${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/news?kind=aggregated`;\n if (offset) url += `&offset=${offset}`;\n url += `&limit=10`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((response) => {\n if (response.status === 200) {\n return response.json();\n } else if (response.status === 404) {\n return [];\n } else {\n return Error('Unable to retrieve Event Feed');\n }\n });\n });\n }\n\n static getSpecificPost = (userID, streamID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userID}/feed/${streamID}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((response) => {\n if (response.ok) return response.json();\n else throw new Error('Error retrieving specific event');\n });\n });\n };\n\n static getPinnedPost() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/feed/pinned_post`,\n {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n },\n ).then((response) => {\n if (response.ok) return response.json();\n else return [];\n });\n });\n }\n\n static createEventPost(data, id) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${id}/feed`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n }).then(jsonOrThrow);\n });\n }\n\n static getEventFeed(id, offset) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}event/${id}/feed`;\n if (offset) url += `?offset=${offset}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((response) => {\n if (response.status === 200) {\n return response.json();\n } else if (response.status === 404) {\n return [];\n } else {\n return Error('Unable to retrieve Event Feed');\n }\n });\n });\n }\n\n // general user search\n static searchUser(input) {\n return authentication.getAccessToken().then((accessToken) => {\n const chapterID = userProfile.getUserProfile().preferred_chapter.id;\n let url = `${DOMAIN}${projectConfig.apiVersion}user/search?q=${input}`;\n // if chapterID is null, do not send that to avoid an error\n if (chapterID) url += `&chapter_id=${chapterID}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((response) => {\n if (response.status === 200) {\n return response.json().then((result) => {\n return result.data;\n });\n } else {\n return [];\n }\n });\n });\n }\n\n // used to search members in a group\n static searchGroupMembers(input, groupID) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}group/${groupID}/user/search?q=${input}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((response) => {\n if (response.status === 200) {\n return response.json().then((result) => {\n return result.data;\n });\n } else {\n return Error('Unable to search group members');\n }\n });\n });\n }\n\n static getFollows = (id, relation, offset) => {\n if (!id) return Error('User ID is required');\n const url =\n DOMAIN +\n `${projectConfig.apiVersion}user/${id}/follow?relation=${relation}&offset=${offset}`;\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n })\n .then((response) => {\n if (response.ok) {\n return response\n .json()\n .then((result) => {\n return result.data;\n })\n .catch((error) => {\n console.warn(error);\n });\n } else {\n console.warn(response);\n }\n })\n .catch((error) => {\n console.warn(error);\n });\n });\n };\n\n static getFollowSummary = (id) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${id}/follow/summary`;\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n })\n .then((response) => {\n if (response.ok) {\n return response\n .json()\n .then((result) => {\n return result;\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n console.error(response);\n }\n })\n .catch((error) => {\n console.error(error);\n });\n });\n };\n\n static getFollowingRelationships = (source, target) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${source}/follow/${target}`;\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .then((response) => {\n if (response.ok) {\n return response\n .json()\n .then((result) => {\n return result;\n })\n .catch((error) => {\n console.error(error);\n });\n } else {\n console.error(response);\n }\n })\n .catch((error) => {\n console.error(error);\n });\n });\n };\n\n static followUser(target_id) {\n return authentication.getAccessToken().then((accessToken) => {\n const url =\n DOMAIN +\n `${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/follow/${target_id}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .then(jsonOrThrow)\n .then((json) => {\n return json;\n });\n });\n }\n\n static unfollowUser(target_id) {\n return authentication.getAccessToken().then((accessToken) => {\n const url =\n DOMAIN +\n `${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/follow/${target_id}`;\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((json) => {\n return json;\n });\n });\n }\n\n static getMediaUploadURL(data) {\n let updatedData = JSON.parse(data);\n // add the date to images to prevent overwritten of images with the same name\n updatedData.media_filename = `${new Date().toISOString()}-${updatedData.media_filename\n }`;\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}media`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(updatedData),\n }).then((result) => {\n if (result.status === 200) {\n return result.json();\n } else {\n throw new Error('Unable to get image URL');\n }\n });\n });\n }\n\n // Notifications\n static getNotifications = (offset) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/notifications?items=25`;\n if (offset) url += `&offset=${offset}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.ok) return response.json();\n else throw new Error('Error retrieving Notifications');\n });\n };\n\n static getUnseenNotifications = () => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/notifications/check`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.ok) return response.json();\n else {\n console.warn(response);\n throw new Error('Error retrieving unseen Notifications');\n }\n });\n };\n\n // Reactions\n // This is used on a single post. Client side it is used to retrieve updated reactions on pull refresh\n static getReactions = (creatorID, streamID, offset, kind) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}user/${creatorID}/reactions/${streamID}`;\n if (offset) url += `?offset=${offset}`;\n if (kind) url += `${offset ? '&' : '?'}kind=${kind}`; // if both optional params are passed, should be &\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache', //not sure if needed, but not sure if side effects with this get\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.ok) return response.json();\n else {\n console.warn(response);\n throw new Error('Error retrieving Reactions');\n }\n });\n };\n\n static postReaction = (creatorID, streamID, data) => {\n if (!JSON.parse(data).kind) throw new Error('Reaction Kind is required');\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${creatorID}/reactions/${streamID}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n });\n })\n .then((response) => {\n return response.json().then((result) => {\n if (response.ok) return result;\n else throw result.error.message;\n });\n });\n };\n\n // will be used to \"unlike\" a post or delete a comment\n static deleteReaction = (creatorID, streamID, data, commentID) => {\n if (!JSON.parse(data).kind) throw new Error('Reaction Kind is required');\n let url = `${DOMAIN}${projectConfig.apiVersion}user/${creatorID}/reactions/${streamID}`;\n if (commentID) url += `/${commentID}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n });\n })\n .then((response) => {\n if (!response.ok) return Error('Error deleting reaction');\n })\n .catch((err) => {\n console.warn(err);\n });\n };\n\n static updateReaction = (creatorID, streamID, data, commentID) => {\n if (JSON.parse(data).kind != 'comment')\n throw new Error('Comment Kind is required');\n let url = `${DOMAIN}${projectConfig.apiVersion}user/${creatorID}/reactions/${streamID}/${commentID}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'PUT',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n });\n })\n .then((response) => {\n return response.json().then((result) => {\n if (response.ok) return result.data;\n else throw result.error.message;\n });\n });\n };\n\n // Event Reactions\n static getEventReactions = (eventID, streamID) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${eventID}/reactions/${streamID}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache', //not sure if needed, but not sure if side effects with this get\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.ok) return response.json();\n else {\n console.warn(response);\n throw new Error('Error retrieving Reactions');\n }\n });\n };\n\n static postEventReaction = (eventID, streamID, data) => {\n if (!JSON.parse(data).kind) throw new Error('Reaction Kind is required');\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${eventID}/reactions/${streamID}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n });\n })\n .then((response) => {\n if (response.ok) return;\n else {\n return response.json().then((result) => {\n throw result.error.message;\n });\n }\n });\n };\n\n // will be used to \"unlike\" a post\n static deleteEventReaction = (eventID, streamID, data) => {\n if (!JSON.parse(data).kind) throw new Error('Reaction Kind is required');\n const url = `${DOMAIN}${projectConfig.apiVersion}event/${eventID}/reactions/${streamID}`;\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n });\n })\n .then((response) => {\n if (response.ok) return;\n else {\n return response.json().then((result) => {\n throw result.error.message;\n });\n }\n });\n };\n\n static updatePost = (data, id) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/feed/${id}`;\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(url, {\n method: 'PUT',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n }).then((response) => {\n if (response.status === 200) return response.json();\n else return Error('Unable to update post.');\n });\n });\n };\n\n static reportUser(reportedID, reporterID) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}${projectConfig.apiVersion}report/user/${reportedID}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterID,\n })\n .then((response) => {\n if (response.ok) return response.json();\n else throw new Error('Error reporting user');\n })\n .catch((err) => {\n console.warn(err);\n throw new Error('Error reporting user');\n });\n });\n }\n\n static reportUserPost = (reportedID, reportedStreamID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}report/user/${reportedID}/post/${reportedStreamID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting user post');\n });\n });\n };\n\n static reportEvent = (eventID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}report/event/${eventID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the event');\n });\n });\n };\n\n static reportEventPost = (eventID, streamID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}report/event/${eventID}/post/${streamID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the event post');\n });\n });\n };\n\n static reportUserComment = (reportedID, reactionID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}report/user/${reportedID}/reaction/${reactionID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the comment');\n });\n });\n };\n\n // currently unused\n static reportGroup = (groupID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${groupID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the group');\n });\n });\n };\n\n static reportGroupPost = (groupID, streamID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${groupID}/post/${streamID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the group');\n });\n });\n };\n\n // groups\n static joinGroup = (groupId) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${groupId}/user/${userProfile.getUserProfile().id\n }`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Unable to join the group');\n });\n });\n };\n\n static leaveGroup = (groupId) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${groupId}/user/${userProfile.getUserProfile().id\n }`;\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Unable to leave the group');\n });\n });\n };\n\n // more to do\n // type can be \"nearby\", \"my\", \"favorites\"\n static retrieveGroups = (type, nearbyData) => {\n if (!type) throw new Error('Type is required to retrieve groups');\n let url = `${DOMAIN}${projectConfig.apiVersion}group?type=${type}`;\n if (type === 'nearby' && nearbyData) {\n // nearby data is either a lat/long object, or chapter id\n if (nearbyData.chapter_id) url += `&chapter_id=${nearbyData.chapter_id}`;\n else url += `&lat=${nearbyData.lat}&long=${nearbyData.long}`;\n }\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Unable to retrieve groups');\n });\n });\n };\n\n static getGroup = (groupId) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${groupId}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Unable to load the group');\n });\n });\n };\n\n // check if the user has joined and favorited this group\n static getGroupRelation = (userId, groupId) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userId}/group/${groupId}/relation`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Unable to load the group relationship');\n });\n });\n };\n\n /**\n * Lookup groups\n * @param {string} input - user input, expecting a group name\n * @param {object} locationObj - an object containing either the lat and long, or the chapter_id associated with the user when lat/long cannot be accessed\n * @param {int} offset - which iteration of results should be retrieved, starting at 0\n */\n\n static searchGroups = (input, locationObj, offset) => {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}group/search`;\n if (input) url += `?${input}`;\n // if (locationObj.chapter_id) url += `&chapter_id=${locationObj.chapter_id}`;\n // else url += `&lat=${locationObj.lat}&long=${locationObj.long}`;\n // if (offset) url += `&offset=${offset}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache', // cache disabled to ensure list shows updated groups joined/left\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Unable to find groups');\n });\n });\n };\n\n static retrieveGroupMembers = (groupId, role, offset) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${groupId}/user/search?role=${role}&offset=${offset}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Unable to retrieve group member list');\n });\n });\n };\n\n static getGroupFeed(id, offset) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}group/${id}/feed`;\n if (offset) url += `?offset=${offset}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((response) => {\n if (response.status === 200) {\n return response.json();\n } else if (response.status === 404) {\n return [];\n } else {\n return Error('Unable to retrieve Group Feed');\n }\n });\n });\n }\n\n static createGroupPost(data, id) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${id}/feed`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n }).then((response) => {\n if (response.status === 200) return response.json();\n else return Error('Unable to post to group.');\n });\n });\n }\n\n static isGroupAdmin(groupId) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${groupId}/user/${userProfile.getUserProfile().id}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache', // cache disabled to ensure it shows updated value\n },\n }).then((response) => {\n if (response.status === 200) {\n return response.json().then((result) => {\n return result.role === 'Admin';\n });\n }\n else\n throw Error('Unable to retrieve if user is an admin of the group.');\n });\n });\n }\n\n static deleteGroupPost(groupID, streamID) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}group/${groupID}/feed/${streamID}`;\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n })\n .then((result) => {\n if (result.ok) return;\n else throw new Error('Error deleting group post');\n })\n });\n }\n\n // stripe\n\n // send data to backend to have it create the payment intent and provide the client secret\n static createPaymentIntent(data) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}stripe`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n }).then((response) => {\n if (response.ok) return response.json();\n else {\n return response.json().then((error) => {\n throw error;\n });\n }\n });\n });\n }\n\n static createPayment(data) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/purchase`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n }).then((response) => {\n if (response.ok) {\n return response.json();\n }\n else {\n return response.json().then((error) => {\n throw error;\n });\n }\n });\n });\n }\n\n static getNotificationSettings() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/push_settings`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n },\n ).then((result) => {\n if (result.ok) {\n return result.json();\n } else throw new Error('Error retrieving notification settings');\n });\n });\n }\n\n static updateNotificationSettings(data) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/push_settings`,\n {\n method: 'PUT',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'Content-Length': data.length,\n Authorization: `Bearer ${accessToken}`,\n },\n body: data,\n },\n ).then((result) => {\n if (result.ok) {\n return result.json();\n } else throw new Error('Error updating notification settings');\n });\n });\n }\n\n static getChallenges(urlParams) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/challenge`;\n if (urlParams) url += urlParams;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'cache-control': 'no-cache', // ensure the user sees their newly joined challenge\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving challenges');\n });\n });\n }\n\n static getChallenge(challengeId) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion\n }challenge/${challengeId}?after=${moment().toISOString()}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving challenge');\n });\n });\n }\n\n static getChallengeParticipants(challengeId, page = 1) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}challenge/${challengeId}/participants?page=${page}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else if (result.status === 404) return { participants: [] };\n else throw new Error('Error retrieving challenge participants');\n });\n });\n }\n\n static getChallengeFollowingParticipants(challengeIds) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id\n }/followed_participants?challenge_ids=${challengeIds}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else if (result.status === 404) return [{ attendees: [] }];\n else throw new Error('Error retrieving followers for challenges');\n });\n });\n }\n\n static joinChallenge(challengeId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion\n }challenge/${challengeId}/participants/${userProfile.getUserProfile().id\n }`,\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n },\n ).then((result) => {\n if (!result.ok) throw new Error('Error joining challenge');\n });\n });\n }\n\n static leaveChallenge(challengeId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion\n }challenge/${challengeId}/participants/${userProfile.getUserProfile().id\n }`,\n {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n },\n ).then((result) => {\n if (!result.ok) throw new Error('Error joining challenge');\n });\n });\n }\n\n static hasJoinedChallenge(challengeId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion\n }challenge/${challengeId}/participants/${userProfile.getUserProfile().id\n }`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n },\n ).then((result) => {\n if (result.status === 404) return false;\n else if (result.status === 200) return true;\n else throw new Error('Error getting if user has joined the challenge');\n });\n });\n }\n\n // checking if the current has earned the badge for a specific challenge. Returned badge info is not needed.\n static getBadgeStatus(challengeId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}api/v1/user/${userProfile.getUserProfile().id\n }/challenge/${challengeId}/badges`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n },\n ).then((result) => {\n if (result.status === 404) return false;\n else if (result.status === 200) return true;\n else\n throw new Error(\n 'Unable to determine if the user has acquired the badge for the associated challenge',\n );\n });\n });\n }\n\n static putWorkout(data) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id}/workout`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: data,\n },\n ).then((result) => {\n if (result.ok) return;\n else throw new Error('Error updating workout');\n });\n });\n }\n\n\n /* send a list of workouts. one per day. This will update days that you resend */\n static updateDailyWorkout(workoutDataList) {\n const profileId = userProfile.getUserProfile().id;\n\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${profileId}/workouts/daily`,\n {\n method: 'PUT', // Using PUT for update\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(workoutDataList),\n },\n ).then((response) => {\n if (response.ok) return response.json();\n else throw new Error('Error updating daily workouts');\n });\n });\n }\n\n static deleteWorkout(workoutId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id}/workout/${workoutId}`,\n {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n },\n ).then((response) => {\n if (response.status === 204) {\n return;\n } else {\n throw new Error('Error deleting workout');\n }\n }).catch((err) => {\n console.error('Error caught in fetch operation: ', err);\n });\n });\n }\n\n static getWorkout(workoutId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}workout/${workoutId}`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n },\n ).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving workout');\n });\n });\n }\n\n static getUserWorkouts() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}user/${userProfile.getUserProfile().id}/workouts`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n },\n ).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving user workouts');\n });\n });\n }\n\n static getLeaderboardRank(challengeId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${\n projectConfig.apiVersion\n }leaderboard/challenge/${challengeId}/user/${\n userProfile.getUserProfile().id\n }/rank`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n },\n ).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving user ranking');\n });\n });\n }\n\n static getLeaderboardTop(challengeId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}leaderboard/challenge/${challengeId}/top25`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n },\n ).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving leaderboard top 25');\n });\n });\n }\n\n static getLeaderboardCentered(challengeId) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}${\n projectConfig.apiVersion\n }leaderboard/challenge/${challengeId}/user/${\n userProfile.getUserProfile().id\n }/centered`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n },\n ).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving user centered 25');\n });\n });\n }\n\n static getChallengeFeed(id, offset) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}challenge/${id}/feed`;\n if (offset) url += `?offset=${offset}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((response) => {\n if (response.status === 200) {\n return response.json();\n } else if (response.status === 404) {\n return [];\n } else {\n return Error('Unable to retrieve Challenge Feed');\n }\n });\n });\n }\n\n static createChallengePost(data, id) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}challenge/${id}/feed`;\n return fetch(url, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n }).then((response) => {\n if (response.status === 200) return response.json();\n else return Error('Unable to post to challenge.');\n });\n });\n }\n\n static deleteChallengePost(id, streamId) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}challenge/${id}/feed/${streamId}`;\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n }).then((response) => {\n if (response.status === 200) return;\n else return Error('Unable to delete post.');\n });\n });\n }\n\n static getUserBadges(userId) {\n return authentication.getAccessToken().then((accessToken) => {\n let url = `${DOMAIN}${projectConfig.apiVersion}user/${userId}/badges`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving user badges');\n });\n });\n }\n\n static getUserMetrics() {\n return authentication.getAccessToken().then((accessToken) => {\n const d = new Date();\n let url = `${DOMAIN}${projectConfig.apiVersion}user/${\n userProfile.getUserProfile().id\n }/workout/metrics?month=${d.getFullYear()}-${d.getMonth() + 1}`;\n return fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((result) => {\n if (result.ok) return result.json();\n else throw new Error('Error retrieving user year to date metrics');\n });\n });\n }\n\n static deleteAccount(data) {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}api/user/${userProfile.getUserProfile().id}`;\n return fetch(url, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: data,\n }).then((response) => {\n if (response.ok) {\n return true;\n } else if (response.status === 400) {\n return false;\n } else {\n throw new Error('Unable to delete account.');\n }\n });\n });\n }\n\n // Block and Unblock User Endpoints\n\n static getListOfBlockedUsers() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}api/user/${userProfile.getUserProfile().id}/block`,\n {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n },\n ).then((response) => {\n if (response.status === 200) {\n return response.json();\n } else {\n throw new Error('Error retrieving blocked users.');\n }\n });\n });\n }\n\n static unblockUser(target_id) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}api/user/${\n userProfile.getUserProfile().id\n }/block/${target_id}`,\n {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n body: target_id,\n },\n ).then((response) => {\n if (response.status === 204) {\n return;\n } else {\n throw new Error('Error unblocking user.');\n }\n });\n });\n }\n\n static blockUser(target_id) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}api/user/${\n userProfile.getUserProfile().id\n }/block/${target_id}`,\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n body: target_id,\n },\n ).then((response) => {\n if (response.status === 201) {\n return response.json();\n } else {\n throw new Error('Error blocking user.');\n }\n });\n });\n }\n\n static blockPost(activityID) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(\n `${DOMAIN}api/user/${\n userProfile.getUserProfile().id\n }/block_post/${activityID}`,\n {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n },\n ).then((response) => {\n if (response.status === 201) {\n return response.json();\n } else {\n throw new Error('Error blocking post.');\n }\n });\n });\n }\n\n static getSubscriptionOptions() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}api/purchase_options`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n return Error('Error retrieving subscription options.');\n }\n });\n });\n }\n\n static getDiscountRate() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}api/discount`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n return Error('Error retrieving subscription options.');\n }\n });\n });\n }\n\n static getUsageAnalytics() {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}${projectConfig.apiVersion}analytics`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Cache-Control': 'no-cache',\n },\n }).then((result) => {\n if (result.ok) {\n return result.json();\n } else {\n throw new Error('Error retrieving usage analytics.');\n }\n });\n });\n }\n static getChatLogs(identifier) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}get_chat_logs/${identifier}`,\n {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n },\n );\n })\n .then(jsonOrThrow);\n }\n static getChatToken(identifier) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}get_chat_token`,\n {\n method: 'POST',\n headers: {\n 'Cache-Control': 'no-cache',\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: JSON.stringify({ identifier: identifier }),\n },\n );\n }).then((result) => {\n if (result.ok) {\n return (result.json());\n } else {\n console.log(\"error getting chat token\");\n }\n });\n }\n static createLiveStream(identifier) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}create_live_stream`,\n {\n method: 'POST',\n headers: {\n 'Cache-Control': 'no-cache',\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: JSON.stringify({ identifier: identifier }),\n },\n );\n })\n .then(jsonOrThrow);\n }\n static completeLiveStream(identifier) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n return fetch(\n `${DOMAIN}${projectConfig.apiVersion}complete_live_stream`,\n {\n method: 'POST',\n headers: {\n 'Cache-Control': 'no-cache',\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: JSON.stringify({ identifier: identifier }),\n },\n );\n })\n .then(jsonOrThrow);\n }\n static getWorkspaceLeaderboardCsv(workspace_id) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}analytics/workspace/${workspace_id}/leaderboard/csv`;\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.status === 200) {\n return response.blob();\n } else return Error('Unable to retrieve workspace leaderboard CSV');\n });\n }\n static getWorkspaceAttendeeCsv(workspace_id) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}analytics/workspace/${workspace_id}/attendee/csv`;\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.status === 200) {\n return response.blob();\n } else return Error('Unable to retrieve workspace attendee CSV');\n });\n }\n static getWorkspaceUserCsv(workspace_id) {\n return authentication\n .getAccessToken()\n .then((accessToken) => {\n const url = `${DOMAIN}${projectConfig.apiVersion}analytics/workspace/${workspace_id}/user/csv`;\n return fetch(url, {\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n Authorization: `Bearer ${accessToken}`,\n },\n });\n })\n .then((response) => {\n if (response.status === 200) {\n return response.blob();\n } else return Error('Unable to retrieve workspace user CSV');\n });\n }\n}\n","import moment from 'moment';\nimport {rwbApi} from '../apis/api';\nimport {projectConfig} from '../project-info/projectConfig';\nimport { OktaAuth } from '@okta/okta-auth-js';\n\n// How soon before credentials expire to request new credentials\nconst EXPIRE_BUFFER = 60;\n\nclass Authentication {\n refreshToken = undefined;\n accessToken = undefined;\n expires = undefined;\n loaded = false;\n okta = false;\n\n getAccessToken = () => {\n if (this.loaded) {\n return this._fetchAccessToken();\n } else {\n return this._loadAuthentication().then(this._fetchAccessToken);\n }\n };\n\n _fetchAccessToken = () => {\n if (this.expires === undefined || moment().isAfter(moment(this.expires))) {\n if (this.okta) {\n return rwbApi.refreshAuthOkta(this.accessToken,this.refreshToken).then((response) => {\n return this.setAuthentication(response).then((success) => {\n return response.access;\n });\n });\n }\n return rwbApi.refreshAuth(this.refreshToken).then((response) => {\n return this.setAuthentication(response).then((success) => {\n return response.access;\n });\n });\n } else {\n return Promise.resolve(this.accessToken);\n }\n };\n\n // Only use to test if a user is logged in\n // Do not invoke for use in API calls\n getAccessTokenSync = () => {\n return this.accessToken;\n };\n\n setAuthentication = (oauthResponse) => {\n this._setTokensAndExpires(oauthResponse);\n return Promise.resolve().then(() => {\n window.localStorage.setItem(\n projectConfig.storeKey,\n JSON.stringify({\n refresh: oauthResponse.refresh,\n access: oauthResponse.access,\n }),\n );\n return true;\n });\n };\n\n deleteAuthentication = () => {\n this.refreshToken = undefined;\n this.accessToken = undefined;\n this.expires = undefined;\n this.loaded = false;\n if(this.okta)\n {\n let okta_config = window.localStorage.getItem(\"oktaConfig\")\n if(okta_config)\n {\n let parsedOktaValue = JSON.parse(okta_config)\n let newOktaObj = {\n issuer: parsedOktaValue.discoveryUri,\n clientId: parsedOktaValue.clientId,\n redirectUri: window.location.origin + '/login/callback',\n postLogoutRedirectUri: window.location.origin + '/login'\n }\n var authClient = new OktaAuth(newOktaObj);\n authClient.closeSession();\n authClient.signOut(\n {\n revokeRefreshToken:true,\n revokeAccessToken:true\n }\n )\n }\n }\n return window.localStorage.removeItem(projectConfig.storeKey);\n };\n\n _setTokensAndExpires = (oauthResponse) => {\n this.accessToken = oauthResponse.access;\n this.refreshToken = oauthResponse.refresh;\n this.loaded = true;\n this.expires = moment()\n .add(oauthResponse.expires_in - EXPIRE_BUFFER, 'seconds')\n .format();\n this.loaded = true;\n };\n\n _loadAuthentication = () => {\n return Promise.resolve()\n .then(() => {\n return JSON.parse(window.localStorage.getItem(projectConfig.storeKey));\n })\n .then((credentials) => {\n if (credentials) {\n this.accessToken = credentials.access;\n this.refreshToken = credentials.refresh;\n this.expires = undefined;\n this.loaded = true;\n }\n });\n };\n}\n\nexport let authentication = new Authentication();\n","import React from 'react';\nimport styles from './Loading.module.css';\nimport ClipLoader from 'react-spinners/ClipLoader';\n\n// places spinners (event location lookup and event creation) do not want the full screen spinners\nconst Loading = ({\n size,\n color,\n loading,\n right,\n transparent,\n places,\n footerLoading,\n notFullHeight,\n}) => (\n <>\n {!footerLoading ? (\n \n \n \n ) : (\n
\n \n
\n )}\n \n);\n\nexport default Loading;\n","import React, {useState, useEffect} from 'react';\nimport {Route, Redirect, useHistory} from 'react-router-dom';\n// import fakeAuth from '../mock/isAuthed';\nimport {authentication} from '../../../shared/models/Authentication';\nimport {rwbApi} from '../../../shared/apis/api';\nimport Loading from './Loading';\nimport { userProfile } from '../../../shared/models/UserProfile';\n\nexport default function PrivateRoute({component: Component, ...rest}) {\n const [isAuth, setisAuth] = useState(false);\n const [isLoading, setisLoading] = useState(true);\n const history = useHistory();\n\n useEffect(() => {\n if (!authentication.loaded) {\n authentication\n .getAccessToken()\n .then((accessToken) => {\n if (accessToken) return accessToken;\n return Promise.reject('Missing Credentials');\n })\n .then(rwbApi.getAuthenticatedUser)\n .then((json) => {\n if (!userProfile.isEmailVerified()) {\n history.push('/registration/confirm_email');\n }\n else if (!userProfile.hasCompletedRegistration()) {\n history.push('/registration/personal_info');\n }\n setisAuth(true);\n setisLoading(false);\n })\n .catch(() => {\n setisAuth(false);\n setisLoading(false);\n });\n } else {\n setisAuth(true);\n setisLoading(false);\n }\n }, []);\n\n return (\n {\n // TODO Use a proper authentication check\n return isLoading ? (\n \n ) : isAuth ? (\n \n ) : (\n \n );\n }}\n />\n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class CheckIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n );\n }\n}\n\nCheckIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nCheckIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class PostOptionIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nPostOptionIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#C1C2C3',\n};\n\nPostOptionIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class InterestedIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nInterestedIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#838588',\n};\n\nInterestedIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ChevronDownIcon extends Component {\n render() {\n return (\n \n \n \n \n );\n }\n}\n\nChevronDownIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nChevronDownIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class PostIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nPostIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#fff',\n};\n\nPostIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","// ChatBox.js\nimport React, { Component } from 'react';\nimport { ChatRoom, SendMessageRequest } from 'amazon-ivs-chat-messaging';\nimport { rwbApi } from '../../../../shared/apis/api';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport styles from './ChatBox.module.css';\nimport ChevronDownIcon from '../svgs/ChevronDownIcon';\nimport PostIcon from '../svgs/PostIcon';\n\nclass Message extends Component {\n renderTextWithLinks(text) {\n const urlPattern = /(\\bhttps?:\\/\\/[^\\s]+)/g;\n const parts = text.split(urlPattern);\n\n return parts.map((part, index) => {\n if (part.match(urlPattern)) {\n return (\n \n {part}\n \n );\n } else {\n return {part};\n }\n });\n }\n\n render() {\n const { text, username, profileImage, isRight } = this.props;\n const imageSource = profileImage ? profileImage : DefaultProfileImg;\n\n return (\n
\n \"Profile\"\n
\n
{username}
\n
{this.renderTextWithLinks(text)}
\n
\n
\n );\n }\n}\n\nclass ChatBox extends Component {\n constructor(props) {\n super(props);\n this.state = {\n chatState: '🔴',\n isMinimized: true,\n messages: [],\n inputText: '',\n };\n this.chatRoom = null;\n }\n\n setupStateChangeListeners = () => {\n if (!this.chatRoom) {\n console.error('Chat room is not initialized.');\n return;\n }\n\n this.onConnecting = this.chatRoom.addListener('connecting', () => {\n this.setState({ chatState: 'connecting' });\n });\n\n this.onConnected = this.chatRoom.addListener('connect', () => {\n this.setState({ chatState: '🟢' });\n });\n\n this.onDisconnected = this.chatRoom.addListener('disconnect', () => {\n this.setState({ chatState: 'disconnected' });\n });\n\n this.onMessageReceived = this.chatRoom.addListener('message', (message) => {\n this.handleNewMessage(message);\n });\n };\n\n initializeLiveChat = async () => {\n try {\n this.chatRoom = new ChatRoom({\n regionOrUrl: 'wss://edge.ivschat.us-east-1.amazonaws.com',\n tokenProvider: async () => {\n var token = await rwbApi.getChatToken('event_1');\n return token;\n },\n });\n this.chatRoom.connect();\n this.setupStateChangeListeners();\n } catch (error) {\n console.error('Failed to initialize chat:', error);\n }\n };\n\n getChatLogsFromUrl(url) {\n console.log(\"Fetching chat logs from URL\", url);\n this.setState({ chatState: '' });\n var idx = 0;\n fetch(url)\n .then((response) => response.text())\n .then((text) => {\n const lines = text.split('\\n');\n const parsedData = lines\n .map((line) => {\n const parts = line.split('\\t');\n if (parts.length === 3) {\n return {\n time: parts[0],\n username: parts[1],\n content: parts[2],\n };\n }\n return null;\n })\n .filter(Boolean);\n\n var messages = [];\n parsedData.forEach(function (message) {\n idx += 1;\n const newMessage = {\n id: idx,\n text: message.content.trim(),\n username: message.username,\n isRight: false,\n };\n messages = [newMessage, ...messages];\n });\n this.setState({ messages: messages });\n })\n .catch((error) => {\n console.error('Error fetching the chat logs:', error);\n });\n }\n\n componentDidMount() {\n const liveChat = false;\n if (this.props.chatLogUrl) {\n this.getChatLogsFromUrl(this.props.chatLogUrl);\n } else if (liveChat) {\n rwbApi\n .getChatLogs('event_1')\n .then((res) => {\n res.forEach((log) => {\n const message = log.payload;\n this.handleNewMessage(message);\n });\n this.initializeLiveChat();\n })\n .catch((err) => {});\n }\n }\n\n componentWillUnmount() {\n if (this.chatRoom) {\n this.chatRoom.disconnect();\n }\n }\n\n handleNewMessage = (message) => {\n this.setState((prevState) => {\n const newMessage = {\n id: message.id,\n text: message.content,\n profileImage: message.sender.attributes.profile_photo_url,\n username: message.sender.attributes.first_name,\n isRight: false,\n };\n\n return { messages: [newMessage, ...prevState.messages] };\n });\n };\n\n sendMessage = () => {\n const { inputText } = this.state;\n if (inputText.trim()) {\n const request = new SendMessageRequest(inputText);\n this.chatRoom.sendMessage(request);\n this.setState({ inputText: '' });\n }\n };\n\n toggleMinimize = () => {\n this.setState((prevState) => ({ isMinimized: !prevState.isMinimized }));\n };\n\n renderMinimizedView = () => {\n const { messages } = this.state;\n const lastMessage = messages.length > 0 ? messages[0] : null;\n if (!lastMessage) {\n return null;\n }\n\n return (\n
\n
\n
{this.state.chatState}
\n
\n \n
\n );\n };\n\n renderMessageItem = (item) => (\n \n );\n\n render() {\n const { isMinimized, messages, inputText } = this.state;\n\n return (\n
\n {!isMinimized ? (\n
\n \n
\n {messages.map(this.renderMessageItem)}\n
\n {this.state.chatState === '🟢' && (\n
\n this.setState({ inputText: e.target.value })}\n placeholder=\"Type a message...\"\n className={styles.input}\n />\n \n
\n )}\n
\n ) : (\n this.renderMinimizedView()\n )}\n
\n );\n }\n}\n\nexport default ChatBox;\n","export const eventsConstants = {\n CREATE_ACCOUNT: 'create_account',\n VERIFY_EMAIL: 'verify_email',\n PERSONAL_INFO: 'personal_information',\n MILITARY_SERVICE: 'military_service',\n PRIVACY_WAIVER: 'privacy_waiver',\n RED_SHIRT: 'red_shirt',\n EVENTS: 'events',\n FEED: 'feed',\n MY_ACTIVITIES: 'my_activities',\n UPCOMING_EVENTS: 'upcoming_events',\n PAST_EVENTS: 'past_events',\n MY_PROFILE: 'my_profile',\n PHOTO_UPLOAD: 'photo_upload',\n FORGOT_PASSWORD: 'forgot_password',\n LOGIN: 'login',\n LOGOUT: 'logout',\n SEARCH: 'search',\n DISTANCE_FILTER: 'distance_filter',\n DATE_FILTER: 'date_filter',\n ACTIVITY_FILTER: 'activity_filter',\n CHAPTER_TOGGLE: 'chapter_toggle',\n HOST_FILTER: 'host_toggle',\n SORT_FILTER: 'sort_filter',\n VIRTUAL_TOGGLE: 'virutal_toggle',\n EVENT_SELECTION: 'event_selection',\n INTERESTED: 'interested',\n GOING: 'going',\n CHECK_IN: 'check_in',\n CALENDAR: 'calendar',\n MAP: 'map',\n ADDRESS: 'address',\n SHARE: 'share',\n ATTENDEES: 'attendees',\n INTERESTED_NOTIFICATION: 'interested_notification',\n GOING_NOTIFICATION: 'going_notification',\n CHECK_IN_NOTIFICATION: 'check_in_notification',\n MY_NOTIFICATIONS: 'my_notifications',\n\n};\n\nexport const labelConstants = {\n CREATE_ACCOUNT: 'Create Account',\n VERIFY_EMAIL: 'Verify Email',\n PERSONAL_INFO: 'Personal Information',\n MILITARY_SERVICE: 'Military Service',\n PRIVACY_WAIVER: 'Privacy Waiver',\n RED_SHIRT: 'Red Shirt',\n EVENTS: 'Events',\n MY_ACTIVITIES: 'My Activities',\n UPCOMING_EVENTS: 'Upcoming Events',\n PAST_EVENTS: 'Past Events',\n MY_PROFILE: 'My Profile',\n PHOTO_UPLOAD: 'Photo Upload',\n FORGOT_PASSWORD: 'Forgot Password',\n LOGIN: 'Login',\n LOGOUT: 'Logout',\n SEARCH: 'Search',\n DISTANCE_FILTER: 'Distance Filter',\n DATE_FILTER: 'DATE Filter',\n ACTIVITY_FILTER: 'Activity Filter',\n CHAPTER_TOGGLE: 'Chapter Toggle',\n HOST_FILTER: 'Host Filter',\n SORT_FILTER: 'Sort Filter',\n VIRTUAL_TOGGLE: 'Virutal Toggle',\n EVENT_SELECTION: 'Event Selection',\n INTERESTED: 'Interested',\n GOING: 'Going',\n CHECK_IN: 'Check-In',\n CALENDAR: 'Calendar',\n MAP: 'Map',\n ADDRESS: 'Address',\n SAHRE: 'Share',\n ATTENDEES: 'Attendees',\n INTERESTED_NOTIFICATION: 'Interested Notification',\n GOING_NOTIFICATION: 'Going Notification',\n CHECK_IN_NOTIFICATION: 'Check-In Notification',\n MY_NOTIFICATIONS: 'My Notifications',\n START_CREATE_EVENT: 'Event Button',\n CHOOSE_MEMBER_EVENT: 'Choose Member Event',\n CHOOSE_CHAPTER_EVENT: 'Choose Chapter Event',\n CREATE_EVENT: 'Create Event',\n CANCEL_EVENT: 'Cancel Event',\n UPDATE_EVENT: 'Update Event',\n EVENT_STATUS: 'Event Status',\n ACCESS_NOTIFICATION: 'Access Notification',\n NOTIFICATION_LIKE: 'Notification Like',\n FEED_POST: 'Feed Post',\n FEED_LIKE: 'Feed Like',\n PEOPLE_SEARCH: 'People Search',\n FOLLOW: 'Follow',\n UNFOLLOW: 'Unfollow',\n};\n\nexport const categoryConstants = {\n REGISTRATION: 'Registration',\n NAVIGATION: 'Navigation',\n PROFILE_MANAGEMENT: 'Profile Management',\n EVENT_LIST: 'Events List',\n EVENT_DETAIL: 'Event Detail',\n EVENT_ATTENDEES: 'Event Attendees',\n NOTIFICATION: 'Notification',\n\n};\n\nexport const parameterConstants = {\n EVENT_STATUS: 'Event Status'\n};\n","// All analytics constants, bucketed by category.\n// Each value for BUCKET.events.KEY is a 2-tuple, containing [Event, Label].\n\nexport const SIGNING_UP = {\n category: 'Registration',\n events: {\n CREATE_ACCOUNT: [\n 'create_account',\n 'Create Account'\n ],\n VERIFY_EMAIL: [\n 'verify_email',\n 'Verify Email'\n ],\n PERSONAL_INFO: [\n 'personal_information',\n 'Personal Information'\n ],\n SOCIAL_PROFILE: [\n 'social_profile',\n 'Social Profile',\n ],\n MILTARY_SERVICE: [\n 'military_service',\n 'Military Service'\n ],\n COMPLETE_REGISTRATION: [\n 'complete_registration',\n 'Complete Registration'\n ],\n GET_RED_SHIRT: [\n 'get_red_shirt',\n 'Get Red Shirt'\n ],\n PAY_FOR_SHIRT: [\n 'pay_for_shirt',\n 'Pay for Shirt'\n ],\n ORDER_CONFIRMATION: [\n 'order_confirmation',\n 'Order Confirmation'\n ],\n }\n}\n\nexport const NAVIGATING_THE_APP = {\n category: 'Navigation',\n events: {\n ACCESS_FEED: [\n 'feed_tab',\n 'Feed Tab'\n ],\n ACCESS_EVENTS: [\n 'events_tab',\n 'Events Tab'\n ],\n ACCESS_NOTIFICATIONS: [\n 'notifications_tab',\n 'Notifications Tab',\n ],\n ACCESS_MY_PROFILE: [\n 'my_profile_tab',\n 'My Profile Tab'\n ],\n }\n}\n\nexport const MANAGING_PROFILE_AND_SETTINGS = {\n category: 'Profile Management',\n events: {\n UPDATE_COVER_PHOTO: [\n 'cover_photo',\n 'Cover Photo'\n ],\n UPDATE_PROFILE_PHOTO: [\n 'profile_photo',\n 'Profile Photo'\n ],\n EDIT_BUTTON: [\n 'edit_button',\n 'Edit Button'\n ],\n ACCESS_FOLLOWERS: [\n 'followers',\n 'Followers'\n ],\n ACCESS_FOLLOWING: [\n 'following',\n 'Following'\n ],\n UPDATE_PROFILE: [\n 'edit_profile',\n 'Edit Profile'\n ],\n UPDATE_MILITARY_SERVICE: [\n 'military_service',\n 'Military Service'\n ],\n UPDATE_CHAPTER_PREFERENCES: [\n 'chapter_preferences',\n 'Chapter Preferences'\n ],\n ACCESS_APP_SETTINGS: [\n 'app_settings',\n 'App Settings'\n ],\n UPDATE_PERSONAL_INFORMATION: [\n 'personal_information',\n 'Personal Information'\n ],\n UPDATE_PASSWORD: [\n 'update_password',\n 'Update Password'\n ],\n FORGOT_PASSWORD: [\n 'forgot_password',\n 'Forgot Password'\n ],\n UPDATE_PRIVACY_SETTINGS: [\n 'privacy_settings',\n 'Privacy Settings'\n ],\n LOGIN: [\n 'login',\n 'Login'\n ],\n LOGOUT: [\n 'logout',\n 'Logout'\n ],\n }\n}\n\nexport const SEARCHING_FOR_AND_PARTICIPATING_IN_EVENTS = {\n category: 'Event Participation',\n events: {\n EVENT_SEARCH: [\n 'search',\n 'Search'\n ],\n ACCESS_MY_EVENTS: [\n 'my_events',\n 'My Events'\n ],\n ACCESS_FILTERS: [\n 'filters',\n 'Filters'\n ],\n TOGGLE_RUN_WALK: [\n 'run_walk',\n 'Run/Walk'\n ],\n TOGGLE_HIKE_RUCK: [\n 'hike_ruck',\n 'Hike/Ruck'\n ],\n TOGGLE_SOCIAL: [\n 'social',\n 'Social'\n ],\n TOGGLE_HIDE_VIRTUAL: [\n 'hide_virtual',\n 'Hide Virtual'\n ],\n DISTANCE: [\n 'distance_filter',\n 'Distance'\n ],\n DATE: [\n 'date_filter',\n 'Date'\n ],\n HOST: [\n 'host_filter',\n 'Host'\n ],\n SORT_BY: [\n 'sort_filter',\n 'Sort By'\n ],\n ACCESS_EVENT_DETAILS: [\n 'view_event_details',\n 'View Event Details'\n ],\n UPCOMING_EVENTS: [\n 'upcoming_events',\n 'Upcoming Events'\n ],\n PAST_EVENTS: [\n 'past_events',\n 'Past Events'\n ],\n INTERESTED: [\n 'interested',\n 'Interested'\n ],\n GOING: [\n 'going',\n 'Going'\n ],\n CHECKED_IN: [\n 'checked_in',\n 'Check-in'\n ],\n CALENDAR: [\n 'calendar',\n 'Calendar'\n ],\n MAP: [\n 'map',\n 'Map'\n ],\n ADDRESS: [\n 'address',\n 'Address'\n ],\n SHARE: [\n 'share',\n 'Share'\n ],\n ATTENDEES: [\n 'attendees',\n 'Attendees'\n ],\n CREATE_POST: [\n 'event_post',\n 'Event Post'\n ],\n REACT_POST: [\n 'event_like',\n 'Event Like'\n ],\n }\n}\n\nexport const CREATING_AND_MANAGING_EVENTS = {\n category: 'Event Management',\n events: {\n START_EVENT_CREATION: [\n 'event_button',\n 'Event Button'\n ],\n CHOOSE_CHAPTER_EVENT: [\n 'choose_chapter_event',\n 'Choose Chapter Event'\n ],\n CHOOSE_MEMBER_EVENT: [\n 'choose_member_event',\n 'Choose Member Event'\n ],\n CREATE_EVENT: [\n 'create_event',\n 'Create Event'\n ],\n CANCEL_EVENT: [\n 'cancel_event',\n 'Cancel Event'\n ],\n UPDATE_EVENT: [\n 'update_event',\n 'Update Event'\n ],\n }\n}\n\nexport const NOTIFICATIONS = {\n category: 'Notifications',\n events: {\n ACCESS_NOTIFICATION: [\n 'access_notification',\n 'Access Notification'\n ],\n NOTIFICATIONS_LIKE: [\n 'notifications_like',\n 'Notifications Like'\n ],\n }\n}\n\nexport const FEED = {\n category: 'Feed',\n events: {\n CREATE_POST: [\n 'feed_post',\n 'Feed Post'\n ],\n REACT_POST: [\n 'feed_like',\n 'Feed Like'\n ],\n SEARCH_FOR_PEOPLE: [\n 'people_search',\n 'People Search'\n ],\n FOLLOW: [\n 'follow',\n 'Follow'\n ],\n UNFOLLOW: [\n 'unfollow',\n 'Unfollow'\n ],\n }\n}\n","/**\n * See https://docs.google.com/spreadsheets/d/1c9bjilCXWcjyC-nTee8jJOB01BzMn_idSMRxv1V3c94/edit#gid=1787567816\n * for latest business requirements.\n *\n * Last revised: 2020-08-18\n */\n\nimport firebase from '../utils/firebase';\nimport {\n eventsConstants,\n labelConstants,\n categoryConstants,\n parameterConstants,\n} from '../constants/analyticsConstants';\nimport {userProfile} from './UserProfile';\nimport {\n SIGNING_UP as SI,\n NAVIGATING_THE_APP as NA,\n MANAGING_PROFILE_AND_SETTINGS as M,\n SEARCHING_FOR_AND_PARTICIPATING_IN_EVENTS as SE,\n CREATING_AND_MANAGING_EVENTS as C,\n NOTIFICATIONS as NO,\n FEED as F,\n} from '../constants/newAnalytics';\n\nconst EVENT_STATUS_MIXIN = 'Event Status';\n\nconst oldLogEvent = (event, category, label, parameter = null) => {\n return;\n // console.error('Using deprecated analytics function.', event, category, label);\n const Analytics = firebase.analytics();\n const userProf = userProfile.getUserProfile();\n if (userProf.id) {\n Analytics.setUserId(userProf.id.toString());\n }\n Analytics.logEvent(\n event,\n Object.assign(\n {\n category,\n label,\n },\n parameter ? {parameter} : {},\n ),\n );\n};\n\nfunction logEvent(category, event, parameter = null) {\n return;\n const Analytics = firebase.analytics();\n const userProf = userProfile.getUserProfile();\n if (userProf.id) {\n Analytics.setUserId(userProf.id.toString());\n }\n const meta = Object.assign(\n {\n category: category,\n label: event[1],\n },\n parameter ? {parameter} : {},\n );\n Analytics.logEvent(event[0], meta);\n}\n\n// signing up\n\nexport const logCreateAccount = () => {\n logEvent(SI.category, SI.events.CREATE_ACCOUNT);\n};\n\nexport const logVerifyEmail = () => {\n logEvent(SI.category, SI.events.VERIFY_EMAIL);\n};\n\nexport const logPersonalInfo = () => {\n logEvent(SI.category, SI.events.PERSONAL_INFO);\n};\n\nexport const logSocialProfile = () => {\n logEvent(SI.category, SI.events.SOCIAL_PROFILE);\n};\n\nexport const logMilitaryService = () => {\n logEvent(SI.category, SI.events.MILTARY_SERVICE);\n};\n\n// privacy waiver\nexport const logCompleteRegistration = () => {\n logEvent(SI.category, SI.events.COMPLETE_REGISTRATION);\n};\n\nexport const logGetRedShirt = () => {\n logEvent(SI.category, SI.events.GET_RED_SHIRT);\n};\n\nexport const logPayForShirt = () => {\n logEvent(SI.category, SI.events.PAY_FOR_SHIRT);\n};\n\nexport const logOrderConfirmation = () => {\n logEvent(SI.category, SI.events.ORDER_CONFIRMATION);\n};\n\n// Navigation the app\n\nexport const logAccessFeed = () => {\n logEvent(NA.category, NA.events.ACCESS_FEED);\n};\n\nexport const logAccessEvents = () => {\n logEvent(NA.category, NA.events.ACCESS_EVENTS);\n};\n\nexport const logAccessNotifications = () => {\n logEvent(NA.category, NA.events.ACCESS_NOTIFICATIONS);\n};\n\n// uncomment after challenges are added to analytics :\n\n// export const logAccessChallenges = () => {\n// logEvent(\n// NA.category,\n// NA.events.ACCESS_CHALLENGES,\n// );\n// };\n\nexport const logAccessMyProfile = () => {\n logEvent(NA.category, NA.events.ACCESS_MY_PROFILE);\n};\n\n// Managing Profile & Settings\n\nexport const logCoverPhoto = () => {\n logEvent(M.category, M.events.UPDATE_COVER_PHOTO);\n};\n\nexport const logProfilePhoto = () => {\n logEvent(M.category, M.events.UPDATE_PROFILE_PHOTO);\n};\n\nexport const logEditButton = () => {\n logEvent(M.category, M.events.EDIT_BUTTON);\n};\n\nexport const logAccessFollowers = () => {\n logEvent(M.category, M.events.ACCESS_FOLLOWERS);\n};\n\nexport const logAccessFollowing = () => {\n logEvent(M.category, M.events.ACCESS_FOLLOWING);\n};\n\nexport const logUpdateProfile = () => {\n logEvent(M.category, M.events.UPDATE_PROFILE);\n};\n\nexport const logUpdateMilitaryService = () => {\n logEvent(M.category, M.events.UPDATE_MILITARY_SERVICE);\n};\n\nexport const logAccessAppSettings = () => {\n logEvent(M.category, M.events.ACCESS_APP_SETTINGS);\n};\n\nexport const logUpdatePersonalInformation = () => {\n logEvent(M.category, M.events.UPDATE_PERSONAL_INFORMATION);\n};\n\nexport const logUpdatePassword = () => {\n logEvent(M.category, M.events.UPDATE_PASSWORD);\n};\n\nexport const logForgotPassword = () => {\n logEvent(M.category, M.events.FORGOT_PASSWORD);\n};\n\nexport const logUpdatePrivacySettings = () => {\n logEvent(M.category, M.events.UPDATE_PRIVACY_SETTINGS);\n};\n\nexport const logLogin = () => {\n logEvent(M.category, M.events.LOGIN);\n};\n\nexport const logLogout = () => {\n logEvent(M.category, M.events.LOGOUT);\n};\n\n// Search For & Participate in Events\n\n// search for events\nexport const logSearch = () => {\n logEvent(SE.category, SE.events.EVENT_SEARCH);\n};\n\n// upcoming activites?\nexport const logAccessMyEvents = () => {\n logEvent(SE.category, SE.events.ACCESS_MY_EVENTS);\n};\n\nexport const logAccessFilters = () => {\n logEvent(SE.category, SE.events.ACCESS_FILTERS);\n};\n\nexport const logToggleRunWalk = () => {\n logEvent(SE.category, SE.events.TOGGLE_RUN_WALK);\n};\n\nexport const logToggleHikeRuck = () => {\n logEvent(SE.category, SE.events.TOGGLE_HIKE_RUCK);\n};\n\nexport const logToggleSocial = () => {\n logEvent(SE.category, SE.events.TOGGLE_SOCIAL);\n};\n\nexport const logToggleHideVirtual = () => {\n logEvent(SE.category, SE.events.TOGGLE_HIDE_VIRTUAL);\n};\n\nexport const logAccessEventDetails = () => {\n logEvent(SE.category, SE.events.ACCESS_EVENT_DETAILS);\n};\n\nexport const logAccessUpcomingEvents = () => {\n logEvent(SE.category, SE.events.UPCOMING_EVENTS);\n};\n\nexport const logAccessPastEvents = () => {\n logEvent(SE.category, SE.events.PAST_EVENTS);\n};\n\nexport const logInterested = () => {\n logEvent(SE.category, SE.events.INTERESTED, EVENT_STATUS_MIXIN);\n};\n\nexport const logGoing = () => {\n logEvent(SE.category, SE.events.GOING, EVENT_STATUS_MIXIN);\n};\n\nexport const logCheckIn = () => {\n logEvent(SE.category, SE.events.CHECKED_IN, EVENT_STATUS_MIXIN);\n};\n\nexport const logCalendar = () => {\n logEvent(SE.category, SE.events.CALENDAR);\n};\n\nexport const logMap = () => {\n logEvent(SE.category, SE.events.MAP);\n};\n\nexport const logAddress = () => {\n logEvent(SE.category, SE.events.ADDRESS);\n};\n\nexport const logShare = () => {\n logEvent(SE.category, SE.events.SHARE);\n};\n\nexport const logAttendees = () => {\n logEvent(SE.category, SE.events.ATTENDEES);\n};\n\nexport const logEventCreatePost = () => {\n logEvent(SE.category, SE.events.CREATE_POST);\n};\n\n// might change to like when comment is added\n// commenting is a react, unless we plan on doing the same call for comment\nexport const logEventReactPost = () => {\n logEvent(SE.category, SE.events.REACT_POST);\n};\n\n// Creating and Managing Events\n\nexport const logStartEventCreation = () => {\n logEvent(C.category, C.events.START_EVENT_CREATION);\n};\n\nexport const logChooseChapterEvent = () => {\n logEvent(C.category, C.events.CHOOSE_CHAPTER_EVENT);\n};\n\nexport const logChooseMemberEvent = () => {\n logEvent(C.category, C.events.CHOOSE_MEMBER_EVENT);\n};\n\nexport const logCreateEvent = () => {\n logEvent(C.category, C.events.CREATE_EVENT);\n};\n\nexport const logCancelEvent = () => {\n logEvent(C.category, C.events.CANCEL_EVENT);\n};\n\nexport const logUpdateEvent = () => {\n logEvent(C.category, C.events.UPDATE_EVENT);\n};\n\n// Notifications\n\nexport const logAccessNotification = () => {\n logEvent(NO.category, NO.events.ACCESS_NOTIFICATION);\n};\n\nexport const logNotificationsLike = () => {\n logEvent(NO.category, NO.events.NOTIFICATIONS_LIKE);\n};\n\n// Feed\n\nexport const logFeedCreatePost = () => {\n logEvent(F.category, F.events.CREATE_POST);\n};\n\n// might change to like when comment is added\n// commenting is a react, unless we plan on doing the same call for comment\nexport const logFeedReactPost = () => {\n logEvent(F.category, F.events.REACT_POST);\n};\n\nexport const logSearchForPeople = () => {\n logEvent(F.category, F.events.SEARCH_FOR_PEOPLE);\n};\n\nexport const logFollow = () => {\n logEvent(F.category, F.events.FOLLOW);\n};\n\nexport const logUnfollow = () => {\n logEvent(F.category, F.events.UNFOLLOW);\n};\n\n// Older analytics\n\nexport const logDistanceFilter = () => {\n logEvent(SE.category, SE.events.DISTANCE);\n};\n\nexport const logActivityFilter = () => {\n oldLogEvent(\n eventsConstants.ACTIVITY_FILTER,\n categoryConstants.EVENT_LIST,\n labelConstants.ACTIVITY_FILTER,\n );\n};\n\nexport const logDateFilter = () => {\n logEvent(SE.category, SE.events.DATE);\n};\n\nexport const logChapterToggle = () => {\n // currently unused\n oldLogEvent(\n eventsConstants.CHAPTER_TOGGLE,\n categoryConstants.EVENT_LIST,\n labelConstants.CHAPTER_TOGGLE,\n );\n};\n\nexport const logHostFilter = () => {\n logEvent(SE.category, SE.events.HOST);\n};\n\nexport const logSortFilter = () => {\n logEvent(SE.category, SE.events.SORT_BY);\n};\n\nexport const logVirtualToggle = () => {\n oldLogEvent(\n eventsConstants.VIRTUAL_TOGGLE,\n categoryConstants.EVENT_LIST,\n labelConstants.VIRTUAL_TOGGLE,\n );\n};\n\nexport const logInterestedNotification = () => {\n oldLogEvent(\n eventsConstants.INTERESTED_NOTIFICATION,\n categoryConstants.NOTIFICATION,\n labelConstants.INTERESTED_NOTIFICATION,\n parameterConstants.EVENT_STATUS,\n );\n};\n\nexport const logGoingNotification = () => {\n oldLogEvent(\n eventsConstants.GOING_NOTIFICATION,\n categoryConstants.NOTIFICATION,\n labelConstants.GOING_NOTIFICATION,\n parameterConstants.EVENT_STATUS,\n );\n};\n\nexport const logCheckInNotification = () => {\n oldLogEvent(\n eventsConstants.CHECK_IN_NOTIFICATION,\n categoryConstants.NOTIFICATION,\n labelConstants.CHECK_IN_NOTIFICATION,\n parameterConstants.EVENT_STATUS,\n );\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './TextArea.module.css';\n\nconst lineHeight = 20;\n\nexport default class TextArea extends Component {\n constructor() {\n super();\n this.state = {rows: 1};\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange(event) {\n this.props.onChange(event.target.value);\n\n // To cause proper recalc when deleting lines\n const oldRows = event.target.rows;\n event.target.rows = 1;\n const newRows = ~~(event.target.scrollHeight / lineHeight);\n\n if (newRows === oldRows) {\n event.target.rows = newRows;\n }\n\n this.setState({\n rows: newRows,\n });\n }\n\n render() {\n return (\n
\n \n \n {this.props.maxCharacters ? (\n

\n {this.props.value.length} / {this.props.maxCharacters}\n

\n ) : null}\n

{this.props.error}

\n
\n );\n }\n}\n\nTextArea.defaultProps = {\n placeholder: 'Enter Description',\n};\n\nTextArea.propTypes = {\n label: PropTypes.string,\n placeholder: PropTypes.string,\n maxChar: PropTypes.number, //Could switch to maxlength attribute\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class XIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nXIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nXIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction GalleryIcon(props) {\n return (\n \n \n \n \n \n \n );\n}\n\nGalleryIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nGalleryIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default GalleryIcon;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class AppMark extends Component {\n render() {\n return (\n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nAppMark.defaultProps = {\n width: 50,\n height: 24,\n tintColor: 'var(--secondary)',\n};\n\nAppMark.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React from 'react';\nimport styles from './UsersList.module.css';\nimport Loading from '../Loading';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport AppMark from '../../../../shared/project-info/web-project-info/svgs/AppMark';\nimport {logSearchForPeople} from '../../../../shared/models/Analytics';\nimport {NO_USERS_FOUND} from '../../../../shared/constants/ErrorMessages';\nimport {isNullOrEmpty} from '../../../../shared/utils/Helpers';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\n\nconst UsersList = ({usersSuggestions, loadingUsers, onSelect, search}) => (\n
\n {loadingUsers ? (\n
\n \n
\n ) : (\n <>\n {usersSuggestions?.length > 0 ? (\n usersSuggestions.map((suggestion, i) => {\n const user = suggestion;\n return (\n {\n logSearchForPeople();\n onSelect({\n id: user.id,\n name: `${user.first_name} ${user.last_name}`,\n });\n }}\n key={i}>\n \n
\n
\n

{`${user.first_name} ${user.last_name}`}

\n {/* {user.eagle_leader && } */}\n
\n {user.leader && (\n
\n {projectConfig.leaderRoleDisplay}\n
\n )}\n

{user?.preferred_chapter?.name}

\n

\n {user.military_status && user.military_status !== 'Unknown'\n ? user.military_status === 'Civilian'\n ? 'Civilian'\n : `${user.military_status} / ${user.military_branch}`\n : null}\n

\n
\n
\n );\n })\n ) : (\n <>\n {(search === undefined || !isNullOrEmpty(search)) && (\n
\n

{NO_USERS_FOUND}

\n
\n )}\n \n )}\n \n )}\n \n);\n\nexport default UsersList;\n","import {rwbApi} from '../../../shared/apis/api';\n\nfunction putMediaUpload(url, data) {\n return fetch(url, {\n method: 'PUT',\n body: data,\n }).then((result) => {\n return result;\n });\n}\n\n// this file handles uploading and setting images\n// this primarily is used to ensure any photos that should be sent to azure do, and we use their url\nconst imageHandler = async (file, type) => {\n const validTypes = ['cover', 'profile', 'event', 'post'];\n if (!validTypes.includes(type))\n throw new Error(\n \"imageHandler expects a type of 'cover', 'profile', 'event', or 'post'\",\n );\n const reader = new FileReader();\n if (file) {\n return new Promise((resolve, reject) => {\n reader.readAsArrayBuffer(file);\n reader.onload = () => {\n const data = {\n media_filename: file.name.replace(/ /g, ''), //avoid spaces in the name used for the url\n media_intent: 'cover',\n };\n let imgBlob = new Blob([reader.result], {type: file.type});\n return rwbApi\n .getMediaUploadURL(JSON.stringify(data))\n .then((result) => {\n const mediaURL = result.media_upload_url;\n return putMediaUpload(mediaURL, imgBlob).then((result) => {\n const imageURL = mediaURL.split('?')[0];\n resolve(imageURL);\n });\n });\n };\n });\n }\n};\n\nexport default imageHandler;\n","import React from 'react';\nimport styles from './ShareChallengeBox.module.css';\nimport moment from 'moment';\n\nexport default class ShareChallengeBox extends React.Component {\n render() {\n const {\n eventName,\n chapterName,\n eventStartTime,\n miles,\n steps,\n hours,\n minutes,\n seconds,\n } = this.props;\n\n return (\n
\n

{eventName?.toUpperCase()}

\n
{chapterName}
\n
{moment(eventStartTime).format('dddd, MMMM DD')}
\n\n
\n \n

\n {parseFloat(miles)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}\n

\n
MILES
\n
\n \n

\n {parseInt(steps)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}\n

\n
STEPS
\n
\n \n

\n {hours}:{minutes}:{seconds}\n

\n
DURATION
\n
\n
\n
\n );\n }\n}\n","import { projectConfig } from \"../project-info/projectConfig\";\n\nexport function errorAlert(message, title = projectConfig.alertTitle) {\n // eslint-disable-next-line no-alert\n alert(`${title}: ${message}`);\n}\n","import {OPENGRAPH_API_KEY} from '../constants/APIKeys-obfuscated';\nimport {OPENGRAPH_API} from '../constants/URLs';\nimport { openGraphFallbackPreview } from '../utils/Helpers';\n\nexport default {\n get: async (siteURL) => {\n try {\n const openGraphResponse = await fetch(\n `${OPENGRAPH_API}/${encodeURIComponent(\n siteURL,\n )}?app_id=${OPENGRAPH_API_KEY}`,\n );\n let openGraphData = await openGraphResponse.json();\n if (openGraphData.error) {\n openGraphData = openGraphFallbackPreview(siteURL, 'web');\n }\n return openGraphData;\n } catch (error) {\n throw error;\n }\n },\n};\n","import { projectConfig } from \"../project-info/projectConfig\";\nimport { isInternalURL } from \"./Helpers\";\n\nexport function handleLinkClick(url) {\n if (isInternalURL(url)) {\n window.open(url, \"_self\");\n }\n else {\n window.open(url, '_blank');\n }\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class LinksIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nLinksIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nLinksIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {useEffect, useState} from 'react';\nimport styles from './SitePreviewCard.module.css';\nimport debounce from 'lodash.debounce';\nimport opengraphAPI from '../../../shared/apis/opengraph-api-web';\nimport {Card, CardMedia, CardContent, IconButton} from '@material-ui/core';\nimport {\n getDomain,\n validURL,\n setOpenGraphData,\n cleanLinkID,\n openGraphFallbackPreview,\n} from '../../../shared/utils/Helpers';\n\nimport { projectConfig } from '../../../shared/project-info/projectConfig';\nimport { handleLinkClick } from '../../../shared/utils/HandleLinkClick.react';\nimport XIcon from './svgs/XIcon';\nimport LinksIcon from './svgs/LinksIcon';\n\nconst DEBOUNCE_MS = 1000;\nconst SitePreviewCard = (props) => {\n const [data, setData] = useState(null);\n const {onClose, cancelable, storePreviewData, graphData} = props;\n let {link} = props;\n const [isLoading, setIsLoading] = useState(false);\n // openGraph always adds a trailing / after url\n // open graph sometimes removes analytic data (trailing ?), making analytic links never match their format\n const newLink =\n cleanLinkID(graphData?.url) !== cleanLinkID(link.toLowerCase()) &&\n graphData?.url?.slice(0, -1) !== link.toLowerCase();\n useEffect(() => {\n setIsLoading(true);\n if (!projectConfig.hasOpenGraphPreviews) {\n const fallbackData = openGraphFallbackPreview(link, 'web');\n setData(fallbackData);\n if (storePreviewData) storePreviewData(fallbackData);\n setIsLoading(false);\n return;\n }\n else if ((!graphData || newLink) && validURL(link)) {\n const debouncedOpenGraph = debounce(() => {\n opengraphAPI\n .get(link)\n .then((data) => {\n // if the site was unreachable for any reason the placeholder open graph data will be used which is missing the timestamp and all other information\n const validOpenGraphData = data.timestamp && (\n !data?.openGraph?.error ||\n !data?.hybridGraph?.error ||\n !data?.htmlInferred?.error\n );\n if (validOpenGraphData) {\n const openGraphData = setOpenGraphData(\n data?.openGraph,\n data?.hybridGraph,\n data?.htmlInferred,\n data?.url,\n );\n setData(openGraphData);\n if (storePreviewData) storePreviewData(openGraphData);\n } else {\n // the data returned is the placeholder data, store that instead of formatting the data from opengraph\n setData(data);\n if (storePreviewData) storePreviewData(data);\n }\n setIsLoading(false);\n })\n .catch((err) => {\n setIsLoading(false);\n console.warn('Error fetching site data', err);\n });\n }, DEBOUNCE_MS);\n debouncedOpenGraph();\n return () => debouncedOpenGraph.cancel();\n } else {\n setData(graphData);\n setIsLoading(false);\n }\n }, [link]);\n\n const openLink = (evt, url) => {\n evt.stopPropagation();\n evt.preventDefault();\n handleLinkClick(url);\n };\n\n return (\n <>\n {isLoading ?\n (\n
\n
loading preview...
\n
\n )\n : data ? (\n openLink(e, link)}>\n {/* image_url used for backend stored image url */}\n {(data?.image || data?.image_url) ? :\n \n }\n \n
\n
{data.title}
\n {data.description && (\n

{data.description}

\n )}\n
\n
{getDomain(data.url)}
\n
\n {cancelable ? (\n
\n {\n e.stopPropagation();\n onClose();\n }}\n className={styles.cancelButton}\n color=\"inherit\">\n \n \n
\n ) : null}\n \n ) : null}\n \n );\n};\n\nexport default SitePreviewCard;\n","import React, {useState} from 'react';\nimport styles from './CreatePost.module.css';\nimport feedListItemStyles from './FeedListItem.module.css';\n\nimport {Toolbar, IconButton, makeStyles, Paper, Grid} from '@material-ui/core';\nimport TextArea from '../TextArea';\n\nimport PostIcon from '../svgs/PostIcon';\nimport XIcon from '../svgs/XIcon';\nimport GalleryIcon from '../svgs/GalleryIcon';\n\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {\n getBlobFromLocalURI,\n getHyperlinks,\n isNullOrEmpty,\n validTaggedUsers,\n validURL,\n} from '../../../../shared/utils/Helpers';\nimport Loading from '../Loading';\nimport UsersList from './UsersList';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport imageHandler from '../ImageHandler';\nimport {\n logFeedCreatePost,\n logEventCreatePost,\n} from '../../../../shared/models/Analytics';\nimport ShareChallengeBox from './ShareChallengeBox';\nimport {errorAlert} from '../../../../shared/utils/ErrorAlert';\nimport {STREAM_ERRORS, POST_BLANK_ERROR} from '../../../../shared/constants/ErrorMessages';\nimport { WEB_IMAGE_FORMATS } from '../../../../shared/constants/ImageConstants';\nimport SitePreviewCard from '../SitePreviewCard.react';\n\n\nconst CreatePost = ({\n eventID = null,\n groupID = null,\n challengeID = null,\n type,\n mergeNewPost,\n closeModalHandler,\n text,\n image,\n tagged,\n id,\n eventName,\n chapterName,\n eventStartTime,\n miles,\n steps,\n hours,\n minutes,\n seconds,\n workOutId,\n graphData,\n}) => {\n const [postText, setPostText] = useState(text || '');\n const [postImage, setPostImage] = useState(image || null);\n const [postImageName, setPostImageName] = useState('');\n const [postImageFile, setPostImageFile] = useState({});\n const [postTagged, setPostTagged] = useState(tagged || []);\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingImage, setIsLoadingImage] = useState(false);\n const [searchingUsers, setSearchingUsers] = useState(false);\n const [searchingLocation, setSearchingLocation] = useState(null);\n const [userInput, setUserInput] = useState(null);\n const [isLoadingUsers, setIsLoadingUsers] = useState('');\n const [userResults, setUserResults] = useState([]);\n const [tallImg, setTallImg] = useState(false);\n const [postID, setPostID] = useState(id || null);\n // open graph\n const [previewData, storePreviewData] = useState(graphData || null);\n const [canceledLinkView, setCanceledLinkView] = useState(null);\n const [links, setLinks] = useState(text ? getHyperlinks(text) : []);\n\n const useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n },\n toolbar: {\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n height: 64,\n },\n }));\n const classes = useStyles();\n\n const onImgLoad = ({target: img}) => {\n setTallImg(img.offsetWidth / img.offsetHeight < 0.75);\n };\n\n const textChangeHandler = (value) => {\n // TODO: Handle backspacing early in the post while searching for users\n // TODO: Highlight color of valid user, could not find colors specific parts of text input while making it editable.\n // Once this is determined, validTaggedUsers could be modified to display valid users with the proper color\n setPostText(value);\n\n // elastic search with value after @\n if (value.charAt(value.length - 1) === '@' && !searchingUsers) {\n setSearchingUsers(true);\n setSearchingLocation(value.length);\n }\n\n if (searchingUsers) {\n // if the user deletes the \"@\" symbol, stop searching\n if (value.charAt(searchingLocation - 1) !== '@') {\n setSearchingUsers(false);\n setSearchingLocation(null);\n } else searchUser(value.slice(searchingLocation));\n }\n const links = getHyperlinks(value);\n if (links?.length) {\n setLinks(links);\n if (\n canceledLinkView &&\n links[links.length - 1] !== canceledLinkView &&\n validURL(links[links.length - 1])\n ) {\n setCanceledLinkView(null);\n }\n } else {\n if (canceledLinkView) {\n setCanceledLinkView(null);\n }\n setLinks([]);\n }\n };\n\n const searchUser = (text) => {\n setIsLoadingUsers(true);\n rwbApi.searchUser(text).then((result) => {\n setUserInput(text);\n setUserResults(result);\n setIsLoadingUsers(false);\n });\n };\n\n const handleSelectedUser = (user) => {\n let taggedUsers = postTagged;\n let fullPostText = postText;\n taggedUsers.push(user);\n fullPostText = fullPostText.replace(`@${userInput}`, `@${user.name}`);\n // the font looks like a space is added, which could cause users to send invalid data\n // to prevent this, add an space after selecitng a tagged user\n fullPostText += ' ';\n setSearchingUsers(false);\n setUserResults([]);\n setPostTagged(taggedUsers);\n setPostText(fullPostText);\n };\n\n const addImageHandler = (e) => {\n const file = e.target.files[0];\n const reader = new FileReader();\n if (file) {\n reader.readAsDataURL(file);\n reader.onload = () => {\n setPostImage(reader.result);\n setPostImageName(file.name);\n setPostImageFile(file);\n };\n reader.onloadstart = () => setIsLoadingImage(true);\n reader.onloadend = () => {\n setIsLoadingImage(false);\n };\n }\n };\n\n const removeImageHandler = () => {\n setPostImage(null);\n setPostImageName('');\n };\n\n const createPostHandler = () => {\n\n if (!/\\S/.test(postText) && !postImageFile) {\n errorAlert(POST_BLANK_ERROR);\n return;\n }\n const tagged = validTaggedUsers(postTagged, postText);\n // image files objects have a name field, so only try and go through the upload flow if it is present\n if (postImageFile && postImageFile.name) {\n setIsLoading(true);\n imageHandler(postImageFile, 'post')\n .then((result) => {\n const data = {\n media_url: result,\n text: postText,\n tagged: tagged,\n };\n if (postID) updateFeed(data);\n else putFeed(data);\n })\n .catch((error) => {\n // Unable to retrieve the upload URL\n setIsLoading(false);\n errorAlert(STREAM_ERRORS.POST_IMAGE);\n });\n } else if (!isNullOrEmpty(postText) || postImage) {\n setIsLoading(true);\n const data = {\n text: postText,\n tagged: tagged,\n };\n if ((challengeID || workOutId)) {\n const duration = (\n parseInt(hours || 0) * 60 +\n parseInt(minutes || 0) +\n parseInt(seconds || 0) / 60\n ).toString();\n const workout = {\n event_id: parseInt(eventID),\n event_name: eventName,\n chapter_name: chapterName,\n event_start_time: eventStartTime,\n miles: miles,\n steps: steps,\n minutes: duration,\n };\n data.workout = workout;\n }\n if (postID) {\n if (postImage) updateFeed({...data, media_url: postImage});\n else updateFeed({...data, media_url: null});\n } else putFeed({...data, media_url: null});\n } else {\n errorAlert(STREAM_ERRORS.EMPTY_POST);\n setIsLoading(false);\n return;\n }\n };\n\n const handlePostMade = (user) => {\n // retrieving the feed after so the post is in existence and can be reacted to\n // (small delay to ensure stream gets the post)\n setTimeout(\n () =>\n rwbApi.getUserFeed(user.id).then(() => {\n setIsLoading(false);\n mergeNewPost();\n closeModalHandler();\n }),\n 100,\n );\n };\n\n const checkIncludeOpenGraph = () => {\n return (\n previewData &&\n links?.length &&\n (!canceledLinkView || canceledLinkView !== links[links.length - 1])\n );\n };\n\n const putFeed = (data) => {\n // TODO: or all spaces\n if (data.text === '') data.text = null;\n const user = userProfile.getUserProfile();\n const includeOpenGraph = checkIncludeOpenGraph();\n if (includeOpenGraph) {\n data.open_graph = {\n description: previewData.description,\n image_url: previewData.image,\n title: previewData.title,\n url: previewData.url,\n };\n }\n if (type === 'user') {\n return rwbApi\n .putFeed(JSON.stringify(data))\n .then(() => {\n logFeedCreatePost();\n handlePostMade(user);\n })\n .catch((err) => {\n setIsLoading(false);\n errorAlert(STREAM_ERRORS.UPLOAD_POST);\n });\n } else if (type === 'event') {\n return rwbApi\n .createEventPost(JSON.stringify(data), eventID)\n .then(() => {\n logEventCreatePost();\n handlePostMade(user);\n })\n .catch((error) => {\n setIsLoading(false);\n errorAlert(STREAM_ERRORS.UPLOAD_POST);\n });\n } else if (type === 'group') {\n return rwbApi\n .createGroupPost(JSON.stringify(data), groupID)\n .then(() => {\n handlePostMade(user);\n })\n .catch(() => {\n setIsLoading(false);\n errorAlert(STREAM_ERRORS.UPLOAD_POST);\n });\n } else if (type === 'challenge') {\n return rwbApi\n .createChallengePost(JSON.stringify(data), challengeID)\n .then(() => {\n handlePostMade(user);\n })\n .catch(() => {\n setIsLoading(false);\n errorAlert(STREAM_ERRORS.UPLOAD_POST);\n });\n }\n };\n\n const updateFeed = (data) => {\n if (data.text === '') data.text = null;\n const user = userProfile.getUserProfile();\n return rwbApi\n .updatePost(JSON.stringify(data), postID)\n .then((result) => {\n handlePostMade(user);\n })\n .catch((error) => {\n setIsLoading(false);\n errorAlert(STREAM_ERRORS.UPDATE_POST);\n });\n };\n\n return (\n
\n \n \n \n \n \n \n

Post

\n \n \n \n
\n
\n
\n {(eventName || workOutId) && (\n \n )}\n \n {searchingUsers ? (\n
\n handleSelectedUser(user)}\n />\n
\n ) : null}\n {!canceledLinkView &&\n links.length &&\n validURL(links[links.length - 1]) ? (\n \n \n {\n setCanceledLinkView(links[links.length - 1]);\n }}\n storePreviewData={storePreviewData}\n graphData={previewData}\n />\n \n \n ) : null}\n {postImage && (\n
\n \n \n
\n \n \n
\n
\n )}\n \n {!eventName && (\n
\n \n
\n )}\n \n );\n};\n\nexport default CreatePost;\n","import React, {useState} from 'react';\nimport CreatePost from './CreatePost';\nimport styles from './CreatePostButton.module.css';\nimport {MdAdd as AddIcon} from 'react-icons/md';\n\nconst CreatePostButton = ({\n eventID = null,\n groupID = null,\n challengeID = null,\n type,\n mergeNewPost,\n}) => {\n const [createPostModal, setCreatePostModal] = useState(false);\n\n const openCloseModalHandler = () =>\n setCreatePostModal((prevState) => !prevState);\n\n return (\n <>\n \n \n \n {createPostModal && (\n \n )}\n \n );\n};\n\nexport default CreatePostButton;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class LikeIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nLikeIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#fff',\n};\n\nLikeIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class AdminIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nAdminIcon.defaultProps = {\n width: 24,\n height: 24,\n};\n\nAdminIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n};\n","import { projectConfig } from \"../project-info/projectConfig\";\n\nexport function separatePunctuation(words, validPunctuation) {\n if (!words) return words; // edge case of no words\n let updatedWords = [];\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n if (validPunctuation.includes(word.charAt(word.length - 1))) {\n // add the word without the punctuation\n updatedWords.push(word.slice(0, word.length - 1));\n // add the punctuation\n updatedWords.push(word.slice(word.length - 1));\n }\n else {\n updatedWords.push(word);\n }\n }\n return updatedWords;\n}\n\nexport function getFormattedPostElements(postText, expectedNames, namesAreLinks, renderUsernameFn, links, renderLinkFn) {\n if (!expectedNames && !links) return postText; // Return early if there are no names or links\n const elements = [];\n let lastIdx = 0;\n\n // Create a sorted list of all tokens (links and tags)\n const tokens = [];\n if (links) {\n links.forEach(link => {\n let index = postText.indexOf(link);\n while (index >= 0) {\n tokens.push({ type: 'link', value: link, index });\n index = postText.indexOf(link, index + link.length);\n }\n });\n }\n\n if (expectedNames) {\n expectedNames.forEach(name => {\n const taggedName = `@${name}`;\n let index = postText.indexOf(taggedName);\n while (index >= 0) {\n tokens.push({ type: 'tag', value: name, index });\n index = postText.indexOf(taggedName, index + taggedName.length);\n }\n });\n }\n\n // Sort tokens by index\n tokens.sort((a, b) => a.index - b.index);\n // Build the final elements array\n tokens.forEach((token, i) => {\n // Add text before the token\n if (token.index > lastIdx) {\n elements.push(postText.substring(lastIdx, token.index));\n }\n\n // Add the token\n if (token.type === 'link') {\n elements.push(renderLinkFn(token.value));\n } else if (token.type === 'tag') {\n elements.push(renderUsernameFn(token.value, token.index, namesAreLinks));\n }\n\n // Update last index\n lastIdx = token.index + (token.type === 'link' ? token.value.length : `@${token.value}`.length);\n });\n\n // Add any remaining text after the last token\n if (lastIdx < postText.length) {\n elements.push(postText.substring(lastIdx));\n }\n\n return elements;\n}\n\nexport function formatEventCardTitle(eventTitle) {\n if (eventTitle) {\n if (eventTitle.length > 30) return `${eventTitle.substring(0, 27)}...`.toUpperCase();\n else return eventTitle.toUpperCase();\n }\n else return 'INVALID EVENT';\n}\n\n // filter out the pinned post that would show up in the feed\nexport function isPostVisible(pinnedPost, item) {\n if (pinnedPost === undefined || pinnedPost === []) return true;\n return (\n item.activities[0].id !== pinnedPost[0].activities[0].id ||\n (item.activities[0].id === pinnedPost[0].activities[0].id &&\n item.activities[0].is_pinned)\n );\n};\n\n// this helper will hide posts that can no longer enrich an event, such as an event that has been deleted\n// this can hide the posts without the backend, but is to be used to help the timeframe where the posts have not yet been deleted\n// for the full summary and the tickets related to what this fixes, see https://phabricator.retronyms.com/D8357\nexport function filterRemovedEvents(posts) {\n if (!projectConfig.hideRemovedEventPosts) return posts;\n return posts.filter((post) => {\n let activity;\n if (post?.activities?.[0]) activity = post.activities[0]; // aggregated fed\n else activity = post; // flat feed\n // posts with enriched data have it under the field \"object\", that post should always be valid so return it\n if (typeof(activity.object) !== 'string') return post;\n // if what was enriched is now a string and is an event \"core.event:id\", \n // we only need to worry about update and cancel posts as create is automatically deleted, so as long as the foreign id is not either one of those it is valid\n else if (!activity.object?.includes('core.Event:') && (!activity.foreign_id?.includes('update_event:') || !activity.foreign_id?.includes('cancel_event'))) return post;\n });\n}\n\nexport const lastCharSymbolRegex = /[.,\\/#!$%\\^&\\*;:{}=\\-_`~()]$/;\n","import React, {Component} from 'react';\nimport styles from './EnhancedCard.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport moment from 'moment';\nimport {\n defaultEventPhoto,\n localizeDate,\n} from '../../../../shared/utils/Helpers';\nimport {Link} from 'react-router-dom';\nimport {DATE_FMT, TIME_FMT} from '../../../../shared/constants/DateFormats';\nimport {formatEventCardTitle} from '../../../../shared/utils/FeedHelpers';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nexport default class EnhancedCard extends Component {\n render() {\n const {\n id,\n name,\n category,\n start,\n end,\n photo_url,\n time_zone_id,\n group_name,\n is_all_day,\n is_virtual,\n } = this.props.event;\n let startTime = localizeDate(time_zone_id, start);\n let endTime = localizeDate(time_zone_id, end);\n return (\n \n
\n
\n {(photo_url || projectConfig.defaultEventImages)\n && }\n
\n
\n

{formatEventCardTitle(name)}

\n {/* not yet added */}\n

{group_name}

\n

\n {localizeDate(time_zone_id, startTime).format(DATE_FMT)}\n

\n

\n {is_all_day\n ? 'All Day Event'\n : `${localizeDate(time_zone_id, startTime).format(\n TIME_FMT,\n )} - ${localizeDate(time_zone_id, endTime).format(\n TIME_FMT,\n )}`}\n

\n
\n
\n \n );\n }\n}\n","const DATE_FMT = 'ddd, MMM DD, YYYY';\nconst TIME_FMT = 'h:mm a';\n\nexport {\n DATE_FMT,\n TIME_FMT\n}\n","import React from 'react';\nimport { handleLinkClick } from '../../../../shared/utils/HandleLinkClick.react';\nimport styles from './HyperLink.module.css';\n\nconst HyperLink = ({link}) => {\n const openLink = (evt, url) => {\n evt.stopPropagation();\n evt.preventDefault();\n handleLinkClick(url);\n };\n\n return (\n openLink(e, link)}\n className={styles.postLink}>\n {link}\n \n );\n};\n\nexport default HyperLink;\n","import React from 'react';\nimport styles from './FormattedPostText.module.css';\nimport {\n getFormattedPostElements,\n} from '../../../../shared/utils/FeedHelpers';\nimport HyperLink from '../links/HyperLink.react';\n\nconst FormattedPostText = ({\n text,\n tagged,\n linkableUsers,\n history,\n clickable,\n links,\n}) => {\n if ((!tagged || !tagged?.length) && (!links || !links?.length)) {\n return (\n
\n

{text}

\n
\n );\n }\n let expectedNames = [];\n for (let i = 0; i < tagged?.length; i++) {\n expectedNames.push(`${tagged[i].first_name} ${tagged[i].last_name}`);\n }\n\n const renderFormattedUsername = (formattedName, namesAreLinks) => {\n const userId = tagged[expectedNames.indexOf(formattedName)].id;\n return (\n \n clickable && history.push(`/profile/${userId}`)\n }>\n {/* avoid adding a space if the value after the name is a punctuation mark */}\n {`${formattedName}`}\n \n )\n };\n\n const renderHyperLink = (link) => {\n return \n }\n\n return (\n
\n {getFormattedPostElements(text, expectedNames, linkableUsers, renderFormattedUsername, links, renderHyperLink)}\n
\n );\n};\n\nexport default FormattedPostText;\n","import React, {Component} from 'react';\nimport styles from './FeedListItem.module.css';\n\nexport default class AggregatePostTitle extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.userID = this.props.activities[0].user.id; // only use the user ID of the first user (this is only be used when only one user has a status set)\n }\n\n getAllUsers = () => {\n const activities = this.props.activities;\n let users = [];\n for (let i = 0; i < activities.length; i++) {\n users.push(\n `${activities[i].user.first_name} ${activities[i].user.last_name}`,\n );\n }\n return users;\n };\n\n // used to help determine if the going/interested can just state one verb\n sameVerb = () => {\n const activities = this.props.activities;\n let verbs = [];\n for (let i = 0; i < activities.length; i++) {\n verbs.push(activities[i].verb);\n }\n // are all verbs the same\n return verbs.every((verb, i, verbs) => verb === verbs[0]);\n };\n\n goingOrInterested = (verb) => {\n return `${verb === 'going' ? 'going to' : 'interested in'}`;\n };\n\n formatTitleMessage = () => {\n let users = this.getAllUsers();\n const sameVerb = this.sameVerb();\n const verb = this.props.activities[0].verb; //the first verb will either be `checked_in` for those events, or will be used when all the verbs are the same for `going` or `interested`\n let message;\n if (users.length === 1) {\n if (verb === 'checked_in') message = 'checked into';\n else message = `is ${this.goingOrInterested(verb)}`;\n } else if (users.length === 2) {\n if (verb === 'checked_in') message = 'checked into';\n else if (sameVerb) message = `are ${this.goingOrInterested(verb)}`;\n else message = 'are going/interested in';\n } else {\n message = `and ${users.length - 2} ${\n users.length - 2 > 1 ? 'others' : 'other user'\n } you follow `;\n if (verb === 'checked_in') message += 'checked into';\n else if (sameVerb) message += `are ${this.goingOrInterested(verb)}`;\n else message += 'are going/interested in';\n }\n\n return ` ${message}`;\n };\n\n formatUsers = () => {\n const users = this.getAllUsers();\n if (users.length === 1) {\n return (\n this.props.history.push(`/profile/${this.userID}`)}>\n {[users[0]]}\n \n );\n } else if (users.length === 2) {\n return (\n \n

{users[0]}

\n  and \n

{users[1]}

\n
\n );\n } else {\n return (\n \n

{users[0]}

\n , \n

{users[1]}

\n
\n );\n }\n };\n\n render() {\n return (\n \n {this.formatUsers()}\n {this.formatTitleMessage()}\n \n );\n }\n}\n","import {IconButton, Paper, Toolbar, withStyles, Grid} from '@material-ui/core';\nimport debounce from 'lodash.debounce';\nimport React, {Component} from 'react';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {\n isNullOrEmpty,\n validTaggedUsers,\n getHyperlinks,\n validURL,\n} from '../../../../shared/utils/Helpers';\nimport Loading from '../Loading';\nimport SitePreviewCard from '../SitePreviewCard.react';\nimport PostIcon from '../svgs/PostIcon';\nimport XIcon from '../svgs/XIcon';\nimport TextArea from '../TextArea';\nimport styles from './CreateComment.module.css';\nimport FormattedPostText from './FormattedPostText';\nimport ShareChallengeBox from './ShareChallengeBox';\nimport UsersList from './UsersList';\n\nconst DEBOUNCE_MS = 500;\n\nconst _styles = {\n root: {\n flexGrow: 1,\n },\n toolbar: {\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n height: 64,\n },\n};\n\nclass CreateComment extends Component {\n state = {\n isLoading: false,\n commentText: this.props.posterText ? this.props.text : '',\n taggedUsers: [],\n atLocation: null,\n searchingUsers: false,\n userSearchLoading: null,\n userResults: [],\n links: this.props.posterText\n ? getHyperlinks(this.props.posterText)\n : getHyperlinks(this.props.text),\n commentLinks: this.props.posterText ? getHyperlinks(this.props.text) : [],\n canceledLinkView: null,\n previewData: this.props.graphData || null,\n };\n\n apiUserSearch = (text) => {\n rwbApi.searchUser(text).then((result) => {\n this.setState({userResults: result, userSearchLoading: false});\n });\n };\n\n handleTextInput = (text) => {\n const {searchingUsers, atLocation} = this.state;\n // TODO: Handle backspacing early in the post while searching for users\n // TODO: Highlight color of valid user, could not find colors specific parts of text input while making it editable.\n // Once this is determined, validTaggedUsers could be modified to display valid users with the proper color\n this.setState({commentText: text});\n // elastic search with value after @\n if (text.charAt(text.length - 1) === '@' && !searchingUsers) {\n this.setState({searchingUsers: true, atLocation: text.length});\n }\n\n if (searchingUsers) {\n // if the user deletes the \"@\" symbol, stop searching\n if (text.charAt(atLocation - 1) !== '@') {\n this.setState({searchingUsers: false, atLocation: null});\n } else this.searchUser(text.slice(atLocation));\n }\n\n const commentLinks = getHyperlinks(text);\n const state = {};\n if (commentLinks?.length) {\n state.commentLinks = commentLinks;\n if (\n this.state.canceledLinkView &&\n commentLinks[commentLinks.length - 1] !== this.state.canceledLinkView &&\n validURL(commentLinks[commentLinks.length - 1])\n ) {\n state.canceledLinkView = null;\n }\n } else {\n if (this.state.canceledLinkView) {\n state.canceledLinkView = null;\n }\n state.commentLinks = [];\n }\n this.setState(state);\n };\n\n updateOptions = debounce(this.apiUserSearch, DEBOUNCE_MS);\n\n searchUser = (text) => {\n this.setState({inputText: text, userSearchLoading: true});\n this.updateOptions(text);\n };\n\n handleSelectedUser = (user) => {\n // access tagged users without mutating the array directly\n let taggedUsers = [...this.state.taggedUsers];\n let commentText = this.state.commentText;\n taggedUsers.push(user);\n commentText = commentText.replace(this.state.inputText, user.name);\n this.setState({\n searchingUsers: false,\n userResults: [],\n taggedUsers,\n commentText,\n });\n };\n\n checkIncludeOpenGraph = () => {\n const {previewData, commentLinks, canceledLinkView} = this.state;\n return (\n previewData &&\n commentLinks?.length &&\n (!canceledLinkView ||\n canceledLinkView !== commentLinks[commentLinks.length - 1])\n );\n };\n\n submitComment = () => {\n const {commentText, taggedUsers} = this.state;\n const {poster, streamID, closeModalHandler} = this.props;\n const validatedTaggedUsers = validTaggedUsers(taggedUsers, commentText);\n\n if (isNullOrEmpty(commentText)) {\n alert('Unable to post an empty comment.');\n return;\n }\n\n this.setState({isLoading: true});\n const data = {\n kind: 'comment',\n content: commentText,\n tagged: validatedTaggedUsers,\n };\n const {previewData} = this.state;\n const includeOpenGraph = this.checkIncludeOpenGraph();\n if (includeOpenGraph) {\n data.open_graph = {\n description: previewData.description,\n image_url: previewData.image,\n title: previewData.title,\n url: previewData.url,\n };\n }\n if (this.props.posterText) {\n rwbApi\n .updateReaction(\n poster.id,\n streamID,\n JSON.stringify(data),\n this.props.commentID,\n )\n .then(() => {\n this.setState({isLoading: false});\n closeModalHandler(true);\n })\n .catch((err) => {\n this.setState({isLoading: false});\n alert('Unable to update your comment. Please try again later.');\n });\n } else {\n rwbApi\n .postReaction(poster.id, streamID, JSON.stringify(data))\n .then(() => {\n this.setState({isLoading: false});\n closeModalHandler(true);\n })\n .catch((err) => {\n this.setState({isLoading: false});\n alert('Unable to post your comment. Please try again later.');\n });\n }\n };\n\n render() {\n const {\n classes,\n closeModalHandler,\n poster,\n verbEvent,\n time,\n text,\n tagged,\n history,\n postImage,\n postGraphData,\n graphData,\n } = this.props;\n const {\n isLoading,\n commentText,\n searchingUsers,\n userResults,\n userSearchLoading,\n links,\n commentLinks,\n canceledLinkView,\n previewData,\n } = this.state;\n return (\n
\n \n \n \n closeModalHandler(false)}\n className={classes.menuButton}\n color=\"inherit\">\n \n \n

Comment

\n \n \n \n
\n
\n\n
\n
\n
\n
\n \n {`${poster.first_name} ${poster.last_name}`} \n \n {verbEvent} • {time}\n
\n\n
\n {this.props?.workout?.eventName ? (\n \n ) : null}\n \n {links.length && (postGraphData?.url || graphData?.url) ? (\n \n ) : null}\n {postImage && (\n this.setState({isModalOpen: true})}\n />\n )}\n
\n
\n
\n \n {/* This was displaying the preview on comment creation and taking api usage. Comments never show the enriched card, so there is no point to show it on creation.\n This is something that can be changed in the future and if so this will need to be uncommented and the CommentView will need to use SitePreviewCard\n */}\n {/* {!canceledLinkView &&\n commentLinks.length &&\n validURL(commentLinks[commentLinks.length - 1]) ? (\n \n \n {\n this.setState({\n canceledLinkView: commentLinks[commentLinks.length - 1],\n });\n }}\n storePreviewData={this.storePreviewData}\n graphData={previewData}\n />\n \n \n ) : null} */}\n {searchingUsers && (\n
\n \n
\n )}\n
\n
\n );\n }\n}\n\nexport default withStyles(_styles)(CreateComment);\n","const CHALLENGE_TYPES = {\n miles: 'miles',\n steps: 'steps',\n minutes: 'minutes',\n checkins: 'check-ins',\n leastMinutes: 'least-minutes',\n};\n\nconst CHALLENGE_DISPLAY = {\n miles: 'Miles',\n steps: 'Steps',\n minutes: 'Minutes',\n 'check-ins': 'Events',\n};\n\nexport {CHALLENGE_DISPLAY, CHALLENGE_TYPES};\n","import moment from 'moment';\nimport {capitalizeFirstLetter} from './Helpers';\nimport {CHALLENGE_TYPES} from '../constants/ChallengeTypes';\nexport function challengeParams(tab) {\n const today = moment().toISOString().split('T')[0];\n const yesterday = moment().subtract(1, 'days').toISOString().split('T')[0];\n if (tab === 'active') {\n return `?end_date_after=${today}&sort_order=asc`;\n } else if (tab === 'past') {\n return `?end_date_before=${yesterday}&sort_order=desc`;\n } else throw new Error('\"active\" or \"past\" required');\n}\n\nexport function separateUnjoinedChallenges(unjoinedChallenges) {\n let availableChallenges = [];\n let upcomingChallenges = [];\n\n for (let i = 0; i < unjoinedChallenges.length; i++) {\n const challenge = unjoinedChallenges[i];\n if (isUpcomingChallenge(challenge.start_date))\n upcomingChallenges.push(challenge);\n else availableChallenges.push(challenge);\n }\n\n // upcoming challenges are ordered by starting sooner to starting later\n const sortedUpcoming = upcomingChallenges.sort((a, b) => {\n return moment(a.start_date).diff(moment(b.start_date));\n });\n return {availableChallenges, upcomingChallenges: sortedUpcoming};\n}\n\nexport function isUpcomingChallenge(challengeStartDate) {\n const today = moment();\n return moment(challengeStartDate).isAfter(today);\n}\n\nexport function trimProgress(progress, type) {\n type = type.toLowerCase();\n progress = parseFloat(progress);\n let decimalPlace = 0;\n if (type === CHALLENGE_TYPES.minutes || type === CHALLENGE_TYPES.miles) {\n decimalPlace = 2;\n }\n // the android javascript core does not support toLocaleString, preventing prod releases from utilizing it\n // instead, add a comma after every three numbers before decimal points\n return parseFloat(progress.toFixed(decimalPlace))\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,');\n}\n\nexport function formatMetric(metric) {\n if (metric === CHALLENGE_TYPES.miles) return 'Mi';\n else if (metric === CHALLENGE_TYPES.minutes) return 'Min.';\n else if (metric === CHALLENGE_TYPES.checkins || metric === '') return 'Events';\n else return capitalizeFirstLetter(metric);\n}\n\nexport function earnedBadge(progress, goal) {\n if (progress && goal && progress !== 0 && goal !== 0) {\n return parseFloat(progress) >= parseFloat(goal);\n } else if (goal === '0' && progress > 0) {\n return true;\n }\n}\n\nexport function isChallengeOver(challengeEndDate) {\n const today = moment().startOf('day');\n const endDateMoment = moment(challengeEndDate).local().startOf('day');\n return endDateMoment.isBefore(today);\n}\n\nexport function challengeEndsToday(challengeEndDate) {\n const today = moment();\n return moment(today).startOf('day').isSame(challengeEndDate);\n}\n\n// returns a string for when a challenge ends\nexport function howLongUntil(endTime) {\n // add one day to ensure we count the last day of the challenge\n // return moment(endTime).add(1, 'day').fromNow();\n // this displays days left\n return moment(endTime).add(1, 'day').diff(moment(), 'day');\n}\n\n// TODO use this in more places\nexport function hoursMinutesSecondsFromMinutes(minutes) {\n return {\n hours: Math.floor(minutes / 60) || 0,\n minutes: Math.floor(minutes % 60) || 0,\n seconds: Math.round((minutes % 1) * 60) || 0,\n };\n}\n\nexport function getChallengeStatusText(challengeStartDate, challengeEndDate) {\n if (challengeEndsToday(challengeEndDate)) {\n return 'Ends Today';\n } else if (isChallengeOver(challengeEndDate)) {\n return 'Ended ' + moment(challengeEndDate).format('MMM DD, YYYY');\n } else if (isUpcomingChallenge(challengeStartDate)) {\n return 'Starts ' + moment(challengeStartDate).format('MMM DD, YYYY');\n } else {\n return howLongUntil(challengeEndDate) + \" Days Left\";\n }\n}\n\nexport function insertLocaleSeperator(metricValue) {\n // the android javascript core does not support toLocaleString, preventing prod releases from utilizing it\n // instead, add a comma after every three numbers before decimal points\n return metricValue.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,');\n}","import {authentication} from '../models/Authentication';\nimport {DOMAIN} from '../constants/URLs'; // import DOMAIN instead on server-change\n\nexport class reportAPI {\n static user(reportedID, reporterID) {\n return authentication.getAccessToken().then((accessToken) => {\n return fetch(`${DOMAIN}api/report/user/${reportedID}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterID,\n })\n .then((response) => {\n if (response.ok) return response.json();\n else throw new Error('Error reporting user');\n })\n .catch((err) => {\n console.warn(err);\n throw new Error('Error reporting user');\n });\n });\n }\n\n static userPost = (reportedID, reportedStreamID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}api/report/user/${reportedID}/post/${reportedStreamID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting user post');\n });\n });\n };\n\n static event = (eventID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}api/report/event/${eventID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the event');\n });\n });\n };\n\n static eventPost = (eventID, streamID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}api/report/event/${eventID}/post/${streamID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the event post');\n });\n });\n };\n\n static userComment = (reportedID, reactionID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}api/report/user/${reportedID}/reaction/${reactionID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the comment');\n });\n });\n };\n\n // currently unused\n static group = (groupID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}api/report/group/${groupID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the group');\n });\n });\n };\n\n static groupPost = (groupID, streamID, reporterUserID) => {\n return authentication.getAccessToken().then((accessToken) => {\n const url = `${DOMAIN}api/report/group/${groupID}/post/${streamID}`;\n return fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: reporterUserID,\n }).then((result) => {\n if (result.ok) return;\n else throw new Error('Error reporting the group');\n });\n });\n };\n}\n","import React, {Component} from 'react';\nimport ReactDOM from 'react-dom';\nimport PostOptionIcon from '../components/svgs/PostOptionIcon';\nimport {userProfile} from '../../../shared/models/UserProfile';\nimport styles from './ReportAndDeleteOverlay.module.css';\nimport {capitalizeFirstLetter} from '../../../shared/utils/Helpers';\nimport {REPORT_ERROR, REPORT_SENT} from '../../../shared/constants/ErrorMessages';\nimport CreatePost from './feed/CreatePost';\nimport CreateComment from './feed/CreateComment';\nimport {hoursMinutesSecondsFromMinutes} from '../../../shared/utils/ChallengeHelpers';\nimport {reportAPI} from '../../../shared/apis/reportAPI';\nimport { errorAlert } from '../../../shared/utils/ErrorAlert';\nimport { projectConfig } from '../../../shared/project-info/projectConfig';\n\nexport default class ReportAndDeleteOverlay extends Component {\n constructor(props) {\n super(props);\n this.state = {\n overlayVisible: false,\n createPostVisible: false,\n };\n }\n\n componentDidMount() {\n document.addEventListener('click', this.handleClickOutside, true);\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleClickOutside, true);\n }\n\n handleClickOutside = (event) => {\n const domNode = ReactDOM.findDOMNode(this);\n\n if (!domNode || !domNode.contains(event.target)) {\n this.setState({\n overlayVisible: false,\n });\n }\n };\n\n // determines which type of report is being done\n report = () => {\n if (\n window.confirm(\n `${projectConfig.name}: Would you like to report this ${this.props.type}?`,\n )\n ) {\n const reporterID = JSON.stringify({\n reporter: userProfile.getUserProfile().id,\n });\n if (this.props.type === 'post') {\n if (this.props.eventID) this.reportEventPost(reporterID);\n else if (this.props.groupID) this.reportGroupPost(reporterID);\n else if (this.props.posterID) this.reportUserPost(reporterID);\n } else if (this.props.type === 'comment') {\n this.reportCommentPost(reporterID);\n return;\n } else {\n throw new Error(\"Invalid Type, expecting the type 'post' or 'comment\");\n }\n } else {\n this.setState({overlayVisible: false});\n }\n };\n\n delete = () => {\n this.props.deletePost();\n this.setState({overlayVisible: false});\n };\n\n edit = () => {\n this.setState({\n overlayVisible: false,\n createPostVisible: true,\n });\n };\n\n reportUserPost = (reporterID) => {\n reportAPI\n .userPost(this.props.posterID, this.props.streamID, reporterID)\n .then(() => {\n errorAlert(REPORT_SENT);\n this.setState({overlayVisible: false});\n })\n .catch((err) => {\n errorAlert(REPORT_ERROR)\n this.setState({overlayVisible: false});\n console.warn(err);\n });\n };\n\n reportEventPost = (reporterID) => {\n reportAPI\n .eventPost(this.props.eventID, this.props.streamID, reporterID)\n .then(() => {\n errorAlert(REPORT_SENT);\n this.setState({overlayVisible: false});\n })\n .catch((err) => {\n errorAlert(REPORT_ERROR);\n this.setState({overlayVisible: false});\n console.warn(err);\n });\n };\n\n reportCommentPost = (reporterID) => {\n reportAPI\n .userComment(this.props.posterID, this.props.commentID, reporterID)\n .then(() => {\n errorAlert(REPORT_SENT);\n this.setState({overlayVisible: false});\n })\n .catch((err) => {\n errorAlert(REPORT_ERROR);\n this.setState({overlayVisible: false});\n console.warn(err);\n });\n };\n\n reportGroupPost = (reporterID) => {\n reportAPI\n .groupPost(this.props.groupID, this.props.streamID, reporterID)\n .then(() => {\n errorAlert(REPORT_SENT);\n this.setState({overlayVisible: false});\n })\n .catch((err) => {\n errorAlert(REPORT_ERROR);\n this.setState({overlayVisible: false});\n console.warn(err);\n });\n };\n\n closeComment = (refresh) => {\n if (refresh) this.props.refreshReactions();\n this.setState({createPostVisible: false});\n };\n\n render() {\n return (\n
\n {!this.props.eventStatusPost ? (\n this.setState({overlayVisible: true})}>\n \n
\n ) : null}\n {this.state.overlayVisible ? (\n this.props.canDelete() ? (\n
\n this.edit()}>{`Edit ${capitalizeFirstLetter(\n this.props.type,\n )}`}\n this.delete()}>{`Delete ${capitalizeFirstLetter(\n this.props.type,\n )}`}\n
\n ) : this.props.type === 'post' ? (\n
\n \n this.props.blockPost()\n }>{`Block ${capitalizeFirstLetter(this.props.type)}`}\n this.report()}>{`Report ${capitalizeFirstLetter(\n this.props.type,\n )}`}\n
\n ) : (\n
\n this.report()}>{`Report ${capitalizeFirstLetter(\n this.props.type,\n )}`}\n
\n )\n ) : null}\n\n {this.state.createPostVisible && (\n
\n {this.props.commentID ? (\n \n ) : (\n \n this.setState({createPostVisible: false})\n }\n mergeNewPost={this.props.mergeNewPost}\n eventName={this.props.workout?.event_name}\n chapterName={this.props.workout?.chapter_name}\n eventStartTime={this.props.workout?.event_start_time}\n miles={this.props.workout?.miles}\n steps={this.props.workout?.steps}\n hours={\n hoursMinutesSecondsFromMinutes(this.props.workout?.minutes)\n .hours\n }\n minutes={\n hoursMinutesSecondsFromMinutes(this.props.workout?.minutes)\n .minutes\n }\n seconds={\n hoursMinutesSecondsFromMinutes(this.props.workout?.seconds)\n .seconds\n }\n />\n )}\n
\n )}\n \n );\n }\n}\n","import React from 'react';\nimport styles from './FeedListItem.module.css';\n\nconst linkItem = (name, onClick) => {\n return (\n \n {`> ${name || ''}`}\n \n );\n};\n\nfunction ListItemTitle(\n history,\n navigating,\n type,\n verb,\n event,\n group,\n challenge,\n) {\n if (type === 'event') {\n if (verb === 'create') return `added an event`;\n else if (verb === 'going' || verb === 'interested') return `is ${verb}`;\n else if (verb === 'checked_in') return `checked into`;\n else if (verb === 'update') return 'updated an event';\n else if (verb === 'cancel') return 'canceled an event';\n } else if (type === 'post' || type === 'challenge' || type === 'group') {\n if (event?.name) {\n if (navigating) return `posted on ${event.name || ''}`;\n return linkItem(event.name, () => history.push(`/events/${event.id}`));\n } else if (group?.name) {\n if (navigating) return `posted on ${group.name || ''}`;\n return linkItem(group.name, () => history.push(`/groups/${group.id}`));\n } else if (challenge?.name) {\n if (navigating) return `posted on ${challenge.name || ''}`;\n return linkItem(challenge.name, () =>\n history.push(`/challenges/${challenge.id}`),\n );\n } else {\n return 'posted';\n }\n }\n}\n\nexport default ListItemTitle;\n","import React from 'react';\nimport styles from './PhotoView.module.css';\nimport XIcon from '../svgs/XIcon';\nimport LikeIcon from '../svgs/LikeIcon';\n\nconst PhotoView = ({\n post_image,\n onModalClose,\n liked,\n likeAmount,\n onLikeClicked,\n}) => (\n
\n
\n \n
\n \"User\n
\n \n

{likeAmount > 0 && likeAmount}

\n
\n
\n);\n\nexport default PhotoView;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class PinnedPostIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nPinnedPostIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nPinnedPostIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","// Shared text used between web and mobile not specific to errors\n\nconst GROUP_SEARCH_INSTRUCTIONS =\n 'Search for groups by name or activity or enter zip or \"city, state\" to search for groups by location.';\n\nconst FEED_INSTRUCTIONS =\n 'Nothing on your feed. Make a post, go to an event, or follow a user!';\n\nconst NO_NOTIFICATIONS = 'No Notifications';\n\nconst NO_ACTIVE_CHALLENGES = 'No Active Challenges';\n\nconst NO_PAST_CHALLENGES = 'No Past Challenges';\n\nconst WORKOUT_WARNINGS = {\n emptyWorkout: 'All fields are blank, please enter at least one type of activity.',\n milesLength: 'TOO LARGE OF AN INPUT, NO MORE THAN 1000 MILES MAY BE USED',\n milesDigit: 'TOO LARGE OF A NUMBER, NO MORE THAN SIX DIGITS MAY BE USED',\n stepsLength: 'TOO LARGE OF AN INPUT, NO MORE THAN 100000 STEPS MAY BE USED',\n timeRequired: 'A TIME IS REQUIRED',\n timeLength: 'TOO LARGE OF AN INPUT, TIME ENTERED MUST BE NO MORE THAN A DAY',\n milesDecimals: 'TOO MANY DECIMAL PLACES, NO MORE THAN TWO DECIMAL PLACES MAY BE USED',\n};\n\nconst ADDRESS_ENTRY = 'Type the first few characters of your address in the box and then select from the list of matching addresses, or ';\n\nconst POST_DELETE_WARNING = 'Are you sure you want to delete your post?';\n\nconst POST_BLOCK_WARNING = 'Are you sure you want to block this post?';\n\nconst NO_BLOCKED_USERS = 'No Blocked Users';\n\nexport {\n GROUP_SEARCH_INSTRUCTIONS,\n FEED_INSTRUCTIONS,\n NO_NOTIFICATIONS,\n NO_ACTIVE_CHALLENGES,\n NO_PAST_CHALLENGES,\n WORKOUT_WARNINGS,\n ADDRESS_ENTRY,\n POST_BLOCK_WARNING,\n POST_DELETE_WARNING,\n NO_BLOCKED_USERS,\n};\n","import {rwbApi} from '../apis/api';\n\nexport const deletePost = (streamID, eventID, challengeID, groupID) => {\n if (eventID) {\n return rwbApi.deleteEventPost(eventID, streamID);\n } else if (challengeID) {\n return rwbApi.deleteChallengePost(challengeID, streamID);\n } else if (groupID) {\n return rwbApi.deleteGroupPost(groupID, streamID);\n } else {\n return rwbApi.deleteUserPost(streamID);\n }\n};\n","import React, {Component} from 'react';\nimport styles from './FeedListItem.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport LikeIcon from '../svgs/LikeIcon';\nimport AdminIcon from '../svgs/AdminIcon';\nimport EnhancedCard from './EnhancedCard';\nimport {howLongAgo, getHyperlinks} from '../../../../shared/utils/Helpers';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {Link, withRouter} from 'react-router-dom';\nimport FormattedPostText from './FormattedPostText';\nimport AggregatePostTitle from './AggregatePostTitle';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {\n logEventReactPost,\n logFeedReactPost,\n} from '../../../../shared/models/Analytics';\nimport ReportAndDeleteOverlay from '../ReportAndDeleteOverlay';\nimport {\n POST_BLOCK_ERROR,\n POST_DELETE_ERROR,\n STREAM_ERRORS,\n} from '../../../../shared/constants/ErrorMessages';\nimport ListItemTitle from './ListItemTitle';\nimport PhotoView from './PhotoView';\nimport PinnedPostIcon from '../svgs/PinnedPostIcon';\nimport ShareChallengeBox from './ShareChallengeBox';\nimport {\n POST_BLOCK_WARNING,\n POST_DELETE_WARNING,\n} from '../../../../shared/constants/OtherMessages';\nimport {deletePost} from '../../../../shared/utils/StreamHelpers';\nimport {errorAlert} from '../../../../shared/utils/ErrorAlert';\nimport SitePreviewCard from '../SitePreviewCard.react';\n\nclass AggregateFeedListItem extends Component {\n constructor(props) {\n super(props);\n const {data, origin} = props;\n this.postType = data.foreign_id.split(':')[0];\n this.type = this.props.type;\n if (!this.props.type) {\n if (data?.object?.kind || data?.object?.type) {\n this.type = data?.object?.kind || data?.object?.type;\n }\n else if (typeof(data?.object) === 'string') {\n this.type = data?.object.split(':')[0];\n }\n else {\n this.type = data?.foreign_id?.split('.')[1]?.split(':'[0]?.toLowerCase());\n }\n }\n this.eventID = this.props.eventID || (data.event && data.event.id);\n this.streamID = data.id;\n this.reactable = this.postType !== 'attend'; // can only react to posts that can only be \"single\" (create, post, etc)\n this.origin =\n (data.origin && data.origin.split(':')[0]) ||\n origin ||\n null;\n this.state = {\n loaded: false,\n deleted: false, //set to true when deleting and reverted on server failure\n liked:\n this.props.data.own_reactions &&\n this.props.data.own_reactions.like, // if own_reactions.like, that means the post has been liked\n likeAmount:\n (this.props.data.reaction_counts &&\n this.props.data.reaction_counts.like) ||\n 0,\n changingLikeStatus: false,\n commentAmount:\n this.props.data.reaction_counts?.comment || 0,\n isModalOpen: false,\n tallImg: false,\n };\n }\n\n // navigating means the value is being sent to a different page\n displayTitle = (navigating) => {\n // will need to add a check for event name after enrichment\n const {history} = this.props;\n const {verb, event, group, challenge} = this.props.data;\n return ListItemTitle(history, navigating, this.type, verb, event, group, challenge);\n };\n\n // only the creator of a post can delete\n // \"event\" types are statuses, and those cannot be deleted\n canDelete = () => {\n const postCreator = this.props.data.actor.id; //ID of post creator\n const currentUserID = userProfile.getUserProfile().id;\n return postCreator == currentUserID && this.type !== 'event';\n };\n\n deletePost = () => {\n if (window.confirm(`Delete Post: ${POST_DELETE_WARNING}`)) {\n const activity = this.props.data;\n const streamID = activity.id;\n const eventID = activity?.event_id;\n const challengeID = activity?.challenge?.id || activity?.challenge_id;\n const groupID = activity?.group?.id || activity?.group_id;\n this.setState({deleted: true});\n deletePost(streamID, eventID, challengeID, groupID).catch(() => {\n errorAlert(POST_DELETE_ERROR);\n this.setState({deleted: false});\n });\n }\n };\n\n blockPost = () => {\n if (window.confirm(`Block Post: ${POST_BLOCK_WARNING}`)) {\n if (!this.props.data.event_id) {\n this.setState({deleted: true});\n rwbApi\n .blockPost(this.props.data.id)\n .then(() => {\n // hide post\n })\n .catch(() => {\n errorAlert(POST_BLOCK_ERROR);\n this.setState({deleted: false});\n });\n }\n }\n };\n\n updateLikeStatus = (action) => {\n if (action === 'like')\n this.setState({liked: true, likeAmount: this.state.likeAmount + 1});\n else if (action === 'unlike')\n this.setState({liked: false, likeAmount: this.state.likeAmount - 1});\n };\n\n handleLikePost = () => {\n if (this.state.changingLikeStatus) return;\n this.setState({changingLikeStatus: true});\n const reactionKind = JSON.stringify({kind: 'like'});\n // posts on events are 'event_post's, but do not have an ID. Do not treat it like an event post\n if (\n this.postType === 'event_post' &&\n this.eventID &&\n this.origin !== 'user'\n ) {\n this.eventPostLike(reactionKind);\n }\n // other postTypes might be \"attend\",\n else this.userPostLike(reactionKind);\n };\n\n onImgLoad = ({target: img}) => {\n if (img.offsetWidth / img.offsetHeight < 0.75) {\n this.setState({tallImg: true});\n }\n };\n\n // NOTE: This function is not called on web despite liking the same event post as on mobile (where it is called)\n eventPostLike = (reactionKind) => {\n if (!this.state.liked) {\n this.updateLikeStatus('like');\n rwbApi\n .postEventReaction(this.eventID, this.streamID, reactionKind)\n .then(() => {\n logEventReactPost();\n })\n .catch((err) => {\n if (err === STREAM_ERRORS.ALREADY_REACTED)\n alert(\"You've already liked this post. Please refresh your feed.\");\n else alert('Error liking post. Please try again later.');\n this.updateLikeStatus('unlike');\n }).finally(() => {\n this.setState({changingLikeStatus: false});\n });\n } else {\n this.updateLikeStatus('unlike');\n rwbApi\n .deleteEventReaction(this.eventID, this.streamID, reactionKind)\n .then(() => {})\n .catch((err) => {\n if (err === STREAM_ERRORS.REACTION_NOT_FOUND)\n alert(\n \"You've already unliked this post or it was deleted. Please refresh your feed.\",\n );\n else alert('Error unliking post. Please try again later.');\n this.updateLikeStatus('like');\n }).finally(() => {\n this.setState({changingLikeStatus: false});\n });\n }\n };\n\n determinePostRoute = () => {\n const {group_id, event_id, challenge_id, id} = this.props.data;\n const {origin} = this.props;\n if (group_id && origin !== 'user') {\n return `/groups/${group_id}/feed/${id}`;\n } else if (event_id && origin !== 'user') {\n return `/events/${event_id}/feed/${id}`;\n } else if (challenge_id && origin !== 'user') {\n return `/challenges/${challenge_id}/feed/${id}`;\n } else return `/feed/${id}`;\n };\n\n navigationState = () => {\n const {\n id,\n time,\n text,\n object,\n media_url,\n tagged,\n is_pinned,\n actor,\n open_graph,\n } = this.props.data;\n const event = object;\n const {liked, likeAmount, deleted, commentAmount, isModalOpen} = this.state;\n return (\n {\n post_image: media_url,\n text,\n poster: actor,\n time,\n tagged,\n eventID: this.eventID || null,\n streamID: id,\n liked,\n likeAmount,\n title: this.displayTitle(true),\n eventName: event ? event.name : null,\n actorID: actor.id,\n activityID: id,\n commentAmount,\n }\n )\n }\n\n // for timeline/feed posts\n userPostLike = (reactionKind) => {\n const creatorID = this.props.data.actor.id;\n if (!this.state.liked) {\n this.updateLikeStatus('like');\n rwbApi\n .postReaction(creatorID, this.streamID, reactionKind)\n .then((result) => {\n logFeedReactPost();\n })\n .catch((err) => {\n if (err === STREAM_ERRORS.ALREADY_REACTED)\n alert(\"You've already liked this post. Please refresh your feed.\");\n else alert('Error liking post. Please try again later.');\n this.updateLikeStatus('unlike');\n }).finally(() => {\n this.setState({changingLikeStatus: false});\n });\n } else {\n this.updateLikeStatus('unlike');\n rwbApi\n .deleteReaction(creatorID, this.streamID, reactionKind)\n .then(() => {})\n .catch((err) => {\n if (err === STREAM_ERRORS.REACTION_NOT_FOUND)\n alert(\n \"You've already unliked this post or it was deleted. Please refresh your feed.\",\n );\n else alert('Error unliking post. Please try again later.');\n this.updateLikeStatus('like');\n }).finally(() => {\n this.setState({changingLikeStatus: false});\n });\n }\n };\n\n render() {\n const {\n id,\n time,\n text,\n object,\n media_url,\n tagged,\n is_pinned,\n actor,\n open_graph,\n } = this.props.data;\n const event = object;\n const {liked, likeAmount, deleted, commentAmount, isModalOpen} = this.state;\n const {history} = this.props;\n const links = getHyperlinks(text);\n return !deleted ? (\n
\n
\n
\n history.push(`/profile/${actor.id}`)}>\n \n {/* only show on a sponsor group the poster is an admin of */}\n {this.props.isSponsor && actor?.is_sponsor_admin && (\n \n )}\n
\n

\n {this.reactable ? (\n \n history.push(`/profile/${actor.id}`)}>\n {`${actor.first_name} ${actor.last_name}`} \n \n {this.displayTitle(false)} \n \n ) : (\n \n )}\n  •{' '}\n {howLongAgo(time)}\n {this.props.data?.edited && (\n

Edited

\n )}\n

\n
\n
\n {is_pinned ? (\n
\n

PINNED POST

\n {/* placeholder svg */}\n \n
\n ) : null}\n \n
\n
\n {this.type === 'event' && }\n\n \n {this.props.data.workout ? (\n \n ) : null}\n \n \n {links.length && open_graph?.url ? (\n \n ) : null}\n {media_url && (\n \n this.setState({isModalOpen: true})}\n onLoad={this.onImgLoad}\n />\n \n )}\n {this.reactable ? (\n
\n
\n \n

{likeAmount > 0 && likeAmount}

\n
\n \n history.push({\n pathname: this.determinePostRoute(),\n state: this.navigationState()\n })\n }>\n

{`${commentAmount} ${\n commentAmount > 1 ? 'comments' : 'comment'\n }`}

\n
\n \n ) : null}\n {isModalOpen && (\n this.setState({isModalOpen: false})}\n liked={liked}\n likeAmount={likeAmount}\n onLikeClicked={this.handleLikePost}\n />\n )}\n \n ) : null;\n }\n}\n\nexport default withRouter(AggregateFeedListItem);\n","import React, {Component} from 'react';\nimport AggregateFeedListItem from './AggregateFeedListItem';\n\nexport default class FeedList extends Component {\n render() {\n const {\n userFeed,\n eventID,\n type,\n origin,\n isSponsor,\n mergeNewPost,\n } = this.props;\n return (\n
\n {userFeed.map((singleFeed, i) => (\n \n ))}\n
\n );\n }\n}\n","'use strict';\n\nconst attendance_slugs = {\n going: 'going',\n interested: 'interested',\n checkedin: 'checked_in'\n};\n\nexport { attendance_slugs as ATTENDANCE_SLUGS };\n","import React from 'react';\nimport styles from './CustomModal.module.css';\nimport {Modal, Backdrop, Fade} from '@material-ui/core';\nimport {withStyles} from '@material-ui/core/styles';\nimport XIcon from '../svgs/XIcon';\n\nconst _styles = {\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n backgroundColor: 'var(--white)',\n boxShadow: null,\n padding: '30px',\n maxHeight: '90%',\n overflowY: 'scroll',\n position: 'relative',\n },\n};\n\nconst CustomModal = ({\n classes,\n title,\n isOpen,\n items,\n selectedValue,\n modalHandler,\n onSelect,\n placeholder,\n}) => (\n <>\n
\n

{title}

\n

\n {items[selectedValue]?.display || placeholder || selectedValue}\n

\n
\n \n \n
\n
\n \n
\n {Object.keys(items).map((item, i) => (\n onSelect(items[item].slug || items[item])}>\n {items[item].display || items[item]}\n \n ))}\n
\n
\n \n \n);\n\nexport default withStyles(_styles)(CustomModal);\n","// BuddyUp Whitelabel\n\nexport const eventConfig = {\n // The various types of events, specified in the order in which you wish them to appear\n group_event_options : {\n 'run-walk': {\n display: 'Run/Walk',\n slug: 'run-walk'\n },\n 'hike-ruck': {\n display: 'Hike/Ruck',\n slug: 'hike-ruck'\n },\n 'social': {\n display: 'Social',\n slug: 'social'\n },\n 'cycle-mtb': {\n display: 'Cycle/MTB',\n slug: 'cycle-mtb'\n },\n 'functional-fitness': {\n display: 'Functional Fitness',\n slug: 'functional-fitness'\n },\n 'meeting': {\n display: 'Meeting',\n slug: 'meeting'\n },\n 'ocr': {\n display: 'OCR',\n slug: 'ocr'\n },\n 'other-physical': {\n display: 'Other – Physical',\n slug: 'other-physical'\n },\n 'rock-climbing': {\n display: 'Rock Climbing',\n slug: 'rock-climbing'\n },\n 'service': {\n display: 'Service',\n slug: 'service'\n },\n 'swim': {\n display: 'Swim',\n slug: 'swim'\n },\n 'team-sports': {\n display: 'Team Sports',\n slug: 'team-sports'\n },\n 'training': {\n display: 'Training',\n slug: 'training'\n },\n 'triathlon': {\n display: 'Triathlon',\n slug: 'triathlon'\n },\n 'water-sports': {\n display: 'Water Sports',\n slug: 'water-sports'\n },\n 'winter-sports': {\n display: 'Winter Sports',\n slug: 'winter-sports'\n },\n 'yoga': {\n display: 'Yoga',\n slug: 'yoga'\n },\n },\n\n featured_lozenge_count: 4, // the number of featured lozenges to display on the event list (from the list above)\n default_event_tab: 'local', // the default event tab to display on events list.\n \n VIRTUAL_TIME_OPTIONS:{\n 'all': {\n display: 'All Times',\n slug: 'all'\n },\n 'live': {\n display: 'Live Events',\n slug: 'live'\n },\n 'all-day': {\n display: 'All-day Events',\n slug: 'all-day'\n }\n }\n};\n","'use strict';\n\nimport { projectConfig } from \"../project-info/projectConfig\";\nimport { eventConfig } from \"../project-info/eventConfig\";\n\nexport const DISTANCE_OPTIONS = {\n '25-miles': {\n display: '25 Miles',\n slug: 25\n },\n '50-miles': {\n display: '50 Miles',\n slug: 50\n },\n '100-miles': {\n display: '100 Miles',\n slug: 100\n },\n '250-miles': {\n display: '250 Miles',\n slug: 250\n }\n};\n\nexport const DATE_OPTIONS = {\n 'today': {\n display: 'Today',\n slug: 'today'\n },\n 'all': {\n display: 'All Upcoming',\n slug: 'all'\n },\n 'next-7': {\n display: 'Next 7 Days',\n slug: 'next-7'\n },\n 'next-30': {\n display: 'Next 30 days',\n slug: 'next-30'\n },\n 'past-30': {\n display: 'Past 30 days',\n slug: 'past-30'\n }\n};\n\nexport const HOST_OPTIONS = {\n 'all': {\n display: 'All',\n slug: 'all'\n },\n 'member': {\n display: 'Member',\n slug: 'member'\n },\n 'group': {\n display: 'Group',\n slug: 'group'\n }\n};\n\nexport const GROUP_OPTIONS = {\n 'my-groups': {\n display: 'My Groups',\n slug: 'my-groups'\n },\n 'my-activity': {\n display: 'My Activity Groups',\n slug: 'my-activity'\n },\n 'my-sponsor': {\n display: 'My Sponsor Groups',\n slug: 'my-sponsor'\n },\n}\n\nexport const VIRTUAL_GROUP_OPTIONS = {\n 'all': {\n display: 'All Events',\n slug: 'all'\n },\n 'national': {\n display: `${projectConfig.name} National`,\n slug: 'national'\n },\n 'my-groups': {\n display: 'My Groups',\n slug: 'my-groups'\n },\n}\n\nexport const VIRTUAL_TIME_OPTIONS = eventConfig.VIRTUAL_TIME_OPTIONS\n\nexport const SORT_OPTIONS = {\n // 'distance': {\n // display: 'Distance',\n // slug: 'distance'\n // },\n 'date': {\n display: 'Date',\n slug: 'date'\n },\n 'attendees': {\n display: 'Attendees',\n slug: 'attendees'\n }\n};\n\n\n// GROUP_EVENT_OPTIONS and VIRTUAL_EVENT_OPTIONS are now specified in the projectConfig, and also exported here\n// so we don't have to redo a bunch of lines and so it is also consistent with both the other option lists\n// and the projectConfig namespacing\nexport const GROUP_EVENT_OPTIONS = eventConfig.group_event_options;\n\nexport const VIRTUAL_EVENT_OPTIONS = eventConfig.virtual_event_options || 4;\n\nexport const GROUP_EVENT_OPTIONS_SORTED = Object.fromEntries(\n Object.entries(GROUP_EVENT_OPTIONS).sort((a, b) => a[0].localeCompare(b[0]))\n);\n\nexport const FEATURED_LOZENGE_COUNT = eventConfig.featured_lozenge_count;\n","import { projectConfig } from \"../project-info/projectConfig\";\n\nconst EVENT_TAB_TYPES = {\n local: 'local',\n virtual: 'virtual',\n my: 'my',\n};\n\nconst GROUP_EVENT_TAB_TYPES = {\n local: 'local',\n virtual: 'virtual',\n past: 'past',\n}\n\nconst EVENT_NAV_ELEMENTS = [\n {\n name: projectConfig?.localEventTabName || 'Local Events',\n key: 'local',\n },\n {\n name: 'Virtual Events',\n key: 'virtual',\n },\n {\n name: 'My Events',\n key: 'my',\n },\n];\n\nconst MY_EVENT_TYPES = {\n hosting: 'hosting',\n upcoming: 'upcoming',\n past: 'past',\n};\n\nconst GROUP_EVENT_NAV_ELEMENTS = [\n {\n name: 'Local',\n key: 'local',\n },\n {\n name: 'Virtual',\n key: 'virtual',\n },\n {\n name: 'Past',\n key: 'past',\n },\n];\n\nconst PAST_EVENT_TYPES = {\n local: 'local',\n virtual: 'virtual',\n}\n\nconst CREATE_EVENT_NAV_ELEMENTS = [\n {\n name: 'Local',\n key: 'local'\n },\n {\n name: 'Virtual',\n key: 'virtual'\n }\n]\n\nconst FILTER_NAV_TABS = [\n {\n name: 'All Events',\n key: 'all',\n },\n {\n name: 'Group Events',\n key: 'group',\n },\n {\n name: 'Member Events',\n key: 'member',\n },\n]\n\nexport {\n EVENT_TAB_TYPES,\n GROUP_EVENT_TAB_TYPES,\n EVENT_NAV_ELEMENTS,\n MY_EVENT_TYPES,\n GROUP_EVENT_NAV_ELEMENTS,\n PAST_EVENT_TYPES,\n CREATE_EVENT_NAV_ELEMENTS,\n FILTER_NAV_TABS,\n};\n","import moment from 'moment';\nimport {EVENT_TAB_TYPES, GROUP_EVENT_TAB_TYPES} from '../constants/EventTabs';\nimport {DOMAIN} from '../constants/URLs';\nimport {userLocation} from '../models/UserLocation';\nimport {userProfile} from '../models/UserProfile';\nimport {projectConfig} from '../project-info/projectConfig';\nimport {localizeDate} from './Helpers';\n\nexport function isCreateEventButtonVisible(\n groupName,\n activeTab,\n isLoading,\n createVisible,\n user,\n groupType,\n isAdmin,\n joinedGrouped,\n challengeId,\n) {\n let isVisible = true;\n if (projectConfig.alwaysShowEventButton) {\n return isVisible;\n }\n // group event list\n if (groupName) {\n if (activeTab === GROUP_EVENT_TAB_TYPES.past) isVisible = false;\n if (!joinedGrouped) isVisible = false;\n groupType = groupType.toLowerCase();\n // chapter groups\n if (groupType === 'chapter') {\n // user is not an eagle leader, or lacks the admin membership role\n if (\n activeTab === GROUP_EVENT_TAB_TYPES.local &&\n !user.eagle_leader &&\n !isAdmin\n )\n isVisible = false;\n // user lacks the admin membership role\n else if (activeTab === GROUP_EVENT_TAB_TYPES.virtual && !isAdmin)\n isVisible = false;\n } else if (groupType === 'activity') {\n // user lacks the admin membership role\n if (!isAdmin) isVisible = false;\n } else if (groupType === 'sponsor') {\n // user lacks the admin membership role\n if (!isAdmin) isVisible = false;\n } else if (groupType === 'national') {\n if (!isAdmin) isVisible = false; // not sure if national should always be false\n }\n }\n // event tab events list\n else {\n if (activeTab === EVENT_TAB_TYPES.virtual && projectConfig.allowsVirtualEventsOutsideGroups === false) isVisible = false;\n if (projectConfig.limitedNonGroupEventCreation) {\n if (!user.eagle_leader && !isAdmin) isVisible = false;\n }\n }\n if (isLoading || createVisible || user.anonymous_profile || challengeId)\n isVisible = false;\n return isVisible;\n}\n\n\n// This is not a \"localeFormatter\", it's returnlastLocaleOrformatLocaleFromUserLocationOrProfileLocation\n// It merely returns the last locale and city if passed to it (wut), and if there isn't, it pokes around in devices location or user loation for city, state, zip, and makes a locale from that.\n// the eventURLFormatter prefers lat/long but falls back to locale if there's no lat/long and locale exists.\n// I think the only real value of this is that it can format a locale from the user's location as stored on backend which doesn't include lat/long.\n// it's possible we don't need that very much moving forward.\n\n\n// 05/09 I've decided to deprecate localeFormatter and remove it. as of today, it's removed from the web app. Mobile is next\n// nearly all places that would need locale wrote around this over time. eventURLFormatter has it's own naive way of doing it. \n// Event.js has extractLocale which looks simpler and better.\n// on testing, removing locale from event.js state is working fine. We just don't need it there anymore.\n\nexport function localeFormatter(lastLocale, lastCity) {\n const DEFAULT_LOCALE = 'Everywhere';\n let locale = '';\n let displayCity = '';\n if (!lastLocale) {\n let {city, state, zip} = userLocation.getUserLocation(); // userLocation stores lat/long so unclear why this would be useful. Perhaps userlocation will not always have lat/long\n if (city || state || zip) {\n if (zip) {\n locale += `${zip.slice(0, 5)}`;\n }\n if (city) {\n locale += ` ${city}`;\n }\n if ((city && state) || (zip && state && !city)) {\n locale += `,`;\n }\n if (state) {\n locale += ` ${state}`;\n }\n if (city) displayCity = city;\n } else {\n let {zip, city, address_state} = userProfile.getUserProfile().location; // get the location info from the profile as retrieved from the backend\n\n if (zip) {\n locale += `${zip.slice(0, 5)}`;\n }\n if (city) {\n locale += ` ${city}`;\n }\n if ((city && address_state) || (zip && address_state && !city)) {\n locale += `,`;\n }\n if (address_state) {\n locale += ` ${address_state}`;\n }\n if (city) displayCity = city;\n locale = locale.trim();\n }\n if (locale === '') {\n locale = DEFAULT_LOCALE;\n }\n } else {\n locale = lastLocale;\n displayCity = lastCity;\n }\n return {locale, displayCity};\n}\n\nexport function getDisplayDate(utcStartDateTime) {\n // understanding if an event is today or tomorrow is a local time concept.\n // 2 hours from an event at midnight UTC is \"tomorrow\" for a UTC-lander.\n // at the same moment in time, that event is \"today\" for a PST-lander.\n // in other words, you can't rely on utc comparison for dates.\n \n const today = moment();\n const tomorrow = moment().add(1, 'days');\n\n if (moment(utcStartDateTime).local().isSame(today, 'day')) {\n return 'Today';\n } else if (moment(utcStartDateTime).local().isSame(tomorrow, 'day')) {\n return 'Tomorrow';\n } else {\n return moment(utcStartDateTime).local().format('ddd, MMM DD, YYYY');\n }\n}\n\nexport function getAllDayEventTimes(date) {\n const startOfDay = moment(date)\n .startOf('day')\n .utc()\n .format('YYYY-MM-DD HH:mm:ss');\n const endOfDay = moment(date)\n .endOf('day')\n .utc()\n .format('YYYY-MM-DD HH:mm:ss');\n return {startOfDay, endOfDay};\n}\n\n// TODO: Remove this function and replace with the new utc-everywhere strategy.\n// Leaving in for now because web app uses it.\nexport function isEventOver(eventData) {\n const today = moment();\n const eventDate = localizeDate(\n eventData.time_zone_id,\n eventData.end,\n );\n return today.isAfter(eventDate);\n}\n\nexport function isVirtualEventJoinable(eventData) {\n if (!eventData || !eventData.utcStartDateTime || !eventData.utcEndDateTime) {\n return false;\n }\n const today = moment();\n \n const eventStartDate = eventData.utcStartDateTime;\n const eventEndDate = eventData.utcEndDateTime;\n\n // pad 10 minutes on either side. RSVP'd users get a notification 10 minutes before, so we are matching that here.\n // It seems better to display a \"join zoom\" button for users who respond to a \"event is starting\" noticication.\n // other improvements could be made (such as a countdown timer)\n const adjustedEventStartDate = eventStartDate.clone().subtract(10, 'minutes');\n const adjustedEventEndDate = eventEndDate.clone().add(10, 'minutes');\n\n return today.isBetween(adjustedEventStartDate, adjustedEventEndDate, null, '[]');\n}\n\nexport function generateInitialNextURL(eventID, status) {\n // TODO: Improve this, backend returns more than 10 for each type but front end only passes 10.\n return `${DOMAIN}${\n projectConfig.apiVersion\n }event/${eventID}/attendee?limit=10&offset=10&status=${status.slice(0, 1)}`;\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './TextInput.module.css';\n\nexport default class TextInput extends Component {\n constructor(props) {\n super(props);\n this.inputRef = React.createRef();\n }\n render() {\n const {\n type,\n name,\n value,\n onValueChange,\n label,\n error,\n onEnter,\n maxCharacters,\n reducedMargin,\n autoFillLabel,\n className,\n min,\n placeholder,\n onFocus,\n } = this.props;\n return (\n \n {/* Input type can be: text, password, email, tel, or url */}\n e.key === 'Enter' && onEnter && onEnter()}\n autoComplete={autoFillLabel}\n min={min}\n ref={this.inputRef}\n onFocus={() => {\n // this is to handle text input fields that end up following other functionality, such as opening a modal\n // and executes whatever will happen without keeping the text input field focused\n // primarily needing to allow tabbing into the next row\n if (onFocus) {\n onFocus();\n this.inputRef.current.blur();\n }\n }}\n />\n \n

{error && error}

\n {maxCharacters ? (\n

\n {value.length} / {maxCharacters}\n

\n ) : null}\n \n );\n }\n}\n\nTextInput.defaultProps = {\n type: 'text',\n};\n\nTextInput.propTypes = {\n type: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n label: PropTypes.string.isRequired,\n error: PropTypes.string,\n};\n","import React from 'react';\nimport TextInput from '../TextInput';\n\nconst EventLinkInput = ({\n value,\n onChangeText,\n label,\n error,\n maxCharacters,\n reducedMargin,\n}) => {\n const inputHandler = (e) => onChangeText(e.target.value);\n return (\n <>\n \n \n );\n};\n\nexport default EventLinkInput;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class LocationIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nLocationIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nLocationIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ClearSearchIcon extends Component {\n render() {\n return (\n \n \n \n \n );\n }\n}\n\nClearSearchIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#c1c2c3',\n};\n\nClearSearchIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","'use strict';\n\n// Object.defineProperty(exports, '__esModule', {\n// value: true,\n// });\n\nvar _extends =\n Object.assign ||\n function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n\nvar _createClass = (function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _lodash = require('lodash.debounce');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _helpers = require('./helpers');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\n \"this hasn't been initialised - super() hasn't been called\",\n );\n }\n return call && (typeof call === 'object' || typeof call === 'function')\n ? call\n : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError(\n 'Super expression must either be null or a function, not ' +\n typeof superClass,\n );\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n if (superClass)\n Object.setPrototypeOf\n ? Object.setPrototypeOf(subClass, superClass)\n : (subClass.__proto__ = superClass);\n}\n/*\n * Copyright (c) 2016-present, Ken Hibino.\n * Licensed under the MIT License (MIT).\n * See https://kenny-hibino.github.io/react-places-autocomplete\n */\n\n// transform snake_case to camelCase\nvar formattedSuggestion = function formattedSuggestion(structured_formatting) {\n return {\n mainText: structured_formatting.main_text,\n secondaryText: structured_formatting.secondary_text,\n };\n};\n\nvar PlacesAutocomplete = (function (_React$Component) {\n _inherits(PlacesAutocomplete, _React$Component);\n\n function PlacesAutocomplete(props) {\n _classCallCheck(this, PlacesAutocomplete);\n\n var _this = _possibleConstructorReturn(\n this,\n (\n PlacesAutocomplete.__proto__ ||\n Object.getPrototypeOf(PlacesAutocomplete)\n ).call(this, props),\n );\n\n _this.init = function () {\n if (!window.google) {\n throw new Error(\n '[react-places-autocomplete]: Google Maps JavaScript API library must be loaded. See: https://github.com/kenny-hibino/react-places-autocomplete#load-google-library',\n );\n }\n\n if (!window.google.maps.places) {\n throw new Error(\n '[react-places-autocomplete]: Google Maps Places library must be loaded. Please add `libraries=places` to the src URL. See: https://github.com/kenny-hibino/react-places-autocomplete#load-google-library',\n );\n }\n\n _this.autocompleteService = new window.google.maps.places.AutocompleteService();\n _this.autocompleteOK = window.google.maps.places.PlacesServiceStatus.OK;\n _this.autocompleteZeroResults =\n window.google.maps.places.PlacesServiceStatus.ZERO_RESULTS;\n _this.setState(function (state) {\n if (state.ready) {\n return null;\n } else {\n return {ready: true};\n }\n });\n };\n\n _this.autocompleteCallback = function (predictions, status) {\n _this.setState({loading: false});\n if (status !== _this.autocompleteOK) {\n _this.props.onError(status, _this.clearSuggestions);\n return;\n }\n var highlightFirstSuggestion = _this.props.highlightFirstSuggestion;\n\n _this.setState({\n suggestions: predictions.map(function (p, idx) {\n return {\n id: p.id,\n description: p.description,\n placeId: p.place_id,\n active: highlightFirstSuggestion && idx === 0 ? true : false,\n index: idx,\n formattedSuggestion: formattedSuggestion(p.structured_formatting),\n matchedSubstrings: p.matched_substrings,\n terms: p.terms,\n types: p.types,\n };\n }),\n });\n };\n\n _this.fetchPredictions = function () {\n var value = _this.props.value;\n\n if (value.length) {\n _this.setState({loading: true});\n // when we look for establishment, we also want address options\n if (_this.props.searchOptions.types[0] === 'establishment') {\n const addressPromise = new Promise((resolve, reject) => {\n _this.autocompleteService.getPlacePredictions(\n _extends(\n {},\n {types: ['address']},\n {\n input: value,\n },\n ),\n (predictions, status) => {\n if (status === _this.autocompleteZeroResults) {\n return resolve([]);\n } else if (status !== _this.autocompleteOK) {\n return reject(status);\n } else {\n return resolve(predictions);\n }\n },\n );\n });\n\n const establishmentPromise = new Promise((resolve, reject) => {\n _this.autocompleteService.getPlacePredictions(\n _extends({}, _this.props.searchOptions, {\n input: value,\n }),\n (predictions, status) => {\n if (status === _this.autocompleteZeroResults) {\n return resolve([]);\n } else if (status !== _this.autocompleteOK) {\n return reject(status);\n } else {\n return resolve(predictions);\n }\n },\n );\n });\n\n Promise.all([addressPromise, establishmentPromise]).then(\n ([addressPredictions, establishmentPredictions]) => {\n const results = [\n ...establishmentPredictions,\n ...addressPredictions,\n ];\n let status = _this.autocompleteOK;\n if (results.length === 0) status = _this.autocompleteZeroResults;\n _this.autocompleteCallback(results, status);\n },\n );\n } else {\n _this.autocompleteService.getPlacePredictions(\n _extends({}, _this.props.searchOptions, {\n input: value,\n }),\n _this.autocompleteCallback,\n );\n }\n }\n };\n\n _this.clearSuggestions = function () {\n _this.setState({suggestions: []});\n };\n\n _this.clearActive = function () {\n _this.setState({\n suggestions: _this.state.suggestions.map(function (suggestion) {\n return _extends({}, suggestion, {\n active: false,\n });\n }),\n });\n };\n\n _this.handleSelect = function (address, placeId) {\n _this.clearSuggestions();\n if (_this.props.onSelect) {\n _this.props.onSelect(address, placeId);\n } else {\n _this.props.onChange(address);\n }\n };\n\n _this.getActiveSuggestion = function () {\n return _this.state.suggestions.find(function (suggestion) {\n return suggestion.active;\n });\n };\n\n _this.selectActiveAtIndex = function (index) {\n var activeName = _this.state.suggestions.find(function (suggestion) {\n return suggestion.index === index;\n }).description;\n _this.setActiveAtIndex(index);\n _this.props.onChange(activeName);\n };\n\n _this.selectUserInputValue = function () {\n _this.clearActive();\n _this.props.onChange(_this.state.userInputValue);\n };\n\n _this.handleEnterKey = function () {\n var activeSuggestion = _this.getActiveSuggestion();\n if (activeSuggestion === undefined) {\n _this.handleSelect(_this.props.value, null);\n } else {\n _this.handleSelect(\n activeSuggestion.description,\n activeSuggestion.placeId,\n );\n }\n };\n\n _this.handleDownKey = function () {\n if (_this.state.suggestions.length === 0) {\n return;\n }\n\n var activeSuggestion = _this.getActiveSuggestion();\n if (activeSuggestion === undefined) {\n _this.selectActiveAtIndex(0);\n } else if (\n activeSuggestion.index ===\n _this.state.suggestions.length - 1\n ) {\n _this.selectUserInputValue();\n } else {\n _this.selectActiveAtIndex(activeSuggestion.index + 1);\n }\n };\n\n _this.handleUpKey = function () {\n if (_this.state.suggestions.length === 0) {\n return;\n }\n\n var activeSuggestion = _this.getActiveSuggestion();\n if (activeSuggestion === undefined) {\n _this.selectActiveAtIndex(_this.state.suggestions.length - 1);\n } else if (activeSuggestion.index === 0) {\n _this.selectUserInputValue();\n } else {\n _this.selectActiveAtIndex(activeSuggestion.index - 1);\n }\n };\n\n _this.handleInputKeyDown = function (event) {\n /* eslint-disable indent */\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n _this.handleEnterKey();\n break;\n case 'ArrowDown':\n event.preventDefault(); // prevent the cursor from moving\n _this.handleDownKey();\n break;\n case 'ArrowUp':\n event.preventDefault(); // prevent the cursor from moving\n _this.handleUpKey();\n break;\n case 'Escape':\n _this.clearSuggestions();\n break;\n }\n /* eslint-enable indent */\n };\n\n _this.setActiveAtIndex = function (index) {\n _this.setState({\n suggestions: _this.state.suggestions.map(function (suggestion, idx) {\n if (idx === index) {\n return _extends({}, suggestion, {active: true});\n } else {\n return _extends({}, suggestion, {active: false});\n }\n }),\n });\n };\n\n _this.handleInputChange = function (event) {\n var value = event.target.value;\n\n _this.props.onChange(value);\n _this.setState({userInputValue: value});\n if (!value) {\n _this.clearSuggestions();\n return;\n }\n if (_this.props.shouldFetchSuggestions) {\n _this.debouncedFetchPredictions();\n }\n };\n\n _this.handleInputOnBlur = function () {\n if (!_this.mousedownOnSuggestion) {\n _this.clearSuggestions();\n }\n };\n\n _this.getActiveSuggestionId = function () {\n var activeSuggestion = _this.getActiveSuggestion();\n return activeSuggestion\n ? 'PlacesAutocomplete__suggestion-' + activeSuggestion.placeId\n : undefined;\n };\n\n _this.getIsExpanded = function () {\n return _this.state.suggestions.length > 0;\n };\n\n _this.getInputProps = function () {\n var options =\n arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (options.hasOwnProperty('value')) {\n throw new Error(\n '[react-places-autocomplete]: getInputProps does not accept `value`. Use `value` prop instead',\n );\n }\n\n if (options.hasOwnProperty('onChange')) {\n throw new Error(\n '[react-places-autocomplete]: getInputProps does not accept `onChange`. Use `onChange` prop instead',\n );\n }\n\n var defaultInputProps = {\n type: 'text',\n autoComplete: 'off',\n role: 'combobox',\n 'aria-autocomplete': 'list',\n 'aria-expanded': _this.getIsExpanded(),\n 'aria-activedescendant': _this.getActiveSuggestionId(),\n disabled: !_this.state.ready,\n };\n\n return _extends({}, defaultInputProps, options, {\n onKeyDown: (0, _helpers.compose)(\n _this.handleInputKeyDown,\n options.onKeyDown,\n ),\n onBlur: (0, _helpers.compose)(_this.handleInputOnBlur, options.onBlur),\n value: _this.props.value,\n onChange: function onChange(event) {\n // console.log(\"autocomplete event: \", event);\n _this.handleInputChange(event);\n },\n });\n };\n\n _this.getSuggestionItemProps = function (suggestion) {\n var options =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var handleSuggestionMouseEnter = _this.handleSuggestionMouseEnter.bind(\n _this,\n suggestion.index,\n );\n var handleSuggestionClick = _this.handleSuggestionClick.bind(\n _this,\n suggestion,\n );\n\n return _extends({}, options, {\n key: suggestion.id,\n id: _this.getActiveSuggestionId(),\n role: 'option',\n onMouseEnter: (0, _helpers.compose)(\n handleSuggestionMouseEnter,\n options.onMouseEnter,\n ),\n onMouseLeave: (0, _helpers.compose)(\n _this.handleSuggestionMouseLeave,\n options.onMouseLeave,\n ),\n onMouseDown: (0, _helpers.compose)(\n _this.handleSuggestionMouseDown,\n options.onMouseDown,\n ),\n onMouseUp: (0, _helpers.compose)(\n _this.handleSuggestionMouseUp,\n options.onMouseUp,\n ),\n onTouchStart: (0, _helpers.compose)(\n _this.handleSuggestionTouchStart,\n options.onTouchStart,\n ),\n onTouchEnd: (0, _helpers.compose)(\n _this.handleSuggestionMouseUp,\n options.onTouchEnd,\n ),\n onClick: (0, _helpers.compose)(handleSuggestionClick, options.onClick),\n });\n };\n\n _this.handleSuggestionMouseEnter = function (index) {\n _this.setActiveAtIndex(index);\n };\n\n _this.handleSuggestionMouseLeave = function () {\n _this.mousedownOnSuggestion = false;\n _this.clearActive();\n };\n\n _this.handleSuggestionMouseDown = function (event) {\n event.preventDefault();\n _this.mousedownOnSuggestion = true;\n };\n\n _this.handleSuggestionTouchStart = function () {\n _this.mousedownOnSuggestion = true;\n };\n\n _this.handleSuggestionMouseUp = function () {\n _this.mousedownOnSuggestion = false;\n };\n\n _this.handleSuggestionClick = function (suggestion, event) {\n if (event && event.preventDefault) {\n event.preventDefault();\n }\n var description = suggestion.description,\n placeId = suggestion.placeId;\n\n _this.handleSelect(description, placeId);\n setTimeout(function () {\n _this.mousedownOnSuggestion = false;\n });\n };\n\n _this.state = {\n loading: false,\n suggestions: [],\n userInputValue: props.value,\n ready: !props.googleCallbackName,\n };\n\n _this.debouncedFetchPredictions = (0, _lodash2.default)(\n _this.fetchPredictions,\n _this.props.debounce,\n );\n return _this;\n }\n\n _createClass(PlacesAutocomplete, [\n {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var googleCallbackName = this.props.googleCallbackName;\n\n if (googleCallbackName) {\n if (!window.google) {\n window[googleCallbackName] = this.init;\n } else {\n this.init();\n }\n } else {\n this.init();\n }\n },\n },\n {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var googleCallbackName = this.props.googleCallbackName;\n\n if (googleCallbackName && window[googleCallbackName]) {\n delete window[googleCallbackName];\n }\n },\n },\n {\n key: 'render',\n value: function render() {\n return this.props.children({\n getInputProps: this.getInputProps,\n getSuggestionItemProps: this.getSuggestionItemProps,\n loading: this.state.loading,\n suggestions: this.state.suggestions,\n });\n },\n },\n ]);\n\n return PlacesAutocomplete;\n})(_react2.default.Component);\n\nPlacesAutocomplete.propTypes = {\n onChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string.isRequired,\n children: _propTypes2.default.func.isRequired,\n onError: _propTypes2.default.func,\n onSelect: _propTypes2.default.func,\n searchOptions: _propTypes2.default.shape({\n bounds: _propTypes2.default.object,\n componentRestrictions: _propTypes2.default.object,\n location: _propTypes2.default.object,\n offset: _propTypes2.default.oneOfType([\n _propTypes2.default.number,\n _propTypes2.default.string,\n ]),\n radius: _propTypes2.default.oneOfType([\n _propTypes2.default.number,\n _propTypes2.default.string,\n ]),\n types: _propTypes2.default.array,\n }),\n debounce: _propTypes2.default.number,\n highlightFirstSuggestion: _propTypes2.default.bool,\n shouldFetchSuggestions: _propTypes2.default.bool,\n googleCallbackName: _propTypes2.default.string,\n};\n\nPlacesAutocomplete.defaultProps = {\n /* eslint-disable no-unused-vars, no-console */\n onError: function onError(status, _clearSuggestions) {\n return console.error(\n '[react-places-autocomplete]: error happened when fetching data from Google Maps API.\\nPlease check the docs here (https://developers.google.com/maps/documentation/javascript/places#place_details_responses)\\nStatus: ',\n status,\n );\n },\n /* eslint-enable no-unused-vars, no-console */\n searchOptions: {},\n debounce: 200,\n highlightFirstSuggestion: false,\n shouldFetchSuggestions: true,\n};\n\nexport default PlacesAutocomplete;\n","import React, {Component} from 'react';\nimport styles from './SearchGooglePlaces.module.css';\nimport LocationIcon from './svgs/LocationIcon';\nimport ClearSearchIcon from './svgs/ClearSearchIcon';\nimport PlacesAutocomplete from '../react-places-autocomplete/dist/PlacesAutocomplete';\nimport { projectConfig } from '../../../shared/project-info/projectConfig';\n\nexport default class SearchGooglePlaces extends Component {\n shouldComponentUpdate = (nextProps) => {\n const {value, placeholder} = this.props;\n return value !== nextProps.value || placeholder !== nextProps.placeholder;\n };\n\n isDefaultSearch = () => {\n const {lat} = this.props;\n // lat is originally null, or an int\n // later, it becomes a string.\n return !lat || typeof lat === 'number';\n };\n\n render() {\n const {\n value,\n placeholder,\n onChange,\n onClearSearch,\n getSuggestions,\n type,\n displayIcon,\n error,\n handleError,\n persistentClear,\n clearPlaceholder,\n noLeftRadius,\n } = this.props;\n\n let countryRestriction = null;\n if (!projectConfig.allowsOtherCountries) {\n countryRestriction = {country: projectConfig.primaryCountryCode};\n }\n\n return (\n
\n {displayIcon ? : null}\n 2}\n debounce={500}\n onError={handleError}\n searchOptions={{\n componentRestrictions: countryRestriction,\n types: [type],\n }}\n >\n {({getInputProps, suggestions}) => {\n return (\n
\n \n {/* without this check, get suggestions updates suggestions to an empty array, causing an infinite spinner if the user clicks out of the box before selection a location */}\n {suggestions.length > 0 ? getSuggestions(suggestions) : null}\n
\n );\n }}\n \n {/* clear button with input */}\n \n \n
\n {noLeftRadius && value === '' && this.isDefaultSearch() && (\n
\n \n
\n )}\n\n {/* clear button with value (only used on event creation) */}\n {persistentClear ? (\n \n \n \n ) : null}\n \n );\n }\n}\n\nSearchGooglePlaces.defaultProps = {\n placeholder: 'Search',\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class CurrentLocationIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nCurrentLocationIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nCurrentLocationIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React from 'react';\nimport styles from './PlacesList.module.css';\nimport Loading from '../Loading';\nimport CurrentLocationIcon from '../svgs/CurrentLocationIcon';\n\nconst PlacesList = ({\n locationSuggestions,\n onSelect,\n onCurrentLocationSelect,\n locationError,\n}) => {\n return (\n
\n \n \n

{'Use Current Location'}

\n
\n {locationSuggestions.length > 0 ? (\n locationSuggestions.map((suggestion, i) => (\n \n onSelect(\n suggestion.description,\n suggestion.formattedSuggestion.mainText,\n )\n }\n key={i}>\n

{suggestion.description}

\n \n ))\n ) : locationError ? (\n
\n

{locationError}

\n
\n ) : (\n
\n \n
\n )}\n \n );\n};\n\nexport default PlacesList;\n","import {\n GOOGLE_MAP_API_KEY\n} from '../constants/APIKeys-obfuscated';\nimport {projectConfig} from '../project-info/projectConfig';\nimport {jsonOrThrow} from '../utils/Helpers';\n\nexport default class googleAPI {\n static geocode = (address) => {\n const url = `https://maps.googleapis.com/maps/api/geocode/json?address=${encodeURIComponent(\n address,\n )}&key=${GOOGLE_MAP_API_KEY}`;\n return fetch(url).then(jsonOrThrow);\n };\n\n static reverseGeocode = (latitude, longitude) => {\n const url = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${latitude},${longitude}&key=${GOOGLE_MAP_API_KEY}`;\n return fetch(url).then(jsonOrThrow);\n };\n\n static autocomplete = (input, sessionToken, type) => {\n let url = `https://maps.googleapis.com/maps/api/place/autocomplete/json?input=${input}&key=${GOOGLE_MAP_API_KEY}&sessiontoken=${sessionToken}&types=${type}&`;\n if (!projectConfig.allowsOtherCountries) {\n url = `${url}&components=country:${projectConfig.primaryCountryCode}`;\n }\n return fetch(url).then(jsonOrThrow);\n };\n\n static timezone = (lat, long, timestamp_string) => {\n const url = `https://maps.googleapis.com/maps/api/timezone/json?location=${lat},${long}×tamp=${timestamp_string}&key=${GOOGLE_MAP_API_KEY}`;\n return fetch(url).then(jsonOrThrow);\n };\n}\n","import React from 'react';\nimport {defaultUserPhoto, isMilitaryUser} from '../../../../shared/utils/Helpers';\nimport styles from './CreateEvent.module.css';\nimport AppMark from '../../../../shared/project-info/web-project-info/svgs/AppMark';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\n\nconst InvitedUsersSearchList = ({user, onInviteUserHandler}) => {\n const {\n first_name,\n last_name,\n profile_photo_url,\n preferred_chapter,\n military_branch,\n military_status,\n leader,\n } = user;\n return (\n
  • onInviteUserHandler(`${first_name} ${last_name}`)}>\n \n
    \n
    \n

    {`${first_name} ${last_name}`}

    \n {/* {eagle_leader && } */}\n
    \n {leader && (\n
    \n {projectConfig.leaderRoleDisplay}\n
    \n )}\n

    {preferred_chapter?.name}

    \n

    \n {military_status}\n {military_status && !isMilitaryUser(military_status) ? ` / ${military_branch}` : null}\n

    \n
    \n
  • \n );\n};\n\nexport default InvitedUsersSearchList;\n","import React from 'react';\nimport styles from './Attendee.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport AppMark from '../../../../shared/project-info/web-project-info/svgs/AppMark';\nimport AdminIcon from '../svgs/AdminIcon';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\n\nconst Attendee = ({item, onSelect, sponsorAdmin}) => {\n const {\n profile_photo_url,\n first_name,\n last_name,\n eagle_leader,\n leader,\n preferred_chapter,\n military_branch,\n military_status,\n } = item;\n return (\n {\n onSelect(item);\n }}>\n
    \n \n {sponsorAdmin && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n

    {`${first_name} ${last_name}`}

    \n {/* {eagle_leader && } */}\n
    \n {sponsorAdmin ?
    Group Leader
    : null}\n {eagle_leader || leader ?
    {projectConfig.leaderRoleDisplay}
    : null}\n

    {preferred_chapter?.name}

    \n

    \n {military_status}\n {military_status !== 'Civilian' && military_branch\n ? ` / ${military_branch}`\n : null}\n

    \n
    \n \n );\n};\n\nexport default Attendee;\n","import React, {useState, useRef, useCallback} from 'react';\nimport PersonIcon from '@material-ui/icons/Person';\nimport styles from './CreateEvent.module.css';\nimport Attendee from './Attendee';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport InvitedUsersSearchList from './InvitedUsersSearchList';\nimport debounce from 'lodash.debounce';\n\nconst DEBOUNCE_MS = 500;\n\nconst ChapterEventUserCard = ({title, userDetails, setHostUserId}) => {\n const searchUsers = (text) => {\n rwbApi.searchUser(text).then((result) => setUserSearchList(result));\n };\n\n const [userInputValue, setUserInputValue] = useState('');\n const [usersSearchList, setUserSearchList] = useState([]);\n const [isHostSelector, setIsHostSelector] = useState(false);\n const [hostUserData, setHostUserData] = useState(null);\n // https://reactjs.org/docs/hooks-reference.html#usecallback\n // lodash debounce is supposed to be an anonymous function usually, but that does not work in a react hook, so we use a memoized callback\n const debouncedSearchUsers = useCallback(\n debounce(searchUsers, DEBOUNCE_MS),\n [],\n );\n\n const inputHandler = (e) => {\n const text = e.target.value;\n setUserInputValue(text);\n debouncedSearchUsers(text);\n };\n\n const removeHostUser = () => {\n if (title === 'Host') {\n setUserSearchList([]);\n setIsHostSelector((prevState) => !prevState);\n }\n };\n\n const onPickHostClick = (user) => {\n if (title === 'Host') {\n // removeHostUser();\n setHostUserData(user);\n setHostUserId(user.id);\n setUserInputValue('');\n }\n };\n\n return (\n
    \n
    \n
    {title}
    \n
    \n
    \n {title === 'Creator' ? (\n null}\n /> // no-op as creator cannot be modified. Will need style changes to match it\n ) : (\n <>\n {!isHostSelector && (\n null}\n />\n )}\n \n \n )}\n\n {userInputValue && usersSearchList?.length > 0 && (\n
    \n {usersSearchList.map((user, key) => (\n
    onPickHostClick(user)}>\n {}}\n />\n
    \n ))}\n
    \n )}\n
    \n
    \n );\n};\n\nexport default ChapterEventUserCard;\n","import React from 'react';\nimport {Paper, makeStyles, Tabs, Tab} from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n boxShadow: '0px 0px 0px 0px',\n position: 'sticky',\n },\n menuButton: {\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n },\n toolbar: {\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n height: 64,\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n },\n iconLabelWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n color: 'var(--grey)',\n fontFamily: 'var(--primaryBold)',\n fontSize: '14px',\n letterSpacing: '0',\n lineHeight: 'normal',\n },\n iconLabelWrapperSelected: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n color: 'var(--primary)',\n fontFamily: 'var(--primaryBold)',\n fontSize: '14px',\n letterSpacing: '0',\n lineHeight: 'normal',\n },\n tabs: {\n borderBottom: '1px solid var(--grey20)',\n },\n caTab: {\n borderRight: '1px solid var(--grey20)',\n '&:last-child': {\n borderRight: 'none',\n }\n },\n indicator: {\n backgroundColor: 'var(--primary)',\n height: '2px',\n border: null,\n borderColor: null,\n },\n}));\n\nconst ReusableTabs = ({selectedValue, values, onChangeHandler, children}) => {\n const classes = useStyles();\n\n return (\n \n onChangeHandler(i)}\n variant=\"fullWidth\"\n classes={{\n indicator: classes.indicator,\n }}>\n {values.map((value, i) => (\n \n ))}\n \n {children}\n \n );\n};\n\nexport default ReusableTabs;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './ToggleSwitch.module.css';\n\nfunction ToggleSwitch({desc, value, onChange, greenBackground}) {\n return (\n
    \n \n {desc &&

    {desc}

    }\n
    \n );\n}\n\nToggleSwitch.propTypes = {\n desc: PropTypes.string,\n};\n\nexport default ToggleSwitch;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class CalenderIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nCalenderIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nCalenderIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ClockIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nClockIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nClockIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ActivityIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nActivityIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nActivityIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {useState} from 'react';\nimport styles from './CreateEvent.module.css';\nimport {IoIosCloseCircle as RemoveIcon} from 'react-icons/io';\nimport moment from 'moment-timezone';\nimport {\n Toolbar,\n IconButton,\n Button,\n makeStyles,\n Paper,\n} from '@material-ui/core';\nimport CustomModal from './CustomModal';\nimport Loading from '../Loading';\nimport DatePicker from 'react-datepicker';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {GROUP_EVENT_OPTIONS} from '../../../../shared/constants/EventFilters';\nimport {\n validURL,\n debounce,\n extractAddressComponent,\n isNullOrEmpty,\n} from '../../../../shared/utils/Helpers';\nimport {getAllDayEventTimes} from '../../../../shared/utils/EventHelpers';\nimport EventLinkInput from './EventLinkInput';\nimport SearchGooglePlaces from '../SearchGooglePlaces';\nimport PlacesList from './PlacesList';\nimport googleAPI from '../../../../shared/apis/googleAPI';\nimport InvitedUsersSearchList from './InvitedUsersSearchList';\nimport TextArea from '../TextArea';\nimport ChapterEventUserCard from './ChapterEventUserCard';\nimport imageHandler from '../ImageHandler';\nimport {\n logCreateEvent,\n logUpdateEvent,\n} from '../../../../shared/models/Analytics';\nimport {userLocation} from '../../../../shared/models/UserLocation';\nimport {\n getLatLng,\n geocodeByAddress,\n} from '../../react-places-autocomplete/dist/utils';\nimport ReusableTabs from '../ReusableTabs';\nimport {CREATE_EVENT_NAV_ELEMENTS} from '../../../../shared/constants/EventTabs';\nimport ToggleSwitch from '../ToggleSwitch';\n//svgs\nimport XIcon from '../svgs/XIcon';\nimport CalenderIcon from '../svgs/CalenderIcon';\nimport ClockIcon from '../svgs/ClockIcon';\nimport LocationIcon from '../svgs/LocationIcon';\nimport ActivityIcon from '../svgs/ActivityIcon';\nimport LinksIcon from '../svgs/LinksIcon';\nimport GalleryIcon from '../svgs/GalleryIcon';\nimport CheckIcon from '../svgs/CheckIcon';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { EVENT_ERRORS, LOCATION_ERRORS } from '../../../../shared/constants/ErrorMessages';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { WEB_IMAGE_FORMATS } from '../../../../shared/constants/ImageConstants';\n\nconst EVENT_STATUS = {\n canceled: 'Canceled',\n completed: 'Completed',\n in_progress: 'In Progress',\n};\n\nconst LINK_CHAR_LIMIT = 40;\nconst DESCRIPTION_CHAR_LIMIT = 3000;\n\nconst CreateEvent = ({\n closeModalHandlers,\n setCreateEventChoices,\n groupId,\n groupName,\n groupType,\n selectedTab,\n eventData,\n refreshEvents,\n isAdmin,\n isVirtual,\n virtualCategory,\n}) => {\n let utcStartTime;\n let utcEndTime;\n let utcDate;\n\n\n // this is to ensure copying to avoid mutations and cause issues elsewhere\n \n let eventCategories = {...GROUP_EVENT_OPTIONS};\n if (eventData) {\n utcDate = moment.utc(eventData.start);\n utcStartTime = moment.utc(eventData.start);\n utcEndTime = moment.utc(eventData.end);\n }\n\n const [eventId, setEventId] = useState(eventData?.id || null);\n const [hostUserId, setHostUserId] = useState(eventData?.host.id || null);\n const [address, setAddress] = useState(eventData?.location.address || '');\n const [addressError, setAddressError] = useState(null);\n const [city, setCity] = useState(eventData?.location?.city || '');\n const [zip, setZip] = useState(eventData?.location?.zip || '');\n const [addressState, setAddressState] = useState(\n eventData?.location?.state || '',\n );\n const [country, setCountry] = useState(eventData?.location?.country || '');\n const [latitude, setLatitude] = useState(\n eventData?.location.latitude || null,\n );\n const [longitude, setLongitude] = useState(\n eventData?.location.longitude || null,\n );\n const [isLoading, setIsLoading] = useState(false);\n const [eventTitle, setEventTitle] = useState(eventData?.name || '');\n const [eventTitleError, setEventTitleError] = useState(null);\n const [isAllDayEvent, setIsAllDayEvent] = useState(\n eventData?.is_all_day || false,\n );\n const [date, setDate] = useState(\n eventData ? utcDate : moment(new Date()).utc(),\n );\n const [startTime, setStartTime] = useState(eventData ? utcStartTime : null);\n const [startTimeError, setStartTimeError] = useState(null);\n const [endTime, setEndTime] = useState(eventData ? utcEndTime : null);\n const [endTimeError, setEndTimeError] = useState(null);\n const [locationSearchInput, setLocationSearchInput] = useState('');\n const [locationSuggestions, setLocationSuggestions] = useState([]);\n // set on error state for event lookup. This is currently just used for no results\n const [locationError, setLocationError] = useState(null);\n const [eventImage, setEventImage] = useState(eventData?.photo_url || null);\n const [eventImageFile, setEventImageFile] = useState(\n eventData?.photo_url || null,\n );\n const [linksClicked, setLinksClicked] = useState(!!eventData?.links);\n const [linkText1, setLinkText1] = useState(eventData?.links?.[0]?.text || '');\n const [linkURL1, setLinkURL1] = useState(eventData?.links?.[0]?.url || '');\n const [linkText1Error, setLinkText1Error] = useState(null);\n const [linkURL1Error, setLinkURL1Error] = useState(null);\n const [linkText2, setLinkText2] = useState(eventData?.links?.[1]?.text || '');\n const [linkURL2, setLinkURL2] = useState(eventData?.links?.[1]?.url || '');\n const [linkText2Error, setLinkText2Error] = useState(null);\n const [linkURL2Error, setLinkURL2Error] = useState(null);\n const [eventDescription, setEventDescription] = useState(\n eventData?.description || '',\n );\n const [eventDescriptionError, setEventDescriptionError] = useState(null);\n const [invitedUsersInputValue, setInvitedUsersInputValue] = useState('');\n const [invitedUsersSearchList, setInvitedUsersSearchList] = useState([]);\n const [invitedUsersNames, setInvitedUsersName] = useState([]);\n const [invitedUsersIDs, setInvitedUsersIDs] = useState([]);\n const [eventActivityModalIsOpen, setEventActivityModalIsOpen] = useState(\n false,\n );\n const [\n eventActivityModalSelectedValue,\n setEventActivityModalSelectedValue,\n ] = useState(eventData?.category || null);\n const [\n eventActivityModalSelectedValueError,\n setEventActivityModalSelectedValueError,\n ] = useState(null);\n const [activeTab, setActiveTab] = useState(\n eventData?.is_virtual ? 1 : selectedTab,\n );\n\n const [registrationLink,setRegistrationLink] = useState(eventData?.registration_url || null)\n const [maxAttendees,setMaxAttendees] = useState(\"\")\n const[registrationLinkError,setRegistrationLinkError] = useState(\"\")\n const [maxAttendeesError,setMaxAttendeesError]= useState(\"\")\n const [eventDateError,setEventDateError] = useState(\"\")\n\n const handleActiveTab = (index) => {\n // local\n if (index === 0) setVirtualEventCategory(null);\n else setVirtualEventCategory('workouts');\n setActiveTab(index);\n setIsAllDayEvent(false);\n };\n const eventActivityModalHandler = () =>\n setEventActivityModalIsOpen((prevState) => !prevState);\n\n const eventActivityModalSelectHandler = (value) =>\n setEventActivityModalSelectedValue(value || 'all-activities');\n const [virtualEventCategory, setVirtualEventCategory] = useState(\n eventData?.virtual_event_category\n ? eventData.virtual_event_category\n : isVirtual\n ? 'workouts'\n : null,\n );\n\n const useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n },\n menuButton: {\n marginRight: '15px',\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n },\n toolbar: {\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n height: 64,\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n fontWeight: 'bold',\n },\n }));\n const classes = useStyles();\n\n const eventTitleHandler = (e) => setEventTitle(e.target.value);\n // keep the start time and date together so that the days adjust appropriately\n const handleTimeDateChange = (time) => {\n // wrap the localized time in a moment object\n let momentDate = moment(date.toDate());\n let momentTime = moment(time.toDate());\n // format the date and time separately as they can have invalid values from the picker\n let mDateFormatted = momentDate.format('YYYY-MM-DD');\n let mTimeFormatted = momentTime.format('HH:mm:ss');\n // combine them and format it to send\n return moment(`${mDateFormatted} ${mTimeFormatted}`)\n .utc()\n .format('YYYY-MM-DD HH:mm:ss');\n };\n const convertToUTC = (time) => moment.utc(time.toISOString());\n const handleDateChange = (date) => setDate(convertToUTC(date));\n const handleStartTime = (time) => setStartTime(convertToUTC(time));\n const handleEndTime = (time) => setEndTime(convertToUTC(time));\n const eventDescriptionHandler = (desc) => setEventDescription(desc);\n\n const clearErrors = () => {\n setEventTitleError(null);\n setEndTimeError(null);\n setStartTimeError(null);\n setAddressError(null);\n setEventActivityModalSelectedValueError(null);\n setLinkText1Error(null);\n setLinkText2Error(null);\n setLinkURL1Error(null);\n setLinkURL2Error(null);\n setEventDescriptionError(null);\n setRegistrationLinkError(null)\n setMaxAttendeesError(null)\n };\nconst isVirtualAndAllDay = () =>{\n console.log(\"isAllDayEvent && activeTab === 1 \",isAllDayEvent && activeTab === 1 );\n return isAllDayEvent && activeTab === 1 \n}\n const hasErrors = () => {\n let hasError = false;\n clearErrors();\n\n const isVirtual = groupId && activeTab === 1;\n\n const CHAR_LIMIT_WARNING_LINK = `EXCEEDED ${LINK_CHAR_LIMIT} CHARACTER LIMIT`;\n const CHAR_LIMIT_WARNING_DESC = `EXCEEDED ${DESCRIPTION_CHAR_LIMIT} CHARACTER LIMIT`;\n const MISSING_TEXT_WARNING = 'MISSING TEXT FOR LINK';\n const MISSING_LINK_WARNING = 'MISSING LINK FOR TEXT';\n const INVALID_URL_WARNING = 'INVALID URL (example: https://example.com)';\n const INVALID_END_TIME = 'MUST BE AFTER START TIME';\n const MISSING_FIELD = 'THIS FIELD IS REQUIRED';\n const NUMERIC_ONLY = 'MUST BE A NUMBER';\n const MAX_ATTENDEES_OFFSITE_REGISTRATION = 'YOU CANNOT SET AN ATTENDEE LIMIT AND ALSO USE A REGISTRATION LINK. ATTENDEE LIMITS WILL HANDLED BY THE EXTERNAL TICKETING/REGISTRATION SITE.'\n const MISSING_ZIP = 'THIS IS AN INVALID LOCATION. PLEASE TRY SELECTING ANOTHER LOCATION.';\n\n if (registrationLink) {\n if(!validURL(registrationLink)) {\n setRegistrationLinkError(INVALID_URL_WARNING)\n hasError = true;\n }\n if(maxAttendees) {\n setMaxAttendeesError(MAX_ATTENDEES_OFFSITE_REGISTRATION)\n setRegistrationLinkError(MAX_ATTENDEES_OFFSITE_REGISTRATION)\n hasError = true;\n }\n }\n if (linkURL1) {\n if (!linkText1) {\n setLinkText1Error(MISSING_TEXT_WARNING);\n hasError = true;\n }\n if (!validURL(linkURL1)) {\n setLinkURL1Error(INVALID_URL_WARNING);\n hasError = true;\n }\n }\n if (linkText1) {\n if (linkText1.length > LINK_CHAR_LIMIT) {\n setLinkText1Error(CHAR_LIMIT_WARNING_LINK);\n hasError = true;\n }\n if (!linkURL1) {\n setLinkURL1Error(MISSING_LINK_WARNING);\n hasError = true;\n }\n }\n if (linkURL2) {\n if (!linkText2) {\n setLinkText1Error(MISSING_TEXT_WARNING);\n hasError = true;\n }\n if (!validURL(linkURL2)) {\n setLinkURL2Error(INVALID_URL_WARNING);\n hasError = true;\n }\n }\n if (eventDescription.length == 0) {\n setEventDescriptionError(MISSING_FIELD);\n hasError = true;\n }\n if (linkText2) {\n if (linkText2.length > LINK_CHAR_LIMIT) {\n setLinkText2Error(CHAR_LIMIT_WARNING_LINK);\n hasError = true;\n }\n if (!linkURL2) {\n setLinkURL2Error(MISSING_LINK_WARNING);\n hasError = true;\n }\n }\n if (isNullOrEmpty(eventTitle)) {\n setEventTitleError(MISSING_FIELD);\n hasError = true;\n }\n\n \n if (!isVirtual) {\n if (isNullOrEmpty(address.toString())) {\n setAddressError(MISSING_FIELD);\n hasError = true;\n } else if (!zip) {\n setAddressError(MISSING_ZIP);\n hasError = true;\n }\n }\nif(date && date == \"\")\n{\n setEventDateError(MISSING_FIELD)\n hasError = true;\n}\nif(!isVirtualAndAllDay())\n {\n let momentEndTime = moment(`${date} ${endTime}`);\n let momentStartTime = moment(`${date} ${startTime}`);\n if (momentEndTime.isSameOrBefore(momentStartTime)) {\n setEndTimeError(INVALID_END_TIME);\n hasError = true;\n }\n if (!endTime && !isAllDayEvent) {\n setEndTimeError(MISSING_FIELD);\n hasError = true;\n }\n if (!startTime && !isAllDayEvent) {\n setStartTimeError(MISSING_FIELD);\n hasError = true;\n }\n }\n if (!eventActivityModalSelectedValue) {\n setEventActivityModalSelectedValueError(MISSING_FIELD);\n hasError = true;\n }\n\n for (var i=0; i < maxAttendees?.length; i++) {\n if (maxAttendees[i] < '0' || maxAttendees[i] > '9') {\n setMaxAttendeesError(NUMERIC_ONLY)\n hasError = true;\n break;\n }\n }\n return hasError;\n };\n\n const createEventHandler = () => {\n if (hasErrors()) return false;\n\n setIsLoading(true);\n // if not virtual\n if (activeTab !== 1) {\n const convertedDate = new Date(date).toISOString().substring(0, 10);\n const convertedStartTime = startTime.toString().substring(16, 24);\n const eventDateTime = moment(`${convertedDate} ${convertedStartTime}`);\n googleAPI\n .timezone(latitude, longitude, eventDateTime.unix())\n .then((response) =>\n formatPayload(response.timeZoneId, response.timeZoneName),\n );\n } else \n {\n const userTimeZoneID = moment.tz.guess() || 'America/New_York';\n const userTimeZoneName = moment.tz(userTimeZoneID).zoneName();\n formatPayload(userTimeZoneID, userTimeZoneName);\n }\n \n };\n\n const formatPayload = async (timeZoneId, timeZoneName) => {\n const user = userProfile.getUserProfile();\n let links = [];\n if (linkText1 && linkURL1) {\n links.push({text: linkText1, url: linkURL1});\n }\n if (linkText2 && linkURL2) {\n links.push({text: linkText2, url: linkURL2});\n }\n // date is already a moment object, use just the string to be formatted into a utc moment object\n const dateString = date.format('YYYY-MM-DD');\n let eventStartTime;\n let eventEndTime;\n // SF times are not the set times in the app, keep the time if updating an event\n if (isAllDayEvent && !eventId) {\n const allDayTimes = getAllDayEventTimes(dateString);\n eventStartTime = allDayTimes.startOfDay;\n eventEndTime = allDayTimes.endOfDay;\n } else {\n eventStartTime = handleTimeDateChange(startTime);\n eventEndTime = handleTimeDateChange(endTime);\n }\n\n const isVirtual = groupId && activeTab === 1; // need to check for the groupId, otherwise creating event from My Events tab will result as virtual\n const payload = {\n name: eventTitle.slice(0, 68), // event title needs to be limited to 68 characters for SF sync\n creator: eventData?.creator?.id || user.id,\n host: hostUserId || user.id,\n category: eventActivityModalSelectedValue,\n description: eventDescription,\n start: eventStartTime,\n end: eventEndTime,\n status: EVENT_STATUS.in_progress,\n chapter_id: groupId || 0, // // backend stores it as chapter_id to match old convention\n chapter_hosted: groupId ? true : false,\n photo_url: eventImage,\n links,\n tagged: invitedUsersIDs,\n location: isVirtual ? null : {\n latitude: latitude.toString(),\n longitude: longitude.toString(),\n address: address,\n city: city,\n state: addressState,\n zip: zip,\n country: country,\n },\n time_zone_id: isVirtual ? null : timeZoneId,\n time_zone_name: isVirtual ? null : timeZoneName,\n is_virtual: isVirtual,\n is_all_day: isAllDayEvent,\n virtual_event_category: virtualEventCategory,\n max_attendees: maxAttendees || null,\n registration_url:registrationLink\n };\n\n let imageData = null;\n // do not try and make an imageData object if we already have a photo as a url\n if (eventImage && typeof eventImage !== 'string') {\n imageData = {\n media_filename: 'eventCoverPhoto',\n media_intent: 'event',\n };\n }\n if (!imageData) {\n uploadEvent(payload);\n } else {\n imageHandler(eventImage, 'event')\n .then((result) => {\n payload.photo_url = result;\n uploadEvent(payload);\n })\n .catch((error) => {\n setIsLoading(false);\n errorAlert(EVENT_ERRORS.IMAGE_UPLOAD);\n });\n }\n };\n\n const uploadEvent = (payload) => {\n if (eventId) {\n return rwbApi\n .putEvent(eventId, JSON.stringify(payload))\n .then(() => {\n logUpdateEvent();\n if (refreshEvents) refreshEvents();\n })\n .catch((error) => {\n console.warn(error);\n errorAlert(EVENT_ERRORS.UPDATING_ERROR);\n })\n .finally(() => {\n setIsLoading(false);\n closeModalHandlers();\n });\n } else {\n return rwbApi\n .postEvent(JSON.stringify(payload))\n .then(() => {\n logCreateEvent();\n // retrieving the feed after so the post is in existence and can be reacted to\n // (small delay to ensure stream gets the post)\n setTimeout(() => {\n if (refreshEvents) refreshEvents();\n return rwbApi.getUserFeed(userProfile.getUserProfile().id);\n }, 100);\n })\n .catch((error) => {\n console.warn(error);\n errorAlert(EVENT_ERRORS.CREATING_ERROR);\n })\n .finally(() => {\n setIsLoading(false);\n setCreateEventChoices(false);\n closeModalHandlers();\n });\n }\n };\n\n const addImageHandler = (e) => {\n const file = e.target.files[0];\n setEventImage(file); // this will be used for upload image on post\n\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n setEventImageFile(reader.result); // preview image before upload\n };\n };\n\n const removeImageHandler = () => {\n setEventImage(null);\n setEventImageFile(null);\n };\n\n const linksHandler = () => setLinksClicked((prevState) => !prevState);\n\n const getSuggestionsHandler = (suggestions) => {\n setLocationSuggestions(suggestions);\n if (suggestions.length > 0) setLocationError(null);\n };\n\n const getSuggestionsDebounce = debounce(getSuggestionsHandler, 500);\n\n const selectLocationHandler = (address) => {\n geocodeByAddress(address).then((results) => {\n const addressComponents = results[0].address_components;\n const city = extractAddressComponent('locality', addressComponents)\n .long_name;\n const state = extractAddressComponent(\n 'administrative_area_level_1',\n addressComponents,\n ).short_name;\n let zip = extractAddressComponent('postal_code', addressComponents);\n // not all locations have an associated zip\n if (zip) zip = zip.long_name;\n const country = extractAddressComponent('country', addressComponents)\n .short_name;\n getLatLng(results[0])\n .then((latLng) => {\n handleGoogleResponse({\n address,\n city,\n state,\n zip,\n country,\n lat: latLng.lat,\n long: latLng.lng,\n });\n })\n .catch(() => alert('Error with selecting the location.'));\n });\n };\n\n const addressFromLatLng = async (lat, lng) => {\n var geocoder = new window.google.maps.Geocoder();\n var OK = window.google.maps.GeocoderStatus.OK;\n\n var latlng = {lat: parseFloat(lat), lng: parseFloat(lng)};\n return new Promise(function (resolve, reject) {\n geocoder.geocode({location: latlng}, function (results, status) {\n if (status !== OK) {\n reject(status);\n }\n resolve(results);\n });\n });\n };\n\n const selectCurrentLocationHandler = () => {\n try {\n setIsLoading(true);\n navigator.geolocation.getCurrentPosition((position) => {\n const {latitude, longitude} = position.coords;\n if (latitude && longitude) {\n addressFromLatLng(latitude, longitude).then((results) => {\n let match;\n for (let result of results) {\n if (\n result.types.includes('street_address') ||\n result.types.includes('establishment') ||\n result.types.includes('premise') ||\n result.types.includes('point_of_interest')\n ) {\n match = result;\n }\n }\n if (match?.formatted_address)\n selectLocationHandler(match.formatted_address);\n else {\n setIsLoading(false);\n errorAlert(LOCATION_ERRORS.NOT_FOUND);\n }\n });\n } else {\n setIsLoading(false);\n errorAlert(LOCATION_ERRORS.NOT_FOUND);\n }\n });\n } catch (error) {\n alert(error.message);\n }\n };\n\n const handleGoogleResponse = (response) => {\n if (response) {\n setLocationSearchInput('');\n setIsLoading(false);\n\n clearEvents({\n lat: response.lat.toString(),\n long: response.long.toString(),\n address: response.address,\n city: response.city,\n state: response.state,\n zip: response.zip,\n country: response.country,\n });\n }\n };\n\n const clearEvents = (search_props) => {\n const {lat, long, address, city, state, zip, country} = search_props;\n setLatitude(lat);\n setLongitude(long);\n setAddress(address);\n setCity(city);\n setAddressState(state);\n setZip(zip);\n setCountry(country);\n setAddressError(null);\n };\n\n const invitedUsersHandler = (inviteUser) => {\n setInvitedUsersInputValue(inviteUser);\n rwbApi.searchUser(inviteUser).then((result) => {\n setInvitedUsersSearchList(result); //validate there is no already invited users\n scrollToTheBottom();\n });\n };\n\n const onInviteUserHandler = async (name) => {\n setInvitedUsersSearchList([]);\n setInvitedUsersInputValue('');\n const userId = await rwbApi.searchUser(name);\n setInvitedUsersName([...invitedUsersNames, name]);\n setInvitedUsersIDs([...invitedUsersIDs, userId[0].id]);\n };\n\n const removeInvitedUserHandler = (removedUser) => {\n const leftUsers = invitedUsersNames.filter((user) => user !== removedUser);\n setInvitedUsersName(leftUsers);\n };\n\n const scrollToTheBottom = () => {\n const container = document.getElementById('createEventContainer');\n container.scrollTop = container.scrollHeight;\n };\n\n // TODO, expand upon this\n const handleLocationError = (err) => {\n // ReactPlacesAutocomplete has a very finicky loading state\n // in order to determine if it is done loading when there are zero results we check for the error instead\n if (err === 'ZERO_RESULTS') setLocationError('No Results Found');\n };\n const hasLocation = activeTab != 1;\n \n return (\n
    \n {isLoading && (\n \n )}\n\n \n \n \n \n \n
    \n

    \n {groupName || groupId > 0\n ? 'Create Group Event'\n : userProfile.getUserProfile().eagle_leader\n ? (projectConfig.name == 'Buddy Up') ? 'Create NON-CHAPTER Event': 'Create Event'\n : 'Create Event'} \n

    \n {groupId !== 0 && groupId && (\n

    {groupName}

    \n )}\n
    \n \n \n \n
    \n
    \n
    \n
    \n { (projectConfig.allowsVirtualEventsOutsideGroups ||(groupName && isAdmin)) && (\n name)}\n onChangeHandler={handleActiveTab}\n />\n )}\n \n

    {eventTitleError}

    \n {groupId !== 0 && groupId && (\n <>\n
    \n \n
    \n
    \n \n
    \n \n )}\n {/* {activeTab === 1 && (\n
    \n setVirtualEventCategory('workouts')}>\n

    Workout

    \n
    \n setVirtualEventCategory('challenges')}>\n

    Challenge

    \n
    \n
    \n )} */}\n\n
    \n
    \n
    \n \n \n
    \n {activeTab === 1 && (\n // Virtual tab\n
    \n

    \n All Day Event\n

    \n setIsAllDayEvent(!isAllDayEvent)}\n greenBackground\n />\n
    \n )}\n
    \n

    \n{eventDateError}

    \n \n
    \n \n \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n

    Uses the event location's timezone

    \n \n {endTimeError}\n

    \n
    \n
    \n

    {startTimeError}

    \n
    \n\n
    \n\n\n\n
    \n \n \n
    \n

    \n {eventActivityModalSelectedValueError}\n

    \n {projectConfig.eventsHaveAttendeeLimit && (\n <>\n setMaxAttendees(event.target.value)}\n />\n

    LEAVE BLANK FOR UNLIMITED

    \n

    \n {maxAttendeesError}\n

    \n \n ) }\n {hasLocation && (\n /* Event Location */\n
    \n \n
    \n {\n setLocationSearchInput(value);\n value.length < 3 && getSuggestionsHandler([]);\n }}\n onClearSearch={() => {\n setLocationSearchInput('');\n getSuggestionsHandler([]);\n }}\n clearPlaceholder={() => {\n setAddress('');\n setAddressError(null);\n }}\n handleError={handleLocationError}\n getSuggestions={getSuggestionsDebounce}\n placeholder={address || 'Enter Location'}\n type=\"establishment\"\n />\n
    \n
    \n )}\n {hasLocation &&

    {addressError}

    }\n {locationSearchInput.length > 0 && (\n
    \n \n
    \n )}\n\n
    \n \n \n Links\n \n
    \n {linksClicked && (\n
    \n \n \n \n \n {projectConfig.eventRsvpHasRegistration && \n \n }\n
    \n )}\n \n
    \n \n

    \n {eventDescriptionError}\n

    \n {eventImageFile && (\n
    \n \n \n \n
    \n
    \n )}\n \n {!eventData?.id && (\n <>\n
    \n \n {invitedUsersInputValue && invitedUsersSearchList.length > 0 ? (\n
    \n {invitedUsersSearchList.map((user, key) => (\n \n ))}\n
    \n ) : null}\n
    \n {invitedUsersNames.map((user, key) => (\n \n {user}\n removeInvitedUserHandler(user)} />\n \n ))}\n \n )}\n \n \n
    \n \n
    \n \n );\n};\n\nexport default CreateEvent;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class VirtualEventIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nVirtualEventIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nVirtualEventIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class AttendingIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nAttendingIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#828588',\n};\n\nAttendingIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","// This file should never be imported from directly. Keep it out of the dependency graph,\n// and use APIKeys-obfuscated.js instead.\n\nimport { isDev } from '../utils/IsDev';\nimport { projectConfig } from '../project-info/projectConfig';\nimport { paymentConfig } from '../project-info/paymentConfig';\n\nconst env = isDev()\n ? 'staging' // set to 'dev'/'staging' for appropriate server\n : 'prod';\n\nlet stripeKey;\n// for betas, make sure you use the productive stripe so real purchases can be tested\nif (env !== 'prod') stripeKey = 'pk_test_51NMC1YI2CdhfFGKA6Dafn1vc7514tylobk7Df9ShLEB3JFfHyDkC7dRfvE9v2kLrukh9oIQkTBjJZuIiI3YmKk1I0036mBSeOU'; // retronyms test\nelse stripeKey = paymentConfig.stripeKey; // client specific live key\n\n// This should be a client specific key, if there is none setup in paymentconfig we will use the default retronyms one\n// Retronyms key is stored in Arjin's \"Stripe\" in the social stack account\nexport const STRIPE_KEY = stripeKey;\n\n// Owned by retronyms, this is used to lookup address. In rwb we verify addresses, for social stack we do not.\n// Accessed in 1pass, titled as \"Melissa Data\" and is Niki's information\n// This key is for production and staging.\nexport const MELISSA_ID = 'IRrPJ2a5bvDsjWXUP36A_n**';\n\n/* On the Google Cloud Console this key is limited to the following APIs:\n Geocoding API\n Places API\n Time Zone API\n Maps JavaScript API (web specific)\n*/\n// Currently one key handles all of these with no restrictions other than needing to use these apis\n// TODO: Determine if we should break them down into individual keys/platforms for added security.\n// We may want to split these keys up per project if want to accurately monitor and restrict keys.\n\n// Main key for Places, Geocoding, Timezone, GCM, FCM, and more.\n// Production & Staging. Owned by Retronyms. Managed in cloud console at Retronyms > Buddy Up.\nexport const GOOGLE_MAP_API_KEY = 'AIzaSyAJs2yORCYOG19wVN-uINAeinJ2ARhQkQw';\n\n// if projectConfig hasOpenGraphPreviews is true, then this key is required.\nlet openGraphKey;\nif (projectConfig.name == 'Design Bay Area') {\n // ***3431 \"Design Bay Area\" only. opengraph.io, Owned by Retronyms. Check 1Password for shared account, or request access from JP.\n openGraphKey = 'a4bd6755-0287-4585-97a6-72ea9a8d3431';\n} else if (projectConfig.name == 'FitPros') {\n // ***0376 FitPros only. opengraph.io, Owned by Retronyms. Check 1Password for shared account, or request access from JP.\n openGraphKey = 'ac5eaa33-266b-428e-a146-bc9e36fb0376';\n} else if (projectConfig.name == 'Buddy Up') {\n // ***e7a5 BuddyUp only. opengraph.io, Owned by Retronyms. Check 1Password for shared account, or request access from JP.\n openGraphKey = '94b22b01-b622-4e77-9764-4a0d9d6ce7a5';\n} else {\n // ***a88e8 Retronyms development Open Graph Key. Check 1Password for shared account, or request access from JP.\n openGraphKey = '921a3193-8674-4c61-be12-b952f34a88e8';\n\n}\nexport const OPENGRAPH_API_KEY = openGraphKey;\n\n/* This is the project number from Firebase. This is needed to send pushes to android devices. It is NOT needed to send pushes to iOS devices. */\nexport const GCM_SENDER_ID = projectConfig.GCMSenderId;\n\n/*\nNeeded for google signin on android.\nFirst, add the release SHA-1 hash to the android app in Firebase Console ->\n Project Settings, then re-download the googleplay-services.json and put it in android/app\n\nSecond, navigate to Firebase Console -> Develop -> Authentication -> \n Sign-in Method -> Google -> Web SDK Configuration (?) -> Google API Console.\n The (?) is the part you want to click in Web SDK Configuration.\n\n If it isn't already, ensure that the oauth consent screen is filled in correctly.\n\nThird, in the same web-page, grab the `Web client (auto created by Google Service)` client id\n and paste it below in ANDROID_WEBCLIENT_ID\n*/\nconst ANDROID_WEBCLIENT_ID =\n '248550484407-t4k3bquoioko2i16vs431sjvecc0ietn.apps.googleusercontent.com';\n\n/*\n\n*/\nconst WEBCLIENT_ID =\n '774546154193-i9a3e8u29dp72ihbmiam1jfjbgdqim5j.apps.googleusercontent.com';\n/*\n\n*/\nconst IOS_CLIENT_ID =\n '526930970232-7r2ctnfjt31qej2t0qukbfb0k19umk44.apps.googleusercontent.com';\n\nexport const GOOGLE_CLIENT_IDS = {\n android_webclient_id: ANDROID_WEBCLIENT_ID,\n webclient_id: WEBCLIENT_ID,\n ios_client_id: IOS_CLIENT_ID,\n};\n\nexport const GOOGLE_REACT_API_KEY = 'AIzaSyBJIBLRIYN_Pa4IdFZ2aVPeAm9-dm29n0M';\n","import React, {Component} from 'react';\nimport {GOOGLE_MAP_API_KEY} from '../../../shared/constants/APIKeys';\nimport {Map, InfoWindow, Marker, GoogleApiWrapper} from 'google-maps-react';\n\nconst mapStyles = {\n width: '300px',\n maxWidth: '80%',\n height: '150px',\n marginBottom: '30px',\n};\n\nclass GoogleMapView extends Component {\n render() {\n const {lat, lng} = this.props.location;\n return (\n \n \n alert('on close')}>\n
    \n

    {'this.state.selectedPlace.name'}

    \n
    \n
    \n \n );\n }\n}\n\nexport default GoogleApiWrapper({\n apiKey: GOOGLE_MAP_API_KEY,\n})(GoogleMapView);\n","// has the browser reached the bottom of the page (with some buffer room)\nexport function hasReachedBottom(el) {\n return el.getBoundingClientRect().bottom <= window.innerHeight + 10;\n}\n\nexport const getCurrentPath = () => window.location.pathname;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ChevronRightIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nChevronRightIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nChevronRightIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React from 'react';\nimport {defaultUserPhoto} from '../../../shared/utils/Helpers';\nimport ChevronRightIcon from './svgs/ChevronRightIcon';\nimport styles from './AvatarList.module.css';\n\nconst AvatarList = ({avatars, total_count, containerStyle}) => (\n
    \n
    \n {avatars.slice(0, 9).map((item, i) => (\n \n ))}\n {!isNaN(total_count) &&
    {total_count}
    }\n
    \n
    \n \n
    \n
    \n);\n\nexport default AvatarList;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ChevronBackIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nChevronBackIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#fff',\n};\n\nChevronBackIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ShareIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nShareIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#fff',\n};\n\nShareIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React from 'react';\nimport styles from './DetailHeader.module.css';\nimport ChevronBackIcon from './svgs/ChevronBackIcon';\nimport ShareIcon from './svgs/ShareIcon';\nimport {IconButton} from '@material-ui/core';\n\nconst DetailHeader = ({\n imageAlt,\n primaryImg,\n backupImg,\n goBack,\n copyClick,\n copyMessage,\n}) => {\n return (\n
    \n {primaryImg || backupImg ? {imageAlt} : null}\n
    \n
    goBack()}>\n \n \n \n
    \n {navigator.clipboard ? (\n
    \n \n \n \n

    {copyMessage}

    \n
    \n ) : null}\n
    \n
    \n );\n};\n\nexport default DetailHeader;\n","import React from 'react';\nimport styles from './WorkoutCard.module.css';\nimport PostOptionIcon from '../svgs/PostOptionIcon';\nimport ReactDOM from 'react-dom';\n\nclass WorkoutCard extends React.Component {\n componentDidMount() {\n document.addEventListener('click', this.handleClickOutside, true);\n }\n\n componentWillUnmount() {\n document.removeEventListener('click', this.handleClickOutside, true);\n }\n\n handleClickOutside = (event) => {\n const domNode = ReactDOM.findDOMNode(this);\n\n if (!domNode || !domNode.contains(event.target)) {\n this.props.setOptionsOverlayVisible(false);\n }\n };\n\n render() {\n const {\n miles,\n steps,\n hours,\n minutes,\n seconds,\n onDelete,\n onShare,\n optionsOverlayVisible,\n setOptionsOverlayVisible,\n } = this.props;\n\n return (\n
    \n
    \n
    \n

    \n {parseFloat(miles)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}\n

    \n MILES\n
    \n
    \n

    \n {parseInt(steps)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}\n

    \n STEPS\n
    \n
    \n

    \n {`${hours}:${minutes}:${seconds}`}\n

    \n DURATION\n
    \n
    \n
    \n \n \n
    \n {optionsOverlayVisible && (\n
    \n \n \n
    \n )}\n
    \n \n );\n }\n}\n\nexport default WorkoutCard;\n","import React from 'react';\nimport styles from './RankingRow.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {\n formatMetric,\n trimProgress,\n} from '../../../../shared/utils/ChallengeHelpers';\n\nconst isCurrentUser = (userId) => {\n const curUser = userProfile.getUserProfile();\n return curUser.id === userId;\n};\n\n// ignoreEmphasis is user when viewing a challenge detail without a goal. It will always be the current user but should not be magenta\nconst RankingRow = ({place, user, progress, metric, ignoreEmphasis}) => {\n if (!user) user = userProfile.getUserProfile();\n return (\n
    \n
    \n {`${place}. `}\n \n \n
    \n \n {isCurrentUser(user.id)\n ? 'You'\n : `${user.first_name} ${user.last_name}`}\n \n
    \n
    \n {`${trimProgress(progress, metric)} ${formatMetric(metric)}`}\n
    \n \n );\n};\n\nexport default RankingRow;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction DocumentIcon(props) {\n return (\n \n \n \n \n \n \n );\n}\n\nDocumentIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nDocumentIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default DocumentIcon;\n","import React, { Component } from 'react';\nimport ReactPlayer from 'react-player'\nimport ChatBox from '../chat/ChatBox';\nimport styles from './VideoPlayerWithChat.module.css';\nclass VideoPlayerWithChat extends Component {\n constructor(props) {\n super(props);\n }\n render() {\n return (\n
    \n \n
    \n \n
    \n
    \n );\n }\n}\n\n\n\nexport default VideoPlayerWithChat;","import React, { useState, useEffect, useRef } from 'react';\nimport { useParams, Link, useHistory, useLocation } from 'react-router-dom';\nimport moment from 'moment';\nimport { IoIosCalendar as CalendarIcon } from 'react-icons/io';\nimport { TiCancel as CancelIcon } from 'react-icons/ti';\nimport { GoPencil as UpdateIcon } from 'react-icons/go';\nimport CheckIcon from '../svgs/CheckIcon';\nimport PostOptionIcon from '../svgs/PostOptionIcon';\nimport InterestedIcon from '../svgs/InterestedIcon';\nimport Loading from '../Loading';\nimport styles from './EventDetail.module.css';\nimport ChatBox from '../chat/ChatBox';\nimport video_styles from '../chat/ChatBox.module.css';\n\nimport {\n MdLocationOn as LocationIcon,\n MdKeyboardArrowRight as AttendeesCountIcon,\n} from 'react-icons/md';\n\nimport {\n logInterested,\n logGoing,\n logCheckIn,\n logAttendees,\n logCancelEvent,\n logShare,\n logAddress,\n} from '../../../../shared/models/Analytics';\nimport {\n displayFullAddress,\n defaultEventPhoto,\n defaultUserPhoto,\n localizeDate,\n localizeTime,\n} from '../../../../shared/utils/Helpers';\n\nimport CreatePostButton from '../feed/CreatePostButton';\n\nimport { rwbApi } from '../../../../shared/apis/api';\n\nimport { mergeAttendees } from '../../../../shared/utils/Helpers';\n\nimport { userProfile } from '../../../../shared/models/UserProfile';\nimport FeedList from '../feed/FeedList';\nimport { ATTENDANCE_SLUGS } from '../../../../shared/constants/AttendanceSlugs';\nimport CreateEvent from './CreateEvent';\nimport VirtualEventIcon from '../svgs/VirtualEventIcon';\nimport AttendingIcon from '../svgs/AttendingIcon';\nimport GoogleMapView from '../GoogleMapView';\nimport { hasReachedBottom } from '../../BrowserUtil';\nimport { EVENT_ERRORS, REPORT_ERROR, REPORT_SENT } from '../../../../shared/constants/ErrorMessages';\nimport AvatarList from '../AvatarList';\nimport { getDisplayDate, isEventOver, isVirtualEventJoinable } from '../../../../shared/utils/EventHelpers';\nimport DetailHeader from '../DetailHeader';\nimport WorkoutCard from './WorkoutCard';\nimport RankingRow from '../challenges/RankingRow';\nimport ChevronRightIcon from '../svgs/ChevronRightIcon';\nimport CreatePost from '../feed/CreatePost';\nimport { getChallengeStatusText } from '../../../../shared/utils/ChallengeHelpers';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { isDev } from '../../../../shared/utils/IsDev';\nimport { CSVLink } from \"react-csv\";\nimport DocumentIcon from '../svgs/DocumentIcon';\nimport VideoPlayerWithChat from '../video/VideoPlayerWithChat';\n\nconst EventDetail = ({ refreshEvents }) => {\n const { eventId } = useParams();\n const [attendanceStatus, setAttendanceStatus] = useState(null);\n const [totalAttendees, setTotalAttendees] = useState([]);\n const [total_count, setTotalCount] = useState(0);\n const [loading, setLoading] = useState(true);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [retrievedLastPost, setRetrievedLastPost] = useState(false);\n const [copyMessage, setCopyMessage] = useState('');\n const [eventData, setEventData] = useState({\n name: '',\n host: '',\n chapter_hosted: '',\n chapter_name: '',\n location: '',\n start: '',\n end: '',\n category: '',\n links: [],\n status: null,\n challenge_id: 0,\n });\n const [isUpdate, setIsUpdate] = useState(false);\n const [eventFeed, setEventFeed] = useState([]);\n const [userDataAttendance, setUserDataAttendance] = useState(null); // the data from the user returned by getAllAttendees will be kept here, so we don't have to call that function every time the status change\n const [mapShown, setMapShown] = useState(false);\n const [isRemoved, setIsRemoved] = useState(null);\n const [optionsOverlayVisible, setOptionsOverlayVisible] = useState(false);\n const [workoutState, setWorkoutState] = useState({\n workoutRecorded: false,\n miles: 0,\n steps: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n });\n const [requiredUnit, setRequiredUnit] = useState('');\n const [challengeEndDate, setChallengeEndDate] = useState('');\n const [challengeStartDate, setChallengeStartDate] = useState('');\n const [challengeName, setChallengeName] = useState('');\n const [rank, setRank] = useState('');\n const [progress, setProgress] = useState('');\n\n const user = userProfile.getUserProfile();\n const history = useHistory();\n const location = useLocation();\n const [isVirtualEvent, setIsVirtualEvent] = useState(false)\n const [utcStartDateTime, setutcStartDateTime] = useState(\"\")\n const [utcEndDateTime, setutcEndDateTime] = useState(\"\")\n const [isEventTodayOrAfter, setEventTodayOrAfter] = useState(false)\n const [joinLiveVirtualEventLink, setJoinLiveVirtualEventLink] = useState(\"\")\n const [recordedSessionLink, setRecordedSessionLink] = useState(\"\")\n const [chatFileLink, setChatFileLink] = useState(\"\")\n const [recordedFileLink, setRecordedFileLink] = useState(\"\")\n const [virtualEventJoinable, setIsVirtualEventJoinable] = useState(false)\n const [maxAttendees, setMaxAttendees] = useState(0);\n const [isEventFull, setIsEventFull] = useState(false);\n const [csvData, setCSVData] = useState([]);\n const csvBtnRef = useRef();\n const isHostOrCreator = eventData?.host?.id === user.id || eventData?.creator?.id === user.id;\n\n\n useEffect(() => {\n loadEventDetails();\n getAttendanceStatus();\n getFeed(eventId);\n const getAttendees = (attempt) => {\n if (attempt >= 3) {\n alert(\n 'There was a problem with the server. Some event attendees will not be displayed.',\n );\n return;\n }\n\n getAllAttendees();\n };\n\n getAttendees(attempt);\n }, [eventId, isUpdate]);\n\n let attempt = 0;\n\n const loadMorePosts = () => {\n // only try to retrieve more from the feed if it is not already retrieving\n if (!isLoadingMore) {\n const posts = eventFeed;\n const lastPost = posts[posts.length - 1];\n setIsLoadingMore(true);\n if (!retrievedLastPost) {\n if (!eventData.id || !lastPost?.id) return;\n rwbApi.getEventFeed(eventData.id, lastPost.id).then((result) => {\n if (result.data.results.length > 0) {\n setEventFeed([...eventFeed, ...result.data.results]);\n setIsLoadingMore(false);\n } else {\n setIsLoadingMore(false);\n setRetrievedLastPost(true);\n }\n });\n } else setIsLoadingMore(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n }, [loadMorePosts]);\n\n useEffect(() => {\n if (eventData?.challenge_id !== 0 && eventData?.challenge_id !== undefined) {\n loadWorkout(eventId);\n loadChallengeAndRank(eventData?.challenge_id);\n }\n let virtualEventJoinable = false;\n virtualEventJoinable = isVirtualEventJoinable({\n utcStartDateTime: moment.utc(eventData.start),\n utcEndDateTime: moment.utc(eventData.end)\n });\n setIsVirtualEventJoinable(virtualEventJoinable)\n setIsVirtualEvent(eventData.is_virtual)\n setutcStartDateTime(moment.utc(eventData.start))\n setutcEndDateTime(moment.utc(eventData.end))\n setEventTodayOrAfter(moment().isSameOrAfter(moment.utc(eventData.start), 'date'))\n setJoinLiveVirtualEventLink(getJoinLiveVirtualEventLink(eventData.links))\n setRecordedSessionLink(getRecordedSessionLink(eventData.links))\n setChatFileLink(getChatFileLink(eventData.links))\n setRecordedFileLink(getRecordedFileLink(eventData.links))\n\n }, [eventData]);\n const loadAttendees = (eventID) => {\n rwbApi.getAllMobileAttendees(eventID).then((res) => {\n\n let going;\n let checked_in;\n let interested;\n const numberOfUsers =\n res.going.count +\n res.checked_in.count +\n res.interested.count;\n if (res.going) going = res.going.attendees;\n if (res.checked_in) checked_in = res.checked_in.attendees;\n if (res.interested) interested = res.interested.attendees;\n\n\n setIsEventFull((eventData.max_attendees != null && (going?.length + checked_in?.length) >= eventData.max_attendees))\n\n }).catch((error) => {\n errorAlert(EVENT_ERRORS.ATTENDESS);\n });\n }\n useEffect(() => {\n if (location.state?.refreshEvents === true) {\n refreshEvents();\n }\n }, []);\n\n const getFirstZoomLink = (links) => {\n for (let i = 0; i < links.length; i++) {\n if (links[i].url.toLowerCase().includes('zoom.us')) {\n return links[i].url;\n }\n }\n return null;\n }\n\n const getJoinLiveVirtualEventLink = (links) => {\n // \"Join Live Event\" is hardcoded string in the FitPros airtable, Social Stack Backend, and here. See c12869bf3566 / D7737.\n // Current whitelabeling strategy: First, look for `Join Live Event`. If not found, look for the first zoom link.\n // The assumption here is that it's always ok to launch the 'Join Live Event' or First zoom link when the event is live.\n // This results in some hidden features from a event-creator perspective. Improvements discussed in T5793.\n for (let i = 0; i < links.length; i++) {\n if (links[i].text.includes('Join Live Event')) {\n return links[i].url;\n }\n }\n return getFirstZoomLink(links);\n }\n\n const getRecordedSessionLink = (links) => {\n let watchRecordedLinktext = e => e.text === \"Start Recorded Session\";\n let watchRecordedLinkElement = links.find(watchRecordedLinktext)\n return watchRecordedLinkElement?.url || null;\n }\n \n const getRecordedFileLink = (links) => {\n for (let i = 0; i < links.length; i++) {\n if (links[i].text.includes('Video File'))\n return links[i].url;\n }\n return false;\n }\n\n const getChatFileLink = (links) => {\n for (let i = 0; i < links.length; i++) {\n if (links[i].text.includes('Chat File'))\n return links[i].url;\n }\n return false;\n }\n\n const loadWorkout = (id) => {\n rwbApi\n .getWorkout(id)\n .then((result) => {\n if (result.data?.event_id != 0) {\n const hours = Math.floor(result.data.minutes / 60);\n const minutes = Math.floor(result.data.minutes % 60);\n const seconds = Math.round((result.data.minutes % 1) * 60);\n setWorkoutState({\n workoutRecorded: true,\n miles: result.data.miles,\n steps: result.data.steps,\n hours,\n minutes,\n seconds,\n });\n }\n })\n .catch((err) => {\n errorAlert(EVENT_ERRORS.LOADING_WORKOUT);\n });\n };\n\n const loadChallengeAndRank = (id) => {\n const loadChallenge = rwbApi.getChallenge(id);\n const loadRank = rwbApi.getLeaderboardRank(id);\n Promise.all([loadChallenge, loadRank])\n .then(([challenge, rank]) => {\n setRequiredUnit(challenge.required_unit);\n setChallengeEndDate(challenge.end_date);\n setChallengeStartDate(challenge.start_date);\n setChallengeName(challenge.name);\n setRank(rank.rank);\n setProgress(rank.score);\n setLoading(false);\n })\n .catch((err) => {\n console.warn(err);\n });\n };\n\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n loadMorePosts();\n }\n };\n\n const getAllAttendees = () =>\n rwbApi\n .getAllMobileAttendees(eventId)\n .then((data) => {\n if (data) {\n const { mergedAttendees, totalCount } = mergeAttendees(data);\n if (!userDataAttendance) {\n const userData = mergedAttendees.find((el) => el.id === user.id);\n if (userData) setUserDataAttendance(userData);\n }\n setTotalAttendees(mergedAttendees);\n setTotalCount(totalCount);\n // setLoading(false);\n }\n })\n .catch((error) => {\n if (attempt < 3) {\n console.warn('error', error);\n }\n setLoading(false);\n });\n\n const getAttendanceStatus = () => {\n rwbApi.getMobileAttendanceStatus(eventId).then((status) => {\n if (!status) return;\n setAttendanceStatus(status.status);\n });\n };\n\n const loadEventDetails = () => {\n rwbApi.getMobileEvent(eventId).then((response) => {\n setEventData(response);\n setIsRemoved(response.is_removed);\n loadAttendees(eventId)\n if (response.is_removed) {\n errorAlert(EVENT_ERRORS.CANCELED_AND_REMOVED);\n history.push('/events');\n refreshEvents();\n }\n if (!response.challenge_id || response.challenge_id === '')\n setLoading(false);\n });\n };\n\n const getFeed = (eventID) => {\n // prepending the most recent result mixes up reactions\n // to avoid that, clear out everything and reload everything\n const currentFeed = eventFeed;\n setEventFeed([]);\n return rwbApi\n .getEventFeed(eventID)\n .then((result) => {\n setEventFeed(result.data.results);\n })\n .catch((error) => {\n console.warn('error getting feed: ', error);\n setEventFeed(currentFeed);\n alert('There was an error retrieving the event feed.');\n });\n };\n\n const mergeNewPost = (newPost) => {\n // Not returning user data and breaks the app\n // setEventFeed((oldPosts) => [...oldPosts, newPost]);\n getFeed(eventId);\n };\n\n const deleteAttendanceStatus = async () => {\n const prevAttendance = attendanceStatus;\n setAttendanceStatus('none');\n\n if (userDataAttendance) {\n const filteredAttendees = totalAttendees.filter(\n (attendee) => attendee.id !== userDataAttendance.id,\n );\n setTotalAttendees(filteredAttendees);\n }\n\n const result = await rwbApi.updateMobileAttendanceStatus(eventId, 'none');\n if (!result) setAttendanceStatus(prevAttendance);\n if (result) setTotalCount(total_count - 1);\n if (!userDataAttendance) {\n getAllAttendees();\n }\n };\n\n const updateAttendanceStatus = async (id, status) => {\n setAttendanceStatus(status);\n if (status === ATTENDANCE_SLUGS.interested) logInterested();\n if (status === ATTENDANCE_SLUGS.going) logGoing();\n if (status === ATTENDANCE_SLUGS.checkedin) logCheckIn();\n\n // The code for instant adding user to attendees list, before an API call because the old way was slow\n if (userDataAttendance) {\n if (attendanceStatus !== status) {\n const filteredAttendees = totalAttendees.filter(\n (attendee) => attendee.id !== userDataAttendance.id,\n );\n setTotalAttendees([...filteredAttendees, userDataAttendance]);\n } else {\n setTotalAttendees([...totalAttendees, userDataAttendance]);\n }\n if (attendanceStatus === 'none') setTotalCount(total_count + 1);\n }\n const result = await rwbApi.updateMobileAttendanceStatus(id, status);\n if (!result) setAttendanceStatus('none');\n\n if (!userDataAttendance) getAllAttendees();\n };\n\n const setInitialAttendanceStatus = async (status) => {\n setAttendanceStatus(status);\n const result = await rwbApi.setInitialMobileAttendanceStatus(\n eventId,\n status,\n );\n if (!result) return setAttendanceStatus('none');\n getAllAttendees();\n };\n\n const eventStatusHandler = (e, status) => {\n if (!attendanceStatus || attendanceStatus==='none') return setInitialAttendanceStatus(status);\n if (status === ATTENDANCE_SLUGS.going) {\n if (attendanceStatus === ATTENDANCE_SLUGS.going)\n return deleteAttendanceStatus();\n updateAttendanceStatus(eventId, status);\n } else if (status === ATTENDANCE_SLUGS.interested) {\n if (attendanceStatus === ATTENDANCE_SLUGS.interested) {\n return deleteAttendanceStatus();\n }\n updateAttendanceStatus(eventId, status);\n } else if (e!=null && e.target.id === 'checkInButton') {\n if (attendanceStatus === ATTENDANCE_SLUGS.checkedin)\n return deleteAttendanceStatus();\n updateAttendanceStatus(eventId, status);\n }\n // getAllAttendees();\n };\n\n const copyEventURL = () => {\n logShare();\n const urlBase = isDev() ? projectConfig.stagingURL : projectConfig.prodURL;\n navigator.clipboard.writeText(\n `${urlBase}events/${eventId}`,\n );\n setCopyMessage('Copied!');\n setTimeout(() => {\n setCopyMessage('');\n }, 3000);\n };\n\n const getAddress = () =>\n displayFullAddress(\n eventData.location.address,\n eventData.location.city,\n eventData.location.state,\n eventData.location.zip,\n eventData.location.country,\n );\n\n const cancelEventHandler = () => {\n if (window.confirm('Are you sure you want to cancel this event?')) {\n const payload = {\n status: 'Canceled',\n };\n setLoading(true);\n rwbApi\n .patchEvent(eventId, JSON.stringify(payload))\n .then(() => {\n logCancelEvent();\n // updating a field in the object does not force a rerender, so save nothing and then the updated object\n let updatedEventData = eventData;\n updatedEventData.status = 'Canceled';\n setEventData(updatedEventData);\n setLoading(false);\n })\n .catch((error) => {\n setLoading(false);\n console.warn('Error canceling the event: ', error);\n });\n }\n };\n\n const removeEventHandler = () => {\n if (\n window.confirm(\n 'Are you sure you want to remove event from the event list?',\n )\n ) {\n rwbApi\n .removeEvent(eventId)\n .then(() => {\n history.push('/events');\n refreshEvents();\n })\n .catch((error) => {\n console.warn('Error removing the event: ', error);\n });\n }\n };\n\n const isEventTodayOrBefore = () => {\n const today = moment();\n const eventDate = localizeDate(\n eventData.start,\n eventData.time_zone_id,\n eventData.start,\n );\n const localOffset = today.utcOffset();\n let compareDate;\n // Even after localizing the start time, the moment object has it saved as a UTC time\n // this means that when we do a comparison with it, additional time will be added/subtracted.\n // That could modify the date which affects checking in and allow early check in.\n // To compensate for how moment works, we add (subtract the negative) minute offset for local time\n if (eventData.is_all_day && localOffset < 0)\n compareDate = moment(eventDate).subtract(localOffset, 'minutes');\n else compareDate = eventDate;\n // enable check in for all events is the user's local device has the same date or is later than the localized start time\n return today.isSameOrAfter(compareDate, 'date');\n };\n\n const updateEventHandler = () => setIsUpdate(true);\n\n const addressClickHandler = () => {\n logAddress();\n setMapShown((prevState) => !prevState);\n };\n\n const reportEvent = () => {\n if (window.confirm(`${projectConfig.alertTitle}: Would you like to report this event?`)) {\n const reporterUserID = JSON.stringify({ reporter: user.id });\n rwbApi\n .reportEvent(eventId, reporterUserID)\n .then(() => {\n errorAlert(REPORT_SENT);\n })\n .catch((err) => {\n errorAlert(REPORT_ERROR);\n console.warn(err);\n });\n }\n };\n\n const [createPostModal, setCreatePostModal] = useState(false);\n\n const openCloseModalHandler = () =>\n setCreatePostModal((prevState) => !prevState);\n\n const onWorkoutDelete = () => {\n if (window.confirm('Are you sure you want to delete this workout?')) {\n setLoading(true);\n rwbApi\n .deleteWorkout(eventId)\n .then(() => {\n rwbApi.getLeaderboardRank(eventData.challenge_id).then((rank) => {\n setRank(rank.rank);\n setProgress(rank.score);\n });\n setWorkoutState({\n workoutRecorded: false,\n });\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n });\n } else {\n setOptionsOverlayVisible();\n }\n };\n\n const handleGoBack = () => {\n return location.state?.from === 'record-workout'\n ? history.push(location.state.eventFrom)\n : history.goBack();\n };\n const renderEventLinks = (eventLinks) => {\n // text={links[i].text}\n // url={links[i].url}\n // key={i.toString()}\n let linkObjs = [];\n for (let i = 0; i < eventLinks.length; i++) {\n linkObjs.push(\n {eventLinks[i].text}\n );\n }\n return linkObjs\n }\n\n\n const downloadCSV = () => {\n rwbApi\n .getAllMobileAttendeesCsv(eventId)\n .then((result) => {\n const lines = result.split('\\n');\n // Split each line into fields and create array of arrays\n const data = lines.map(line => line.split(','));\n setCSVData(data);\n setTimeout(() => {\n csvBtnRef.current.link.click()\n }, 200);\n\n })\n .catch((error) => {\n console.warn('error getting csv: ', error);\n errorAlert(\"CANNOT_GET_ATTENDEES_CSV\");\n this.setState({\n attendanceStatusLoading: false,\n });\n });\n }\n\n return (\n\n <>\n {loading ? (\n \n ) : (\n <>\n \n
    \n
    \n
    \n

    {eventData.name}

    \n
    {eventData.chapter?.name}
    \n
    \n {/* {eventData.host.id !== userProfile.id ? (\n reportEvent()}\n >\n \n
    \n ) : null} */}\n
    \n
    \n \n
    \n

    \n {getDisplayDate(moment.utc(eventData.start))}\n {moment().utc().isAfter(moment.utc(eventData.end)) && \n {projectConfig.sessionEndedMessage.toUpperCase()}\n }\n

    \n

    \n {!eventData.is_all_day\n ? `${moment(moment.utc(eventData.start)).local().format(\n 'h:mm A',\n )} – ${moment(moment.utc(eventData.end)).local().format('h:mm A')}`\n : 'All Day Event'}\n

    \n
    \n
    \n history.push(`/profile/${eventData.host.id}`)}>\n history.push(`/profile/${eventData.host.id}`)}\n />\n
    \n
    \n {eventData.host.leader\n ? projectConfig.leaderRoleDisplay\n : ''}\n
    \n
    \n {`${eventData.host.first_name} ${eventData.host.last_name}`}\n {/* wait for server to inform if the event is a sponsor type and hosted by a sponsor admin */}\n {/* */}\n
    \n
    \n \n
    \n {eventData.location.address ? (\n <>\n \n \n {getAddress()}\n

    \n \n ) : (\n <>\n \n

    \n Virtual{' '}\n {eventData.virtual_event_category?.slice(0, -1) || 'Event'}\n {/* virtual_event_category is in the plural, slice is used to cut the last letter */}\n

    \n \n )}\n
    \n {mapShown && (\n
    \n \n
    \n )}\n {eventData?.challenge_id && eventData?.challenge_id !== '0' ? (\n \n
    \n
    \n \n

    {challengeName}

    \n
    \n {getChallengeStatusText(\n challengeStartDate,\n challengeEndDate,\n )}\n
    \n
    \n \n
    \n {rank && rank !== '' && (\n \n )}\n \n \n ) : null}\n\n {eventData.status === 'Canceled' ? (\n
    \n
    \n

    This Event Has Been Canceled

    \n
    \n {!isRemoved && isHostOrCreator ? (\n \n

    Remove Event from Event List

    \n
    \n ) : null}\n \n ) : isHostOrCreator ? (\n // prevent modifying event after it is over\n moment(utcEndDateTime).isBefore(moment()) ? null : (\n
    \n \n \n

    Cancel

    \n
    \n \n \n

    Update

    \n \n {projectConfig.eventAttendeeListDownload &&\n <>\n
    \n \n

    Get Attendee List

    \n
    \n \n \n \n }\n \n )\n ) :\n\n isVirtualEvent && joinLiveVirtualEventLink && virtualEventJoinable ?\n
    \n {\n eventStatusHandler(e, ATTENDANCE_SLUGS.checkedin)\n window.open(joinLiveVirtualEventLink, '_blank', 'noopener')\n }\n\n }>\n \n

    \n {isEventFull ? \"Event Full\" : attendanceStatus === ATTENDANCE_SLUGS.checkedin ? 'Join the Live Stream' : \"Join the Live Stream & Check In\"}\n

    \n
    \n \n\n :\n isVirtualEvent && recordedFileLink && moment().utc().isAfter(utcEndDateTime) ? (\n
    \n
    \n {attendanceStatus !== ATTENDANCE_SLUGS.checkedin ? (\n
    Watch recorded session & check in
    \n ) :
    You've checked in
    }\n
    \n {\n if (attendanceStatus !== ATTENDANCE_SLUGS.checkedin) {\n eventStatusHandler(null, ATTENDANCE_SLUGS.checkedin);\n }\n }}/>\n
    \n \n ) : \n (\n
    \n {!isVirtualEvent && isEventTodayOrAfter ? (\n
    \n \n eventStatusHandler(e, ATTENDANCE_SLUGS.checkedin)\n }>\n \n

    \n {isEventFull ? \"Event Full\" : attendanceStatus === ATTENDANCE_SLUGS.checkedin ? 'Checked In' : \"Check In\"}\n

    \n
    \n
    \n ) :\n isVirtualEvent && moment(utcStartDateTime).isBefore(moment()) ? (\n
    \n \n eventStatusHandler(e, ATTENDANCE_SLUGS.checkedin)\n }>\n \n

    \n {isEventFull ? \"Event Full\" : attendanceStatus === ATTENDANCE_SLUGS.checkedin ? 'Checked In' : \"Check In\"}\n

    \n
    \n \n )\n\n :\n\n (\n
    \n \n eventStatusHandler(e, ATTENDANCE_SLUGS.going)\n }>\n {attendanceStatus === ATTENDANCE_SLUGS.going ? (\n \n ) : (\n \n )}\n\n

    {projectConfig.eventRsvpLabel}

    \n
    \n \n eventStatusHandler(e, ATTENDANCE_SLUGS.interested)\n }>\n {attendanceStatus === ATTENDANCE_SLUGS.interested ? (\n \n ) : (\n \n )}\n

    Interested

    \n \n \n )}\n \n )}\n\n \n \n \n
    {eventData.description}
    \n
    \n

    Event Links:

    \n {eventData.links !== null &&\n eventData.links.length > 0 &&\n eventData.links.map((links, i) => (\n
    \n \n {links.text}\n \n
    \n ))}\n
    \n \n {eventFeed.length > 0 && (\n <>\n mergeNewPost(newPost)}\n />\n \n )}\n {!user.anonymous_profile && (\n mergeNewPost(newPost)}\n />\n )}\n {isUpdate && (\n setIsUpdate(false)}\n refreshEvents={refreshEvents}\n groupId={eventData?.chapter_id || eventData?.chapter?.id}\n isVirtual={eventData.is_virtual}\n />\n )}\n \n )}\n\n {createPostModal && (\n \n )}\n \n );\n};\n\nexport default EventDetail;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class CanceledEventIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nCanceledEventIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nCanceledEventIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React from 'react';\nimport DefaultProfileImg from '../../../shared/project-info/images/DefaultProfileImg.png';\nimport styles from './AttendeesAndFollowedUsers.module.css';\n\nconst displayAttendees = (attendee, i) => {\n const {profile_photo_url} = attendee;\n // First image has different styles than the others\n return (\n \n );\n};\n\nconst displayFollowingNames = (attendees) => {\n if (attendees.length === 1)\n return (\n

    \n {`${attendees[0].first_name} ${attendees[0].last_name}`}{' '}\n is going\n

    \n );\n else if (attendees.length === 2)\n return (\n

    \n \n {`${attendees[0].first_name} ${attendees[0].last_name} and ${attendees[1].first_name} ${attendees[1].last_name}`}{' '}\n \n are going\n

    \n );\n else if (attendees.length > 2)\n return (\n

    \n \n {`${attendees[0].first_name} ${attendees[0].last_name}, ${attendees[1].first_name} ${attendees[1].last_name}`}{' '}\n \n and\n \n {attendees.length - 2} {attendees.length === 3 ? 'other' : 'others'}\n \n {attendees.length === 3 ? 'is' : 'are'} going\n

    \n );\n};\n\nconst AttendeesAndFollowedUsers = ({\n attendees,\n followingAttendees,\n attendeesCount,\n}) => {\n return (\n <>\n
    \n {attendees &&\n attendees\n .slice(0, 9)\n .map((attendee, i) => displayAttendees(attendee, i))}\n

    {attendeesCount || ''}

    {' '}\n {/* TODO figure out how attendees count is different from attendees.length */}\n
    \n
    \n {followingAttendees && displayFollowingNames(followingAttendees)}\n
    \n \n );\n};\n\nexport default AttendeesAndFollowedUsers;\n","import React, {Component} from 'react';\nimport styles from './EventListItem.module.css';\nimport CanceledEventIcon from '../svgs/CanceledEventIcon';\nimport {\n displayFullAddress,\n localizeTime,\n} from '../../../../shared/utils/Helpers';\nimport AttendeesAndFollowedUsers from '../AttendeesAndFollowedUsers';\nimport moment from 'moment'\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nexport default class EventListItem extends Component {\n constructor(props) {\n super(props);\n this.state = {\n eventAttendees: [],\n totalAttendees: 0,\n };\n }\n\n componentDidMount() {\n if (\n this.props.type === 'MyActivities' ||\n this.props.type === 'AllActivities'\n ) {\n this.props.loadAttendees(this.props.event.id).then((res) => {\n let data = [];\n res.going.attendees.map((attendee, i) => data.push(attendee));\n res.interested.attendees.map((attendee, i) => data.push(attendee));\n res.checked_in.attendees.map((attendee, i) => data.push(attendee));\n const totalAttendees = res.checked_in.count + res.interested.count + res.going.count;\n this.setState({eventAttendees: data, totalAttendees});\n });\n }\n }\n\n render() {\n const {\n start,\n end,\n name,\n chapter_name,\n location,\n followingAttendees,\n attendees_count,\n status,\n time_zone_id,\n is_virtual,\n } = this.props.event;\n const {eventAttendees} = this.state;\n const utcStartDateTime = moment.utc(start);\n const utcEndDateTime = moment.utc(end);\n const today = moment();\n const h1Class = projectConfig.useEmphasisFonts ? 'emphasis' : 'normal';\n return (\n
    \n
    \n

    \n { moment(utcStartDateTime).local().isSame(today, 'day') ? 'Today': moment(utcStartDateTime).local().format('ddd')}\n

    \n

    \n {moment(utcStartDateTime).local().format('DD')}\n

    \n

    \n {moment(utcStartDateTime).local().format('MMM')}\n

    \n
    \n
    \n
    \n

    {name}

    \n
    {chapter_name || ''}
    \n
    \n {status === 'Canceled' && (\n
    \n

    Canceled

    \n \n
    \n )}\n

    \n {!this.props.event.is_all_day\n ? `${moment(utcStartDateTime).local().format('h:mm A')}–${moment(utcEndDateTime).local().format('h:mm A')}`\n : 'All Day Event'}\n

    \n {location.address && (\n

    \n {displayFullAddress(\n location.address,\n location.city,\n location.state,\n location.zip,\n location.country,\n )}\n

    \n )}\n \n
    \n
    \n );\n }\n}\n","import React from 'react';\nimport styles from './Attendee.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport AppMark from '../../../../shared/project-info/web-project-info/svgs/AppMark';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\n\nconst EventHost = ({item, onSelect}) => {\n const {profile_photo_url, first_name, last_name, leader, title} = item;\n return (\n
    \n
    \n {'User\n
    \n
    \n
    \n

    {`${first_name} ${last_name}`}

    \n {/* {is_eagle_leader && } */}\n
    \n {leader ? (\n <>\n
    {projectConfig.leaderRoleDisplay}
    \n
    {title}
    \n \n ) : null}\n
    \n
    \n );\n};\n\nexport default EventHost;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class TicketIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nTicketIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nTicketIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import {IconButton} from '@material-ui/core';\nimport React from 'react';\nimport ChevronBackIcon from './svgs/ChevronBackIcon';\nimport styles from './Header.module.css';\n\nconst Header = ({\n title,\n subtitle,\n onBack,\n noBottomPadding,\n lessHeight,\n leftAlign,\n}) => {\n return (\n \n {onBack && (\n \n \n \n )}\n \n

    {title}

    \n {subtitle &&

    {subtitle}

    }\n \n \n );\n};\n\nexport default Header;\n","import React, {useState, useEffect} from 'react';\nimport {Paper, Toolbar, IconButton, Tabs, Tab, Grid} from '@material-ui/core';\nimport {withStyles} from '@material-ui/core/styles';\nimport Attendee from './Attendee';\nimport EventHost from './EventHost';\nimport {useParams, useHistory, useLocation} from 'react-router-dom';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport Loading from '../Loading';\nimport moment from 'moment';\nimport CheckIcon from '../svgs/CheckIcon';\nimport InterestedIcon from '../svgs/InterestedIcon';\nimport TicketIcon from '../svgs/TicketIcon';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {ATTENDANCE_SLUGS} from '../../../../shared/constants/AttendanceSlugs';\nimport {ClipLoader} from 'react-spinners';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport {httpsNext, localizeDate} from '../../../../shared/utils/Helpers';\nimport Header from '../Header';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { generateInitialNextURL } from '../../../../shared/utils/EventHelpers';\n\nconst styles = {\n root: {\n flexGrow: 1,\n maxWidth: '100%',\n height: '100%',\n borderRadius: 0,\n },\n toolbar: {\n backgroundColor: 'var(--primary)',\n paddingLeft: 40,\n paddingRight: 40,\n },\n menuButton: {\n marginRight: '15px',\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n },\n iconLabelWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n color: 'var(--grey)',\n fontFamily: 'OpenSans-Bold',\n fontSize: 12,\n },\n iconLabelWrapperSelected: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n color: 'var(--primary)',\n fontFamily: 'OpenSans-Bold',\n fontSize: 12,\n },\n indicator: {\n backgroundColor: 'var(--primary)',\n },\n};\n\nconst EventDetailAttendees = ({classes}) => {\n const isEventTodayOrAfter = () => {\n const today = moment();\n const eventDate = localizeDate(\n location.state.timeZone,\n location.state.date,\n );\n return today.isSameOrAfter(eventDate, 'day');\n };\n\n const location = useLocation();\n const eventHost = location.state.host;\n const {eventId} = useParams();\n const [selectedValue, setselectedValue] = useState(\n isEventTodayOrAfter() ? 0 : 1,\n );\n const [goingAttendees, setGoingAttendees] = useState([]);\n const [interestedAttendees, setInterestedAttendees] = useState([]);\n const [checkedInAttendees, setCheckedInAttendees] = useState([]);\n const [filteredAttendees, setfilteredAttendees] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const [checkedInURL, setCheckedInURL] = useState( null);\n const [goingURL, setGoingURL] = useState(null);\n const [interestedURL, setInterestedURL] = useState(null);\n\n const history = useHistory();\n useEffect(() => {\n setIsLoading(true);\n rwbApi.getAllMobileAttendees(eventId).then((data) => {\n if (data) {\n const {going, checked_in, interested} = data;\n setGoingAttendees(going.attendees);\n setInterestedAttendees(interested.attendees);\n setCheckedInAttendees(checked_in.attendees);\n if (going.attendees.length >= 10) setGoingURL(generateInitialNextURL(eventId, ATTENDANCE_SLUGS.going));\n if (interested.attendees.length >= 10) setGoingURL(generateInitialNextURL(eventId, ATTENDANCE_SLUGS.interested));\n if (checked_in.attendees.length >= 10) setGoingURL(generateInitialNextURL(eventId, ATTENDANCE_SLUGS.checkedin));\n setIsLoading(false);\n }\n });\n }, []);\n\n useEffect(() => {\n filterAttendees(selectedValue);\n }, [isLoading]);\n\n const filterAttendees = (index) => {\n setselectedValue(index);\n switch (index) {\n case 0:\n setfilteredAttendees(checkedInAttendees);\n break;\n case 1:\n setfilteredAttendees(goingAttendees);\n break;\n case 2:\n setfilteredAttendees(interestedAttendees);\n break;\n default:\n break;\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n }, [filteredAttendees, selectedValue, isLoadingMore]);\n\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement) && !isLoadingMore) {\n switch (selectedValue) {\n case 0:\n if (checkedInURL) loadMore(ATTENDANCE_SLUGS.checkedin);\n break;\n case 1:\n if (goingURL) loadMore(ATTENDANCE_SLUGS.going);\n break;\n case 2:\n if (interestedURL) loadMore(ATTENDANCE_SLUGS.interested);\n break;\n default:\n break;\n }\n }\n };\n\n const loadMore = (status) => {\n let nextURL;\n let list;\n if (status === ATTENDANCE_SLUGS.interested) {\n nextURL = interestedURL;\n list = interestedAttendees;\n } else if (status === ATTENDANCE_SLUGS.going) {\n nextURL = goingURL;\n list = goingAttendees;\n } else if (status === ATTENDANCE_SLUGS.checkedin) {\n nextURL = checkedInURL;\n list = checkedInAttendees;\n } else {\n throw new Error('No status to query attendees for.');\n }\n setIsLoadingMore(true);\n rwbApi.loadNextURL(nextURL).then((response) => {\n const next = httpsNext(response.next);\n const attendees = response.data;\n if (status === ATTENDANCE_SLUGS.interested) {\n setInterestedAttendees([...list, ...attendees])\n setInterestedURL(next);\n }\n else if (status === ATTENDANCE_SLUGS.going){\n setGoingAttendees([...list, ...attendees]);\n setGoingURL(next);\n }\n else if (status === ATTENDANCE_SLUGS.checkedin) {\n setCheckedInAttendees(...list, ...attendees);\n setCheckedInURL(next);\n }\n setfilteredAttendees([...list, ...attendees]);\n }).catch((err) => {\n errorAlert('Error loading more event attendees');\n }).finally(() => {\n setIsLoadingMore(false);\n })\n };\n\n return (\n
    \n {isLoading ? (\n \n ) : (\n <>\n \n history.goBack()}\n lessHeight\n />\n filterAttendees(i)}\n variant=\"fullWidth\"\n classes={{\n indicator: classes.indicator,\n }}>\n {isEventTodayOrAfter() && (\n \n }\n classes={{\n wrapper:\n selectedValue === 0\n ? classes.iconLabelWrapperSelected\n : classes.iconLabelWrapper,\n }}\n />\n )}\n \n }\n classes={{\n wrapper:\n selectedValue === 1\n ? classes.iconLabelWrapperSelected\n : classes.iconLabelWrapper,\n }}\n />\n \n }\n classes={{\n wrapper:\n selectedValue === 2\n ? classes.iconLabelWrapperSelected\n : classes.iconLabelWrapper,\n }}\n />\n \n \n userProfile.eagle_leader || !eventHost.anonymous_profile\n ? history.push(`/profile/${eventHost.id}`)\n : null\n }\n />\n {filteredAttendees.map((item, i) =>\n item.id !== eventHost.id ? (\n \n userProfile.eagle_leader || !item.anonymous_profile\n ? history.push(`/profile/${item.id}`)\n : null\n } //only visit the profile if the user is an eagle leader (bypassing anonymous users) or the profile is public\n />\n ) : null,\n )}\n\n {isLoadingMore && (\n \n \n \n )}\n \n \n )}\n
    \n );\n};\n\nexport default withStyles(styles)(EventDetailAttendees);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {Link} from 'react-router-dom';\nimport styles from './CustomButton.module.css';\n\nexport default class CustomButton extends Component {\n render() {\n let buttonStyling;\n if (this.props.buttonStyle === 'primary') {\n buttonStyling = styles.primary;\n } else if (this.props.buttonStyle === 'primaryDisabled') {\n buttonStyling = styles.primaryDisabled;\n } else if (this.props.buttonStyle === 'secondary') {\n buttonStyling = styles.secondary;\n } else if (this.props.buttonStyle === 'tertiary') {\n buttonStyling = styles.tertiary;\n } else {\n buttonStyling = styles.default;\n }\n\n return (\n
    \n {this.props.link ? (\n \n \n \n ) : (\n \n {this.props.label}\n \n )}\n
    \n );\n }\n}\n\nCustomButton.defaultProps = {\n link: false,\n};\n\nCustomButton.propTypes = {\n label: PropTypes.string.isRequired,\n buttonStyle: PropTypes.string,\n onClick: PropTypes.func,\n link: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {useState} from 'react';\nimport CreateEvent from './CreateEvent';\nimport styles from './EventCreationChoices.module.css';\nimport CustomButton from '../CustomButton';\nimport {\n logChooseChapterEvent,\n logChooseMemberEvent,\n} from '../../../../shared/models/Analytics';\n\nconst EventCreationChoices = ({\n setCreateEventChoices,\n closeModalHandlers,\n createEventModal,\n setCreateEventModal,\n}) => {\n const [isChapterEvent, setIsChapterEvent] = useState(false);\n\n const openCreateEventHandler = (type) => {\n if (type === 'chapter') {\n logChooseChapterEvent();\n setIsChapterEvent(true);\n setCreateEventModal((prevState) => !prevState);\n return;\n } else {\n logChooseMemberEvent();\n setCreateEventModal((prevState) => !prevState);\n }\n };\n\n return (\n <>\n
    \n
    \n openCreateEventHandler('chapter')}\n label={'Chapter Event'}\n buttonStyle={'secondary'}\n />\n openCreateEventHandler('member')}\n label={'Member Event'}\n buttonStyle={'secondary'}\n />\n closeModalHandlers()}\n label={'Cancel'}\n buttonStyle={'secondary'}\n />\n
    \n
    \n {createEventModal && (\n \n )}\n \n );\n};\n\nexport default EventCreationChoices;\n","import React, {useState} from 'react';\nimport CreateEvent from './CreateEvent';\nimport styles from './CreateEventButton.module.css';\nimport {MdAdd as AddIcon} from 'react-icons/md';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport EventCreationChoices from './EventCreationChoices';\nimport {logStartEventCreation} from '../../../../shared/models/Analytics';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { useHistory } from 'react-router-dom';\nconst CreateEventButton = ({\n groupId,\n groupName,\n selectedTab,\n refreshEvents,\n isAdmin,\n groupType,\n isVirtual,\n}) => {\n const [createEventModal, setCreateEventModal] = useState(false);\n const [createEventChoices, setCreateEventChoices] = useState(false);\n\n const user = userProfile.getUserProfile();\n const history = useHistory();\n const openModalHandler = () => {\n // if (user.salesforce_contact_id) {\n // logStartEventCreation();\n if(projectConfig.hasPayment && user?.eagle_leader === false) {\n history.push({\n pathname: '/membershipoptionview',\n })}\n else{\n setCreateEventModal((prevState) => !prevState);\n }\n // } else {\n // alert(\n // 'Unable to create an event until your account has fully synced. Try again in 15 minutes.',\n // );\n // }\n };\n\n const closeModalHandlers = () => {\n setCreateEventChoices(false);\n setCreateEventModal(false);\n };\n\n return (\n <>\n
    \n \n
    \n {createEventModal && (\n {}}\n groupId={groupId}\n groupName={groupName}\n selectedTab={selectedTab}\n refreshEvents={refreshEvents}\n isAdmin={isAdmin}\n groupType={groupType}\n isVirtual={isVirtual}\n />\n )}\n {createEventChoices && (\n \n )}\n \n );\n};\n\nexport default CreateEventButton;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class SearchIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nSearchIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nSearchIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './SearchBar.module.css';\nimport SearchIcon from './svgs/SearchIcon';\nimport LocationIcon from './svgs/LocationIcon';\nimport ClearSearchIcon from './svgs/ClearSearchIcon';\nimport {isNullOrEmpty} from '../../../shared/utils/Helpers';\nimport {withRouter} from 'react-router-dom';\n\nclass SearchBar extends Component {\n render() {\n const {\n style,\n value,\n placeholder,\n onChange,\n onSubmit,\n onClearSearch,\n noRightRadius,\n onFocus,\n searching,\n } = this.props;\n\n return (\n
    \n {this.props.searchType === 'location' ? (\n \n ) : (\n
    \n \n
    \n )}\n onChange(event.target.value)}\n placeholder={placeholder}\n onKeyPress={(e) => e.key === 'Enter' && onSubmit()}\n onFocus={onFocus}\n />\n \n \n
    \n {/* {\n history.push('/notifications');\n logAccessNotifications();\n }}>\n \n */}\n \n );\n }\n}\n\nexport default withRouter(SearchBar);\n\nSearchBar.defaultProps = {\n placeholder: 'Search',\n};\n\nSearchBar.propTypes = {\n style: PropTypes.object,\n searchType: PropTypes.string,\n placeholder: PropTypes.string,\n noRightRadius: PropTypes.bool,\n};\n","import React from 'react';\nimport styles from './CustomPicker.module.css';\n\nconst CustomPicker = ({\n title,\n isOpen,\n items,\n selectedValue,\n pickerHanlder,\n onSelect,\n}) => (\n <>\n
    \n

    {title}

    \n

    {items[selectedValue]?.display}

    \n
    \n
    \n {isOpen &&\n Object.keys(items).map((item, i) => (\n onSelect(items[item].slug)}>\n {items[item]?.display}\n \n ))}\n
    \n \n);\n\nexport default CustomPicker;\n","const DEFAULT_LOCAL_OPTIONS = {\n eventDistance: '50-miles',\n eventDate: 'all',\n eventHost: 'all',\n eventGroupOption: 'my-groups',\n sortBy: 'date',\n eventCategory: 'all-activities', // activityCategory is received in displayable format\n eventFilterNavTab: 'all',\n};\n\nconst DEFAULT_VIRTUAL_OPTIONS = {\n virtualSubtype: 'all',\n virtualEventDate: 'all',\n virtualEventGroupOption: 'all',\n virtualSortBy: 'date',\n virtualTime: 'all',\n virtualEventCategory: 'all-activities', // activityCategory is received in displayable format\n};\n\nexport {DEFAULT_LOCAL_OPTIONS, DEFAULT_VIRTUAL_OPTIONS};\n","/**\n * Exports a singleton containing getters and setters for Event search filters\n */\n\nimport AsyncStorage from '../../../shared/models/StorageHandler';\nimport {\n DEFAULT_LOCAL_OPTIONS,\n DEFAULT_VIRTUAL_OPTIONS,\n} from '../../../shared/constants/DefaultFilters';\n\nclass Filters {\n hasRetrieved = false;\n eventDistance = DEFAULT_LOCAL_OPTIONS.eventDistance;\n eventDate = DEFAULT_LOCAL_OPTIONS.eventDate;\n eventHost = DEFAULT_LOCAL_OPTIONS.eventHost;\n sortBy = DEFAULT_LOCAL_OPTIONS.sortBy;\n eventCategory = DEFAULT_LOCAL_OPTIONS.eventCategory;\n eventGroupOption = DEFAULT_LOCAL_OPTIONS.eventGroupOption;\n eventFilterNavTab = DEFAULT_LOCAL_OPTIONS.eventFilterNavTab;\n\n // virtual specific filters\n virtualSubtype = DEFAULT_VIRTUAL_OPTIONS.virtualSubtype;\n virtualEventDate = DEFAULT_VIRTUAL_OPTIONS.virtualEventDate;\n virtualSortBy = DEFAULT_VIRTUAL_OPTIONS.virtualSortBy;\n virtualEventCategory = DEFAULT_VIRTUAL_OPTIONS.virtualEventCategory;\n virtualEventGroupOption = DEFAULT_VIRTUAL_OPTIONS.virtualEventGroupOption;\n virtualTime = DEFAULT_VIRTUAL_OPTIONS.virtualTime;\n\n _retrieveFilters = () => {\n return AsyncStorage.getItem('filters')\n .then(JSON.parse)\n .then((storedFilters) => {\n if (storedFilters) {\n this.eventDistance =\n storedFilters.eventDistance || this.eventDistance;\n this.eventDate = storedFilters.eventDate || this.eventDate;\n this.eventHost = storedFilters.eventHost || this.eventHost;\n this.sortBy = storedFilters.sortBy || this.sortBy;\n this.eventCategory =\n storedFilters.eventCategory || this.eventCategory;\n // virtual specific filters\n this.virtualSubtype =\n storedFilters.virtualSubtype || this.virtualSubtype;\n this.virtualEventDate =\n storedFilters.virtualEventDate || this.virtualEventDate;\n this.virtualSortBy =\n storedFilters.virtualSortBy || this.virtualSortBy;\n this.virtualEventCategory =\n storedFilters.virtualEventCategory || this.virtualEventCategory;\n this.virtualEventGroupOption =\n storedFilters.virtualEventGroupOption ||\n this.virtualEventGroupOption;\n this.virtualTime = storedFilters.virtualTime || this.virtualTime;\n // group filters\n this.eventFilterNavTab =\n storedFilters.eventFilterNavTab || this.eventFilterNavTab;\n this.eventGroupOption =\n storedFilters.eventGroupOption || this.eventGroupOption;\n }\n this.hasRetrieved = true;\n })\n .catch((error) => {});\n };\n\n /**\n * Sets a new filter onto the singleton, then saves to AsyncStorage\n *\n * @param {object} newFilters Object containing new filters.\n */\n setFilter = async (newFilters) => {\n await this.getFilters().then((previousFilters) => {\n const assignedFilters = Object.assign(previousFilters, newFilters);\n AsyncStorage.setItem('filters', JSON.stringify(assignedFilters))\n .then(() => {\n this.eventDistance = assignedFilters.eventDistance;\n this.eventDate = assignedFilters.eventDate;\n this.eventHost = assignedFilters.eventHost;\n this.sortBy = assignedFilters.sortBy;\n this.eventCategory = assignedFilters.eventCategory;\n // virtual specific filters\n this.virtualSubtype = assignedFilters.virtualSubtype;\n this.virtualEventDate = assignedFilters.virtualEventDate;\n this.virtualSortBy = assignedFilters.virtualSortBy;\n this.virtualEventCategory = assignedFilters.virtualEventCategory;\n this.virtualEventGroupOption =\n assignedFilters.virtualEventGroupOption;\n this.virtualTime = assignedFilters.virtualTime;\n // group filters\n this.eventFilterNavTab = assignedFilters.eventFilterNavTab;\n this.eventGroupOption = assignedFilters.eventGroupOption;\n })\n .catch((error) => {});\n });\n };\n\n /**\n * Returns all saved filters, retrieving them from AsyncStorage if needed.\n *\n * @returns {object} Object with all saved filters\n */\n getFilters = () => {\n if (this.hasRetrieved) {\n const currentFilters = {\n eventDistance: this.eventDistance,\n eventDate: this.eventDate,\n eventHost: this.eventHost,\n sortBy: this.sortBy,\n eventCategory: this.eventCategory,\n eventCategory: this.eventCategory,\n virtualSubtype: this.virtualSubtype,\n virtualEventDate: this.virtualEventDate,\n virtualSortBy: this.virtualSortBy,\n virtualEventCategory: this.virtualEventCategory,\n virtualEventGroupOption: this.virtualEventGroupOption,\n virtualTime: this.virtualTime,\n eventFilterNavTab: this.eventFilterNavTab,\n eventGroupOption: this.eventGroupOption,\n };\n return new Promise((resolve) => {\n resolve(currentFilters);\n });\n } else {\n return this._retrieveFilters().then(this.getFilters);\n }\n };\n\n /**\n * Resets all saved search filters to default.\n *\n * @returns {void}\n */\n deleteFilters = () => {\n this.hasRetrieved = false;\n this.resetLocalFilters();\n this.resetVirtualFilters();\n this.resetGroupFilters();\n AsyncStorage.removeItem('filters').catch((error) => {});\n };\n\n resetLocalFilters = () => {\n this.eventDistance = DEFAULT_LOCAL_OPTIONS.eventDistance;\n this.eventDate = DEFAULT_LOCAL_OPTIONS.eventDate;\n this.eventHost = DEFAULT_LOCAL_OPTIONS.eventHost;\n this.sortBy = DEFAULT_LOCAL_OPTIONS.sortBy;\n this.eventCategory = DEFAULT_LOCAL_OPTIONS.eventCategory;\n };\n\n resetVirtualFilters = () => {\n this.virtualEventCategory = DEFAULT_VIRTUAL_OPTIONS.virtualEventCategory;\n this.virtualEventDate = DEFAULT_VIRTUAL_OPTIONS.virtualEventDate;\n this.virtualSubtype = DEFAULT_VIRTUAL_OPTIONS.virtualSubtype;\n this.virtualSortBy = DEFAULT_VIRTUAL_OPTIONS.virtualSortBy;\n this.virtualEventGroupOption =\n DEFAULT_VIRTUAL_OPTIONS.virtualEventGroupOption;\n this.virtualTime = DEFAULT_VIRTUAL_OPTIONS.virtualTime;\n };\n\n resetGroupFilters = () => {\n this.eventFilterNavTab = DEFAULT_LOCAL_OPTIONS.eventFilterNavTab;\n this.eventGroupOption = DEFAULT_LOCAL_OPTIONS.eventGroupOption;\n };\n}\n\nexport let filters = new Filters();\n","import React, {useState} from 'react';\nimport styles from './EventFilters.module.css';\nimport {\n Paper,\n Toolbar,\n IconButton,\n Slider,\n Typography,\n} from '@material-ui/core';\nimport {withStyles} from '@material-ui/core/styles';\nimport CustomPicker from './CustomPicker';\nimport CustomModal from './CustomModal';\n\nimport {filters} from '../../models/Filters';\nimport {\n GROUP_EVENT_OPTIONS_SORTED,\n SORT_OPTIONS,\n DATE_OPTIONS,\n VIRTUAL_EVENT_OPTIONS,\n GROUP_OPTIONS,\n VIRTUAL_GROUP_OPTIONS,\n VIRTUAL_TIME_OPTIONS,\n} from '../../../../shared/constants/EventFilters';\nimport XIcon from '../svgs/XIcon';\nimport CustomButton from '../CustomButton';\nimport {\n logDateFilter,\n logDistanceFilter,\n logSortFilter,\n} from '../../../../shared/models/Analytics';\nimport {\n DEFAULT_LOCAL_OPTIONS,\n DEFAULT_VIRTUAL_OPTIONS,\n} from '../../../../shared/constants/DefaultFilters';\nimport {\n EVENT_TAB_TYPES,\n FILTER_NAV_TABS,\n} from '../../../../shared/constants/EventTabs';\nimport ReusableTabs from '../ReusableTabs';\nimport {AllInbox} from '@material-ui/icons';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nconst _styles = {\n root: {\n flexGrow: 1,\n },\n toolbar: {\n backgroundColor: 'var(--primary)',\n height: 64,\n position: 'relative',\n justifyContent: 'space-between',\n },\n menuButton: {\n marginRight: '15px',\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n textAlign: 'center',\n // title should always center, regardless of length of siblings\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n fontWeight: 'bold',\n },\n slider: {\n color: 'var(--primary)',\n width: 'calc(100% - 40px)',\n left: '20px',\n },\n button: {\n backgroundColor: 'var(--primary)',\n color: 'var(--white)',\n width: '70%',\n height: '50px',\n '&:hover': {\n backgroundColor: 'var(--primary)',\n },\n },\n reset: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontWeight: 'bold',\n },\n};\n\nconst DISTANCE_OPTIONS = [\n {\n label: projectConfig.distanceUnits === 'mi' ? '25 MI' : '40 KM',\n slug: '25-miles',\n value: 25,\n },\n {\n label: projectConfig.distanceUnits === 'mi' ? '50 MI' : '80 KM',\n slug: '50-miles',\n value: 50,\n },\n {\n label: projectConfig.distanceUnits === 'mi' ? '100 MI' : '160 KM',\n slug: '100-miles',\n value: 100,\n },\n {\n label: projectConfig.distanceUnits === 'mi' ? '250 MI' : '400 KM',\n slug: '250-miles',\n value: 250,\n },\n];\n\nconst FILTER_NAV_TABS_KEYS = ['all', 'group', 'member'];\n\nconst EventFilters = ({classes, onCloseFilters, activeTab}) => {\n const [\n distanceSliderSelectedValue,\n setdistanceSliderSelectedValue,\n ] = useState(\n DISTANCE_OPTIONS.filter((opt) => opt.slug === filters.eventDistance)[0],\n );\n const [datePickerSelectedValue, setdatePickerSelectedValue] = useState(\n activeTab === EVENT_TAB_TYPES.local\n ? filters.eventDate\n : filters.virtualEventDate || DEFAULT_VIRTUAL_OPTIONS.virtualEventDate,\n );\n const [datePickerIsOpen, setdatePickerIsOpen] = useState(false);\n const [sortPickerSelectedValue, setsortPickerSelectedValue] = useState(\n activeTab === EVENT_TAB_TYPES.local\n ? filters.sortBy\n : filters.virtualSortBy || DEFAULT_VIRTUAL_OPTIONS.virtualSortBy,\n );\n const [sortPickerIsOpen, setsortPickerIsOpen] = useState(false);\n const [activityModalSelectedValue, setactivityModalSelectedValue] = useState(\n activeTab === EVENT_TAB_TYPES.local\n ? filters.eventCategory || 'all-activities'\n : filters.virtualEventCategory || 'all-activities',\n );\n const [activityModalIsOpen, setactivityModalIsOpen] = useState(false);\n const [\n virtualSubTypeSelectedValue,\n setVirtualSubTypeSelectedValue,\n ] = useState(filters.virtualSubtype || 'all');\n const [virtualSubTypeIsOpen, setVirtualSubTypeIsOpen] = useState(false);\n const [activeFilterTab, setActiveFilterTab] = useState(\n FILTER_NAV_TABS_KEYS.indexOf(filters.eventFilterNavTab || 0), // to avoid using map each time\n );\n const [activeGroupOption, setActiveGroupOption] = useState(\n filters.eventGroupOption || DEFAULT_LOCAL_OPTIONS.eventGroupOption,\n );\n const [activeGroupOptionIsOpen, setActiveGroupOptionIsOpen] = useState(false);\n const [activeVirtualGroupOption, setActiveVirtualGroupOption] = useState(\n filters.virtualEventGroupOption ||\n DEFAULT_VIRTUAL_OPTIONS.virtualEventGroupOption,\n );\n const [\n activeVirtualGroupOptionIsOpen,\n setActiveVirtualGroupOptionIsOpen,\n ] = useState(false);\n\n const [virtualTimeValue, setVirtualTimeValue] = useState(\n filters.virtualTime || DEFAULT_VIRTUAL_OPTIONS.virtualTime,\n );\n\n const [virtualTimeIsOpen, setVirtualTimeIsOpen] = useState(false);\n\n const datePickerHandler = () => {\n setdatePickerIsOpen((prevState) => !prevState);\n };\n const datePickerSelectHandler = (value) => setdatePickerSelectedValue(value);\n\n const sortPickerHandler = () => {\n setsortPickerIsOpen((prevState) => !prevState);\n };\n const sortPickerSelectHandler = (value) => setsortPickerSelectedValue(value);\n\n const activityModalHandler = () => {\n setactivityModalIsOpen((prevState) => !prevState);\n };\n const activityModalSelectHandler = (value) => {\n setactivityModalSelectedValue(\n typeof value === 'string' ? value : 'all-activities',\n );\n setactivityModalIsOpen(false);\n };\n const virtualSubTypeSelectHandler = (value) =>\n setVirtualSubTypeSelectedValue(value);\n const virtualSubTypePickerHandler = () =>\n setVirtualSubTypeIsOpen((prevState) => !prevState);\n\n const virtualTimeSelectHandler = (value) => setVirtualTimeValue(value);\n const virtualTimePickerHandler = () =>\n setVirtualTimeIsOpen((prevState) => !prevState);\n\n const distanceSliderChangeHandler = (_, value) => {\n const newValue = DISTANCE_OPTIONS.filter((opt) => opt.value === value)[0];\n setdistanceSliderSelectedValue(newValue);\n };\n\n const activeGroupOptionHandler = () => {\n setActiveGroupOptionIsOpen((prevState) => !prevState);\n };\n\n const activeVirtualGroupOptionHandler = () => {\n setActiveVirtualGroupOptionIsOpen((prevState) => !prevState);\n };\n\n const handleAnalytics = () => {\n if (sortPickerSelectedValue !== filters.sortBy) logSortFilter();\n if (datePickerSelectedValue !== filters.eventDate) logDateFilter();\n if (distanceSliderSelectedValue.slug !== filters.eventDistance)\n logDistanceFilter();\n // TODO: Add analytics for Virtual Event Type if already not exists\n };\n\n const applyFiltersHandler = async () => {\n handleAnalytics();\n if (activeTab === EVENT_TAB_TYPES.local) {\n await filters.setFilter({\n eventDistance: distanceSliderSelectedValue.slug,\n eventDate: datePickerSelectedValue,\n sortBy: sortPickerSelectedValue,\n eventCategory: activityModalSelectedValue,\n eventFilterNavTab: FILTER_NAV_TABS_KEYS[activeFilterTab],\n eventGroupOption: activeGroupOption,\n });\n } else if (activeTab === EVENT_TAB_TYPES.virtual) {\n await filters.setFilter({\n virtualEventDate: datePickerSelectedValue,\n virtualSortBy: sortPickerSelectedValue,\n virtualEventCategory: activityModalSelectedValue,\n virtualSubtype: virtualSubTypeSelectedValue,\n virtualEventGroupOption: activeVirtualGroupOption,\n virtualTime: virtualTimeValue,\n });\n }\n filters.getFilters();\n onCloseFilters(true);\n };\n\n const resetFilters = () => {\n if (activeTab === EVENT_TAB_TYPES.local) {\n setdistanceSliderSelectedValue({\n label: '50 MI',\n slug: DEFAULT_LOCAL_OPTIONS.eventDistance,\n value: 50,\n });\n setdatePickerSelectedValue(DEFAULT_LOCAL_OPTIONS.eventDate);\n setsortPickerSelectedValue(DEFAULT_LOCAL_OPTIONS.sortBy);\n setactivityModalSelectedValue(DEFAULT_LOCAL_OPTIONS.eventCategory);\n setActiveFilterTab(\n FILTER_NAV_TABS_KEYS.indexOf(DEFAULT_LOCAL_OPTIONS.eventFilterNavTab),\n );\n setActiveGroupOption(DEFAULT_LOCAL_OPTIONS.eventGroupOption);\n } else if (activeTab === EVENT_TAB_TYPES.virtual) {\n setVirtualSubTypeSelectedValue(DEFAULT_VIRTUAL_OPTIONS.virtualSubtype);\n setdatePickerSelectedValue(DEFAULT_VIRTUAL_OPTIONS.virtualEventDate);\n setsortPickerSelectedValue(DEFAULT_VIRTUAL_OPTIONS.virtualSortBy);\n setactivityModalSelectedValue(\n DEFAULT_VIRTUAL_OPTIONS.virtualEventCategory,\n );\n setActiveVirtualGroupOption(\n DEFAULT_VIRTUAL_OPTIONS.virtualEventGroupOption,\n );\n setVirtualTimeValue(DEFAULT_VIRTUAL_OPTIONS.virtualTime);\n }\n };\n\n const isVirtualTab = activeTab === EVENT_TAB_TYPES.virtual;\n const eventTypes = {'all-activities': { display: 'All Activities', slug: null }, ...GROUP_EVENT_OPTIONS_SORTED};\n\n return (\n
    \n \n \n
    onCloseFilters(false)}>\n \n \n \n
    \n \n Event Filters\n \n \n \n Reset\n \n \n
    \n
    \n {/* {activeTab === EVENT_TAB_TYPES.local && (\n
    \n name)}\n onChangeHandler={setActiveFilterTab}\n />\n
    \n )} */}\n
    \n
    \n {(activeFilterTab === 1 || isVirtualTab) && (\n \n isVirtualTab\n ? activeVirtualGroupOptionHandler()\n : activeGroupOptionHandler()\n }\n onSelect={(slug) =>\n isVirtualTab\n ? setActiveVirtualGroupOption(slug)\n : setActiveGroupOption(slug)\n }\n />\n )}\n {activeTab === EVENT_TAB_TYPES.local && (\n <>\n

    Distance

    \n \n \n )}\n {activeTab === EVENT_TAB_TYPES.virtual && (\n \n )}\n {VIRTUAL_EVENT_OPTIONS && activeTab === EVENT_TAB_TYPES.virtual && (\n \n )}\n \n\n \n \n
    \n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default withStyles(_styles)(EventFilters);\n","import React, {useState, useEffect, useRef} from 'react';\nimport styles from './FiltersBar.module.css';\nimport {IconButton} from '@material-ui/core';\nimport {\n ChevronLeft,\n ChevronRight,\n Event as EventIcon,\n Tune as FilterIcon,\n} from '@material-ui/icons';\nimport EventFilters from './EventFilters';\nimport {filters} from '../../models/Filters';\nimport {\n logToggleRunWalk,\n logToggleHikeRuck,\n logToggleSocial,\n logAccessFilters,\n} from '../../../../shared/models/Analytics';\nimport {\n EVENT_TAB_TYPES,\n MY_EVENT_TYPES,\n GROUP_EVENT_TAB_TYPES,\n PAST_EVENT_TYPES,\n} from '../../../../shared/constants/EventTabs';\nimport {\n DATE_OPTIONS,\n FEATURED_LOZENGE_COUNT,\n GROUP_EVENT_OPTIONS,\n VIRTUAL_GROUP_OPTIONS,\n} from '../../../../shared/constants/EventFilters';\nimport {\n DEFAULT_LOCAL_OPTIONS,\n DEFAULT_VIRTUAL_OPTIONS,\n} from '../../../../shared/constants/DefaultFilters';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nconst Lozenge = ({slug, display, onClick, selected, group}) => (\n \n \n {display}\n \n \n);\n\nconst GroupEventLozenges = ({\n activities,\n active,\n onChange,\n}) => {\n return (\n
    \n {activities.map(({display, slug}, i) => (\n onChange(slug)}\n selected={active === slug}\n group\n />\n ))}\n
    \n );\n};\n\nconst FiltersBar = ({\n onSubmit,\n activeTab,\n activeMyEventsType,\n onFilterMyEvents,\n virtualSubtype,\n virtualSortBy,\n virtualEventDate,\n virtualEventCategory,\n groupId,\n activeGroupEventActivity,\n changeGroupEventActivity,\n activePastEventType,\n onChangeActivePastEventType,\n}) => {\n const [openEventFilters, setopenEventFilters] = useState(false);\n const [filterCounter, setfilterCounter] = useState(\n filters.eventCategory === 'all-activities' ? 1 : 0,\n );\n const [filterOption,setFilterOption]= useState([])\n const groupLozengesRef = useRef();\n\nuseEffect(()=>{\n let kCategoryArray = Object.values(GROUP_EVENT_OPTIONS).slice(0, FEATURED_LOZENGE_COUNT);\n setFilterOption(kCategoryArray)\n}, [])\n\n // when the active tab changes, update the count\n useEffect(() => {\n filterCounterHandler();\n }, [activeTab]);\n\n const eventFilterHandler = (isSubmit) => {\n setopenEventFilters((prevState) => !prevState);\n filterCounterHandler();\n\n if (isSubmit) {\n onSubmit();\n }\n };\n\n /* \n Unideal code to keep the UX similar to mobile, despite how filters are handled being quite different.\n This fix is solely for when refreshing on the event page. Tab changes are properly handled in a use effect.\n This makes sure the filterCounterHandler is called and has the proper values from filters to deal with the async nature.\n Additionally, passing filters as props is not ideal as filter setting is done in this file.\n */\n setTimeout(() => {\n filterCounterHandler();\n }, 100);\n\n // handle the specific lozenge logging type\n // this is only called when one is selected, as opposed to deselecting the toggeled lozenge\n const filterLogType = (category) => {\n if (category === 'run-walk') logToggleRunWalk();\n else if (category === 'hike-ruck') logToggleHikeRuck();\n else if (category === 'social') logToggleSocial();\n };\n\n const filterEvents = async (category) => {\n if (filters.eventCategory === category) {\n await filters.setFilter({\n eventCategory: 'all-activities',\n });\n } else {\n filterLogType(category);\n await filters.setFilter({\n eventCategory: category,\n });\n }\n filterCounterHandler();\n onSubmit();\n };\n\n const filterVirtualEvents = async (type) => {\n if(type == \"past-30\")\n {\n await filters.setFilter({\n virtualEventDate: virtualEventDate == \"past-30\" ? \"all\" :\"past-30\",\n });\n filters.getFilters();\n }\n else if (filters.virtualEventGroupOption === type) {\n await filters.setFilter({\n virtualEventGroupOption: VIRTUAL_GROUP_OPTIONS.national.slug,\n });\n } else {\n // TODO: Add analytics for Virtual Event Type if already not exists\n await filters.setFilter({\n virtualEventCategory: filters.virtualEventCategory === type ? \"all-activities\" : type,\n });\n }\n filterCounterHandler();\n onSubmit();\n };\n\n const filterCounterHandler = () => {\n let counter = 0;\n if (activeTab === EVENT_TAB_TYPES.local) {\n if (filters.eventDistance !== DEFAULT_LOCAL_OPTIONS.eventDistance)\n counter++;\n if (filters.eventDate !== DEFAULT_LOCAL_OPTIONS.eventDate) counter++;\n if (filters.sortBy !== DEFAULT_LOCAL_OPTIONS.sortBy) counter++;\n if (filters.eventCategory !== DEFAULT_LOCAL_OPTIONS.eventCategory)\n counter++;\n if (filters.eventFilterNavTab !== DEFAULT_LOCAL_OPTIONS.eventFilterNavTab)\n counter++;\n if (\n filters.eventFilterNavTab === 'group' &&\n filters.eventGroupOption !== DEFAULT_LOCAL_OPTIONS.eventGroupOption\n )\n counter++;\n } else if (activeTab === EVENT_TAB_TYPES.virtual) {\n // only using props for virtual due to link specific virtual links\n if (virtualSubtype !== DEFAULT_VIRTUAL_OPTIONS.virtualSubtype) counter++;\n if (virtualEventDate !== DEFAULT_VIRTUAL_OPTIONS.virtualEventDate)\n counter++;\n if (virtualSortBy !== DEFAULT_VIRTUAL_OPTIONS.virtualSortBy) counter++;\n if (virtualEventCategory !== DEFAULT_VIRTUAL_OPTIONS.virtualEventCategory)\n counter++;\n if (\n filters.virtualEventGroupOption !==\n DEFAULT_VIRTUAL_OPTIONS.virtualEventGroupOption\n )\n counter++;\n if (filters.virtualTime !== DEFAULT_VIRTUAL_OPTIONS.virtualTime)\n counter++;\n }\n setfilterCounter(counter);\n };\n\n return (\n <>\n
    \n {['local', 'virtual'].includes(activeTab) && (\n {\n logAccessFilters();\n eventFilterHandler(false);\n }}>\n {filterCounter ? (\n
    \n
    \n {filterCounter}\n
    \n Filters\n
    \n ) : (\n
    \n \n Filters\n
    \n )}\n \n )}\n {activeTab === EVENT_TAB_TYPES.local && (\n <>\n {filterOption.map((item,index)=>{\n return filterEvents(item.slug)}\n selected={item.slug == virtualEventCategory}\n />\n })}\n \n )}\n {activeTab === EVENT_TAB_TYPES.virtual && (\n <>\n { projectConfig.hasPast30Lozenge && \n filterVirtualEvents(DATE_OPTIONS['past-30'].slug)\n }\n selected={virtualEventDate == DATE_OPTIONS['past-30'].slug}\n /> }\n {filterOption.map((item,index)=>{\n return filterVirtualEvents(item.slug)}\n selected={item.slug == virtualEventCategory}\n />\n })}\n \n )}\n {activeTab === EVENT_TAB_TYPES.my && (\n <>\n onFilterMyEvents(MY_EVENT_TYPES.hosting)}\n selected={activeMyEventsType === MY_EVENT_TYPES.hosting}\n />\n onFilterMyEvents(MY_EVENT_TYPES.upcoming)}\n selected={activeMyEventsType === MY_EVENT_TYPES.upcoming}\n />\n onFilterMyEvents(MY_EVENT_TYPES.past)}\n selected={activeMyEventsType === MY_EVENT_TYPES.past}\n />\n \n )}\n
    \n {openEventFilters && (\n \n )}\n \n );\n};\n\nexport default FiltersBar;\n","import React from 'react';\nimport {\n Paper,\n Toolbar,\n Typography,\n IconButton,\n Tabs,\n Tab,\n Grid,\n} from '@material-ui/core';\nimport {withStyles} from '@material-ui/core/styles';\nimport {MdWarning as NoEventsIcon} from 'react-icons/md';\nimport {Link} from 'react-router-dom';\nimport moment from 'moment';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {getIndexFromID} from '../../../../shared/utils/Helpers';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport EventListItem from './EventListItem';\nimport Loading from '../Loading';\nimport Pagination from '@material-ui/lab/Pagination';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport {\n logAccessPastEvents,\n logAccessUpcomingEvents,\n} from '../../../../shared/models/Analytics';\nimport {ClipLoader} from 'react-spinners';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { EVENT_ERRORS } from '../../../../shared/constants/ErrorMessages';\n\nconst LIST_TYPES = {\n hosting: 'hosting',\n upcoming: 'upcoming',\n past: 'past',\n};\n\nconst styles = {\n root: {\n flexGrow: 1,\n maxWidth: 700,\n borderRadius: 0,\n },\n toolbar: {\n backgroundColor: 'var(--primary)',\n height: 64,\n padding: '8px 40px',\n },\n menuButton: {\n marginRight: '15px',\n color: 'var(--white)',\n },\n iconLabelWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n color: 'var(--grey)',\n fontFamily: 'OpenSans-Bold',\n fontSize: 12,\n },\n iconLabelWrapperSelected: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n color: 'var(--primary)',\n fontFamily: 'OpenSans-Bold',\n fontSize: 12,\n },\n indicator: {\n backgroundColor: 'var(--primary)',\n },\n tabs: {\n borderBottom: '1px solid var(--grey20)',\n },\n emptyContainer: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: '50px',\n },\n};\n\nclass MyActivitiesListView extends React.Component {\n constructor(props) {\n super(props);\n this.eagleLeaderIsViewing = userProfile.getUserProfile().eagle_leader === 1;\n this.userID = userProfile.getUserProfile().id;\n this.mounted = true;\n this.alertLimitUsersDisplayedShowed = false;\n this.now = moment();\n this.state = {\n selectedValue: 0,\n filteredEvents: [],\n visibleList: LIST_TYPES.hosting,\n hostingEvents: [],\n upcomingEvents: [],\n pastEvents: [],\n isLoading: true,\n loadingMoreHosting: true,\n loadingMoreUpcoming: true,\n loadingMorePast: true,\n total_hosting_pages: null,\n total_upcoming_pages: null,\n total_past_pages: null,\n hostingPage: 0,\n upcomingPage: 0,\n pastPage: 0,\n noResultsFoundHosting: false,\n noResultsFoundUpcoming: false,\n noResultsFoundPast: false,\n stopFetchingHosting: false,\n stopFetchingUpcoming: false,\n stopFetchingPast: false,\n reloadHostingCacheUntilPage: 0,\n reloadUpcomingCacheUntilPage: 0,\n reloadPastCacheUntilPage: 0,\n isLoadingMore: false,\n };\n }\n\n componentDidMount() {\n this.setVisibleTab(this.state.selectedValue);\n\n window.addEventListener('scroll', this.trackScrolling);\n }\n\n trackScrolling = (event) => {\n event.preventDefault();\n\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n window.removeEventListener('scroll', this.trackScrolling);\n this.handleLoadMore();\n }\n };\n\n componentWillUnmount() {\n this.mounted = false;\n window.removeEventListener('scroll', this.trackScrolling);\n }\n\n setVisibleTab = (index) => {\n this.setState({\n selectedValue: index,\n });\n switch (index) {\n case 0:\n this.setState({visibleList: LIST_TYPES.hosting});\n break;\n case 1:\n this.setState({visibleList: LIST_TYPES.upcoming});\n break;\n case 2:\n this.setState({visibleList: LIST_TYPES.past});\n break;\n default:\n break;\n }\n this.filterEvents(index);\n };\n\n filterEvents = (index) => {\n this.setState({isLoading: true});\n switch (index) {\n case 0:\n this.getEvents(LIST_TYPES.hosting);\n break;\n case 1:\n logAccessUpcomingEvents();\n this.getEvents(LIST_TYPES.upcoming);\n break;\n case 2:\n logAccessPastEvents();\n this.getEvents(LIST_TYPES.past);\n break;\n default:\n break;\n }\n };\n\n refreshPaging() {\n this.setState({\n hostingPage: 0,\n upcomingPage: 0,\n pastPage: 0,\n });\n }\n\n alertLimitUsersDisplayed() {\n if (!this.alertLimitUsersDisplayedShowed) {\n this.alertLimitUsersDisplayedShowed = true;\n errorAlert(EVENT_ERRORS.SOME_INTERESTED_AND_GOING);\n }\n }\n\n getEvents(listType, loadMore = null) {\n if (!Object.values(LIST_TYPES).includes(listType)) {\n throw new Error(\n `getEvents called with ${listType}, must be one of ${LIST_TYPES.upcoming}|${LIST_TYPES.past}`,\n );\n }\n const {now} = this;\n const {hostingPage, upcomingPage, pastPage} = this.state;\n const dateString = moment(now).toISOString();\n const pageParams =\n listType === LIST_TYPES.hosting\n ? `page=${hostingPage}`\n : listType === LIST_TYPES.upcoming\n ? `page=${upcomingPage}`\n : `page=${pastPage}`;\n const sortParams =\n listType === LIST_TYPES.hosting\n ? `host_id=${this.userID}&sort_order=desc`\n : listType === LIST_TYPES.upcoming\n ? `after=${dateString}&sort_order=asc`\n : `before=${dateString}&sort_order=desc`;\n const urlParams = `${pageParams}&sort=date&${sortParams}`;\n const newState = Object.assign(\n listType === LIST_TYPES.hosting\n ? {\n loadingMoreHosting: true,\n hostingPage: hostingPage + 1,\n }\n : listType === LIST_TYPES.upcoming\n ? {\n loadingMoreUpcoming: true,\n upcomingPage: upcomingPage + 1,\n }\n : {\n loadingMorePast: true,\n pastPage: pastPage + 1,\n },\n );\n\n this.setState(newState);\n if (listType === LIST_TYPES.hosting) {\n this.getUserHostedEvents(urlParams, loadMore);\n } else {\n this.getUserEvents(urlParams, listType, loadMore);\n }\n }\n\n getUserHostedEvents = (urlParams, loadMore = null) => {\n const {\n hostingPage,\n reloadHostingCacheUntilPage,\n hostingEvents,\n } = this.state;\n loadMore && this.setState({isLoadingMore: true});\n return rwbApi.getMobileEvents(urlParams).then((response) => {\n const {data, total_number_pages, total_number_posts} = response;\n if (data) {\n if (!this.mounted) return;\n this.setState(\n {\n hostingEvents: [...hostingEvents, ...data],\n total_hosting_pages: total_number_pages,\n },\n () => {\n this.state.visibleList === LIST_TYPES.hosting &&\n this.setState({\n filteredEvents: this.state.hostingEvents,\n });\n },\n );\n } else {\n this.setState({filteredEvents: hostingEvents});\n }\n if (total_number_posts === 0) {\n if (!this.mounted) return;\n this.setState({\n noResultsFoundHosting: true,\n });\n }\n if (hostingPage >= total_number_pages) {\n if (!this.mounted) return;\n this.setState({\n stopFetchingHosting: true,\n });\n }\n if (hostingPage >= reloadHostingCacheUntilPage) {\n if (!this.mounted) return;\n this.setState({\n reloadHostingCacheUntilPage: 0,\n });\n }\n if (!this.mounted) return;\n this.setState({\n loadingMoreHosting: false,\n isLoading: false,\n isLoadingMore: false,\n });\n\n window.addEventListener('scroll', this.trackScrolling);\n });\n };\n\n getUserEvents = (urlParams, listType, loadMore = null) => {\n urlParams += `&attendee=${this.userID}`;\n const {\n upcomingPage,\n reloadUpcomingCacheUntilPage,\n pastPage,\n reloadPastCacheUntilPage,\n upcomingEvents,\n pastEvents,\n } = this.state;\n loadMore && this.setState({isLoadingMore: true});\n rwbApi\n .getMobileEvents(urlParams)\n .then((response) => {\n const {data, total_number_pages, total_number_posts} = response;\n if (listType === LIST_TYPES.upcoming) {\n if (data) {\n if (!this.mounted) return;\n this.setState(\n {\n upcomingEvents: [...upcomingEvents, ...data],\n total_upcoming_pages: total_number_pages,\n },\n () => {\n this.state.visibleList === LIST_TYPES.upcoming &&\n this.setState({\n filteredEvents: this.state.upcomingEvents,\n });\n },\n );\n } else {\n this.setState({filteredEvents: upcomingEvents});\n }\n if (total_number_posts === 0) {\n if (!this.mounted) return;\n this.setState({\n noResultsFoundUpcoming: true,\n });\n }\n if (upcomingPage >= total_number_pages) {\n if (!this.mounted) return;\n this.setState({\n stopFetchingUpcoming: true,\n });\n }\n if (upcomingPage >= reloadUpcomingCacheUntilPage) {\n if (!this.mounted) return;\n this.setState({\n reloadUpcomingCacheUntilPage: 0,\n });\n }\n if (!this.mounted) return;\n this.setState({\n loadingMoreUpcoming: false,\n isLoading: false,\n });\n } else {\n if (data) {\n if (!this.mounted) return;\n this.setState(\n {\n pastEvents: [...pastEvents, ...data],\n total_past_pages: total_number_pages,\n },\n () => {\n this.state.visibleList === LIST_TYPES.past &&\n this.setState({\n filteredEvents: this.state.pastEvents,\n });\n },\n );\n } else {\n this.setState({filteredEvents: pastEvents});\n }\n if (total_number_posts === 0) {\n if (!this.mounted) return;\n this.setState({\n noResultsFoundPast: true,\n });\n }\n if (pastPage >= total_number_pages) {\n if (!this.mounted) return;\n this.setState({\n stopFetchingPast: true,\n });\n }\n if (pastPage >= reloadPastCacheUntilPage) {\n if (!this.mounted) return;\n this.setState({\n reloadPastCacheUntilPage: 0,\n });\n }\n if (!this.mounted) return;\n this.setState({\n loadingMorePast: false,\n isLoading: false,\n isLoadingMore: false,\n });\n }\n\n window.addEventListener('scroll', this.trackScrolling);\n })\n .catch((error) => {\n console.warn(error);\n if (!this.mounted) return;\n this.setState({\n isLoading: false,\n isLoadingMore: false,\n noResultsFound: true,\n });\n alert('Error', 'There was a problem with the server.');\n });\n };\n\n updateEvent(id) {\n const {now} = this;\n const {pastEvents, upcomingEvents} = this.state;\n if (!this.mounted) return;\n this.setState({\n isLoading: true,\n });\n return rwbApi\n .getEvent(id)\n .then((newEvent) => {\n const isEventInPast = moment(newEvent.start).isBefore(now);\n const events = isEventInPast ? pastEvents : upcomingEvents;\n const index = getIndexFromID(id, events);\n events[index] = newEvent;\n if (!this.mounted) return;\n this.setState(\n Object.assign(\n {},\n isEventInPast ? {pastEvents: events} : {upcomingEvents: events},\n ),\n );\n })\n .catch((error) => {})\n .finally(() => {\n if (!this.mounted) return;\n this.setState({\n isLoading: false,\n });\n });\n }\n\n loadAttendees(id) {\n return rwbApi.getAllMobileAttendees(id).catch((error) => {\n throw error;\n });\n }\n\n handleLoadMore() {\n const {selectedValue} = this.state;\n if (\n selectedValue === 0 &&\n this.state.hostingPage < this.state.total_hosting_pages\n ) {\n this.getEvents(LIST_TYPES.hosting, true);\n } else if (\n selectedValue === 1 &&\n this.state.upcomingPage < this.state.total_upcoming_pages\n ) {\n this.getEvents(LIST_TYPES.upcoming, true);\n } else if (this.state.pastPage < this.state.total_past_pages) {\n this.getEvents(LIST_TYPES.past, true);\n }\n }\n\n // renderPagination(total_pages, page, listType) {\n // return (\n // \n // {\n // if (page !== value)\n // this.setState(\n // {\n // [listType]: value - 1,\n // isLoading: true,\n // },\n // () => this.handleLoadMore(),\n // );\n // }}\n // size={'large'}\n // />\n // \n // );\n // }\n\n // loadPagination() {\n // switch (this.state.selectedValue) {\n // case 0:\n // return this.renderPagination(\n // this.state.total_hosting_pages,\n // this.state.hostingPage,\n // 'hostingPage',\n // );\n // case 1:\n // return this.renderPagination(\n // this.state.total_upcoming_pages,\n // this.state.upcomingPage,\n // 'upcomingPage',\n // );\n // case 2:\n // return this.renderPagination(\n // this.state.total_past_pages,\n // this.state.pastPage,\n // 'pastPage',\n // );\n // default:\n // break;\n // }\n // }\n\n render() {\n const {\n selectedValue,\n isLoading,\n filteredEvents,\n isLoadingMore,\n } = this.state;\n const {classes} = this.props;\n return (\n
    \n {isLoading ? (\n \n ) : (\n <>\n \n \n \n \n \n \n \n

    My Activites

    \n
    \n this.setVisibleTab(i)}\n variant=\"fullWidth\"\n classes={{\n indicator: classes.indicator,\n }}>\n \n \n \n \n {filteredEvents.map((item, i) => (\n \n \n \n ))}\n {isLoadingMore && (\n <>\n \n \n \n \n )}\n {/* {filteredEvents.length > 0 && this.loadPagination()} */}\n
    \n {!filteredEvents.length && !isLoading && (\n
    \n \n

    The selected filters produced no events.

    \n

    Please adjust filter settings.

    \n
    \n )}\n \n )}\n
    \n );\n }\n}\n\nexport default withStyles(styles)(MyActivitiesListView);\n","import googleAPI from '../apis/googleAPI';\nimport {\n DISTANCE_OPTIONS,\n GROUP_EVENT_OPTIONS_SORTED,\n GROUP_OPTIONS,\n VIRTUAL_EVENT_OPTIONS,\n VIRTUAL_GROUP_OPTIONS,\n} from '../constants/EventFilters';\nimport {generateFilteredTime} from './Helpers';\nimport {\n EVENT_TAB_TYPES,\n GROUP_EVENT_TAB_TYPES,\n MY_EVENT_TYPES,\n PAST_EVENT_TYPES,\n} from '../constants/EventTabs';\nimport moment from 'moment';\nimport {DEFAULT_VIRTUAL_OPTIONS} from '../constants/DefaultFilters';\nimport { userLocation } from '../models/UserLocation';\n\nconst DEFAULT_LOCALE = 'Everywhere';\nconst NO_SAVED_LOCATION_ERROR =\n 'Unable to find a location for this account. Please update your address in \"Personal Information\".';\nconst NO_CHAPTER_ERROR =\n 'Unable to find a chapter for this account. Please update your address in \"Preferred Chapter\".';\nconst GOOGLE_API_ERROR =\n 'Unable to find the coordinates of that location. Please try again with a different location.';\n\n// this returns a promise with a reject on cases there was an error loading something in and resolves otherwise\n// the prime reason this is a promise is due to the usage of googleAPI and keeping behavior consistent\nconst eventURLFormatter = (state, user) => {\n let {\n locale,\n eventDistance,\n eventCategory,\n eventDate,\n search,\n page,\n sortBy,\n lat,\n long,\n activeTab,\n activeMyEventsType,\n activePastEventType,\n virtualSubtype,\n groupId,\n eventGroupOption,\n eventFilterNavTab,\n virtualTime,\n challengeId,\n } = state;\n\n if (\n !Object.values(EVENT_TAB_TYPES).includes(activeTab) &&\n !Object.values(GROUP_EVENT_TAB_TYPES)\n )\n throw new Error(\n `Expecting type \"local\", \"virtual\", \"my\", or \"past for activeTab. Received ${activeTab}`,\n );\n\n // if no locale or locale is set to \"everywhere\", try and get a usable locale for the google api lookup\n // no longer throws an error if location isn't on the user.\n // at the moment, this function prefers lat/long: if lat/long is present, it will use that over anything else.\n\n if (!locale || locale === DEFAULT_LOCALE) {\n let {zip, city, state} = userLocation.getUserLocation();\n\n if (zip && city && state) {\n locale = `${zip.slice(0, 5)} ${city}, ${state}`;\n } else {\n locale = DEFAULT_LOCALE;\n }\n }\n \n let urlParams = [];\n // common parameters to all types\n urlParams.push(`offset=${page * 10}&limit=10`);\n const localSearchingGroups =\n eventFilterNavTab === 'group' && activeTab == 'local';\n if (search) urlParams.push(`search=${encodeURIComponent(search)}`);\n if (groupId) urlParams.push(`chapter_id=${groupId}`); //backend expects old filter chapter_id\n if (challengeId) urlParams.push(`challenge_id=${challengeId}`);\n if (eventCategory && eventCategory !== 'all-activities')\n urlParams.push(`category=${GROUP_EVENT_OPTIONS_SORTED[eventCategory].slug}`);\n if (eventGroupOption) {\n if (localSearchingGroups)\n urlParams.push(`group_filter=${GROUP_OPTIONS[eventGroupOption].slug}`);\n else if (activeTab === 'virtual') {\n // if the default is not properly set to national on the event page, search national here to avoid crash\n // this is for alpha testers who had old filters saved to their device\n if (!(eventGroupOption in VIRTUAL_GROUP_OPTIONS))\n eventGroupOption = 'national';\n urlParams.push(\n `group_filter=${VIRTUAL_GROUP_OPTIONS[eventGroupOption].slug}`,\n );\n }\n }\n if (eventFilterNavTab && eventFilterNavTab === 'member' && !groupId)\n urlParams.push('chapter_id=0'); // sending chapter_id=0 retrieves all member events\n // search on a specific group event page\n if (groupId !== null && groupId !== undefined)\n urlParams.push('chapter_hosted=true');\n else {\n // only the local event filters has the option to only be groups or only be members\n if (localSearchingGroups) urlParams.push('chapter_hosted=true');\n else if (activeTab === 'local' && eventFilterNavTab === 'member')\n urlParams.push('chapter_hosted=false');\n }\n if (\n activeTab === 'virtual' &&\n virtualTime !== DEFAULT_VIRTUAL_OPTIONS.virtualTime\n )\n urlParams.push(`is_all_day=${virtualTime === 'all-day' ? 'True' : 'False'}`);\n\n // type-specific parameters\n if (activeTab === EVENT_TAB_TYPES.my) {\n if (!Object.values(MY_EVENT_TYPES).includes(activeMyEventsType))\n throw new Error(\n 'Expecting type \"hosting\", \"upcoming\", or \"past\" for my event tab',\n );\n\n const dateNowString = moment().toISOString();\n\n urlParams.push(`sort=date`);\n if (activeMyEventsType === MY_EVENT_TYPES.hosting) {\n urlParams.push(`host_id=${user.id}`);\n urlParams.push(`sort_order=desc`);\n } else if (activeMyEventsType === MY_EVENT_TYPES.upcoming) {\n urlParams.push(`after=${dateNowString}`);\n urlParams.push(`sort_order=asc`);\n urlParams.push(`attendee=${user.id}`);\n } else if (activeMyEventsType === MY_EVENT_TYPES.past) {\n urlParams.push(`before=${dateNowString}`);\n urlParams.push(`sort_order=desc`);\n urlParams.push(`attendee=${user.id}`);\n }\n urlParams = urlParams.join('&');\n return new Promise((resolve) => {\n resolve({urlParams, state});\n });\n } else if (activeTab === GROUP_EVENT_TAB_TYPES.past) {\n const dateNowString = moment().toISOString();\n urlParams.push(`sort=date`);\n urlParams.push(`before=${dateNowString}`);\n urlParams.push(`sort_order=desc`);\n urlParams.push(`sort=date`);\n if (activePastEventType === PAST_EVENT_TYPES.local) {\n urlParams.push('is_virtual=False');\n } else if (activePastEventType === PAST_EVENT_TYPES.virtual) {\n urlParams.push('is_virtual=True');\n }\n urlParams = urlParams.join('&');\n return new Promise((resolve) => {\n resolve({urlParams, state});\n });\n } else {\n // Determine if this used/needed on the web\n state.distanceSliderValue = distanceSliderHandler(eventDistance);\n\n if (activeTab === EVENT_TAB_TYPES.local) urlParams.push('is_virtual=False');\n\n const dateFilter = generateFilteredTime(eventDate);\n\n if (dateFilter) urlParams.push(dateFilter);\n\n urlParams.push(\n `sort=${sortBy}&sort_order=${\n sortBy === 'date' && eventDate !== 'past-30' ? 'asc' : 'desc'\n }`,\n );\n\n if (activeTab === EVENT_TAB_TYPES.virtual) {\n urlParams.push('is_virtual=True');\n if (virtualSubtype && virtualSubtype !== 'all')\n urlParams.push(`virtual_event_category=${virtualSubtype}`);\n\n // virtual events do not require a location/distance\n return new Promise((resolve) => {\n urlParams = urlParams.join('&');\n resolve({urlParams, state});\n });\n } else if (DISTANCE_OPTIONS[eventDistance].slug && lat && long) {\n if (!groupId) {\n urlParams.push(\n `distance=${DISTANCE_OPTIONS[eventDistance].slug}&lat=${lat}&long=${long}`,\n );\n }\n return new Promise((resolve) => {\n urlParams = urlParams.join('&');\n resolve({urlParams, state});\n });\n } else if (DISTANCE_OPTIONS[eventDistance].slug && locale && (!lat || !long)) {\n if (locale === DEFAULT_LOCALE) {\n // show ALL local events (no need for google api call)\n return new Promise((resolve) => {\n urlParams = urlParams.join('&');\n resolve({urlParams, state});\n });\n } else {\n return new Promise((resolve, reject) => {\n return googleAPI\n .geocode(locale)\n .then((result) => {\n if (!groupId) {\n const lat = result.results[0].geometry.location.lat;\n const long = result.results[0].geometry.location.lng;\n // return lat,long in state to avoid unncessary google api calls\n state.lat = lat;\n state.long = long;\n urlParams.push(\n `distance=${DISTANCE_OPTIONS[eventDistance].slug}&lat=${lat}&long=${long}`,\n );\n }\n urlParams = urlParams.join('&');\n resolve({urlParams, state});\n })\n .catch((err) => {\n reject(GOOGLE_API_ERROR);\n });\n });\n }\n }\n }\n};\n\n// determines the visual aspects of the slider for local events\nfunction distanceSliderHandler(eventDistance) {\n if (eventDistance === '25-miles') {\n return 25;\n } else if (eventDistance === '50-miles') {\n return 100;\n } else if (eventDistance === '100-miles') {\n return 175;\n } else {\n return 250;\n }\n}\n\nexport {eventURLFormatter};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction ReplyIcon(props) {\n return (\n \n \n \n \n \n \n );\n}\n\nReplyIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nReplyIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n\nexport default ReplyIcon;\n","import React, {Component} from 'react';\nimport styles from './CommentView.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport LikeIcon from '../svgs/LikeIcon';\nimport ReportAndDeleteOverlay from '../ReportAndDeleteOverlay';\nimport {howLongAgo, getHyperlinks} from '../../../../shared/utils/Helpers';\nimport {withRouter} from 'react-router-dom';\nimport FormattedPostText from './FormattedPostText';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport SitePreviewCard from '../SitePreviewCard.react';\n\nclass CommentView extends Component {\n constructor(props) {\n super(props);\n this.state = {\n deleted: false,\n };\n }\n\n // only the creator of a post can delete\n canDelete = () => {\n const commenterID = this.props.user.id;\n const currentUserID = userProfile.getUserProfile().id;\n return commenterID == currentUserID;\n };\n\n deleteComment = () => {\n if (\n window.confirm(\n 'Delete Comment: Are you sure you want to delete your comment?',\n )\n ) {\n const reactionKind = JSON.stringify({kind: 'comment'});\n rwbApi\n .deleteReaction(\n this.props.posterID,\n this.props.postID,\n reactionKind,\n this.props.commentID,\n )\n .then(() => {\n this.props.handleCommentDeletion();\n this.setState({deleted: true});\n });\n }\n };\n\n render() {\n const {user, time, content, tagged, history, edited} = this.props;\n const links = getHyperlinks(content);\n return !this.state.deleted ? (\n
    \n
    \n history.push(`/profile/${user.id}`)}>\n \n
    \n

    \n history.push(`/profile/${user.id}`)}>\n {`${user.first_name} ${user.last_name}`} \n \n • {howLongAgo(time) || ''}\n {edited &&

    Edited

    }\n

    \n
    \n null}\n poster={this.props.poster}\n time={howLongAgo(this.props.time)}\n posterText={this.props.posterText}\n posterTagged={this.props.posterTagged}\n posterTime={this.props.posterTime}\n refreshReactions={this.props.refreshReactions}\n />\n
    \n
    \n
    \n \n {links.length && this.props.graphData?.url ? (\n \n ) : null}\n
    \n \n ) : null;\n }\n}\n\nexport default withRouter(CommentView);\n","import React, {useState} from 'react';\nimport styles from './CreateCommentBar.module.css';\nimport CreateComment from './CreateComment';\n\nfunction CreateCommentBar({\n poster,\n streamID,\n verbEvent,\n time,\n text,\n tagged,\n history,\n postImage,\n refreshReactions,\n workout,\n}) {\n const [createCommentModal, setCreateCommentModal] = useState(false);\n\n const openCloseModalHandler = (refresh = null) => {\n if (refresh && createCommentModal) refreshReactions(true);\n setCreateCommentModal((prevState) => !prevState);\n };\n\n return (\n <>\n
    \n
    \n
    \n

    Add a comment

    \n
    \n
    \n
    \n {createCommentModal && (\n \n )}\n \n );\n}\n\nexport default CreateCommentBar;\n","import React, {Component} from 'react';\nimport styles from './PostView.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport LikeIcon from '../svgs/LikeIcon';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport ReplyIcon from '../svgs/ReplyIcon';\nimport {withRouter} from 'react-router-dom';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {howLongAgo, getHyperlinks} from '../../../../shared/utils/Helpers';\nimport PhotoView from './PhotoView';\nimport FormattedPostText from './FormattedPostText';\nimport Loading from '../Loading';\nimport {logNotificationsLike} from '../../../../shared/models/Analytics';\nimport ReportAndDeleteOverlay from '../ReportAndDeleteOverlay';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport CommentView from './CommentView';\nimport CreateCommentBar from './CreateCommentBar';\nimport {ClipLoader} from 'react-spinners';\nimport ShareChallengeBox from './ShareChallengeBox';\nimport {errorAlert} from '../../../../shared/utils/ErrorAlert';\nimport {\n POST_DELETE_WARNING,\n POST_BLOCK_WARNING,\n} from '../../../../shared/constants/OtherMessages';\nimport {\n STREAM_ERRORS,\n POST_BLOCK_ERROR,\n POST_DELETE_ERROR,\n} from '../../../../shared/constants/ErrorMessages';\nimport {deletePost} from '../../../../shared/utils/StreamHelpers';\nimport SitePreviewCard from '../SitePreviewCard.react';\n\nfunction Reply() {\n return (\n
    \n
    \n \n

    \n User • Time\n

    \n
    \n

    Text

    \n
    \n
    \n \n

    #

    \n
    \n
    \n
    \n );\n}\n\nconst SeePreviousComments = ({refreshing, onClick, allCommentsLoaded}) => (\n \n {refreshing ? (\n \n ) : (\n

    \n See Previous Comments\n

    \n )}\n \n);\n\nclass PostView extends Component {\n constructor(props) {\n super(props);\n const {\n eventID,\n eventName,\n groupName,\n likeAmount,\n liked,\n post_image,\n poster,\n streamID,\n tagged,\n text,\n time,\n title,\n postID,\n previousScreen,\n actorID,\n activityID,\n commentAmount,\n commentID,\n } = this.props.location.state;\n this.state = {\n eventID,\n eventName: eventName || 'posted',\n groupName: groupName || 'posted',\n likeAmount: likeAmount || 0,\n liked: liked || false,\n post_image,\n poster,\n streamID,\n tagged,\n text,\n time,\n title,\n postID,\n previousScreen,\n loading: true,\n imageFocused: false,\n refreshing: false,\n isModalOpen: false,\n actorID: actorID || null,\n activityID: activityID || null,\n comments: [],\n commentAmount,\n page: 1,\n allCommentsLoaded: commentAmount === 0 ? true : false,\n loadingPoster: commentID ? true : false, // requires fetching poster data\n edited: false,\n workoutEventName: '',\n chapterName: '',\n eventStartTime: '',\n miles: 0,\n steps: 0,\n hours: 0,\n minutes: 0,\n seconds: 0,\n graphData: null,\n };\n }\n\n componentDidMount() {\n this.initializeScreen();\n this.refreshReactions();\n }\n\n initializeScreen = () => {\n const {poster, streamID} = this.state;\n if (!streamID) this.setState({loading: false});\n else {\n rwbApi\n .getSpecificPost(poster.id, streamID)\n .then((data) => {\n // If loading the specific post has a name (meaning it was an event), display it. Otherwise it was a post\n let eventName, verb, eventID, groupName, groupID;\n if (data.name) eventName = data.name;\n else if (data.event && data.event.name) {\n eventName = data.event.name;\n verb = data.verb;\n eventID = data.event.id;\n } else if (data.group && data.group.name) {\n groupName = data.group.name;\n verb = data.verb;\n groupID = data.group.id;\n } else {\n eventName = 'posted';\n }\n this.setState({\n eventName,\n groupName,\n verb,\n text: data.text,\n post_image: data.media_url,\n liked: data?.own_reactions?.like || false,\n changingLikeStatus: false,\n loading: false,\n tagged: data.tagged,\n eventID: eventID || this.state.eventID,\n groupID: groupID || this.state.groupID,\n poster: data.actor,\n time: data.time,\n loadingPoster: false,\n edited: data.edited,\n graphData: data.open_graph,\n });\n if (data.workout) {\n this.setState({\n workoutEventName: data.workout.event_name || '',\n chapterName: data.workout.chapter_name || '',\n eventStartTime: data.workout.event_start_time || '',\n miles: data.workout.miles || 0,\n steps: data.workout.steps || 0,\n hours: Math.floor(data.workout.minutes / 60) || 0,\n minutes: Math.floor(data.workout.minutes % 60) || 0,\n seconds: Math.round((data.workout.minutes % 1) * 60) || 0,\n });\n }\n })\n .catch((err) => {\n console.warn(err);\n this.setState({loading: false});\n });\n }\n };\n\n // Refresh how many comments/likes on the post\n refreshReactions = (newComment = false) => {\n const {poster, streamID} = this.state;\n this.setState({refreshing: true});\n rwbApi\n .getReactions(poster.id, streamID, null, 'comment')\n .then((result) => {\n let comments = [];\n if (result.data.reactions === null) result.data.reactions = [];\n result.data.reactions.forEach((item) => {\n if (item.kind === 'comment') {\n comments.push({\n content: item.data.content,\n time: item.created_at,\n comment_id: item.id,\n user: item.user_id,\n tagged: item.tagged,\n edited: item.data.edited,\n open_graph: item.data?.open_graph,\n });\n }\n });\n this.setState(\n {\n comments,\n allCommentsLoaded:\n comments.length === 0 ||\n comments.length >= result.data.reaction_counts.comment\n ? true\n : false,\n refreshing: false,\n commentAmount: result?.data?.reaction_counts?.comment,\n likeAmount: result?.data?.reaction_counts?.like\n },\n () =>\n newComment &&\n this.commentsRef.scrollIntoView({\n block: 'end',\n behavior: 'smooth',\n }),\n );\n })\n .catch((err) => {\n console.warn(err);\n this.setState({refreshing: false});\n errorAlert(STREAM_ERRORS.REFRESHING_POST);\n });\n };\n\n loadMoreReactions = () => {\n const {poster, streamID, page, comments} = this.state;\n this.setState({refreshing: true});\n const oldestCommentID = comments[0].comment_id;\n rwbApi\n .getReactions(poster.id, streamID, oldestCommentID, 'comment')\n .then((result) => {\n const newComments = [];\n result.data.reactions.forEach((item) =>\n newComments.push({\n content: item.data.content,\n time: item.created_at,\n comment_id: item.id,\n user: item.user_id,\n tagged: item.tagged,\n edited: item.data.edited,\n }),\n );\n const mergedComments = [...newComments, ...comments];\n this.setState({\n comments: mergedComments,\n likeAmount: result.data.reaction_counts.like || 0,\n commentAmount: result.data.reaction_counts.comment || 0,\n page: page + 1,\n allCommentsLoaded:\n mergedComments.length >= result.data.reaction_counts.comment\n ? true\n : false,\n refreshing: false,\n });\n })\n .catch((err) => {\n console.warn(err);\n this.setState({refreshing: false});\n errorAlert(STREAM_ERRORS.MORE_COMMENTS);\n });\n };\n\n updateLikeStatus = (action) => {\n if (action === 'like')\n this.setState({liked: true, likeAmount: this.state.likeAmount + 1});\n else if (action === 'unlike')\n this.setState({liked: false, likeAmount: this.state.likeAmount - 1});\n };\n\n handleLikeClicked = () => {\n if (this.state.changingLikeStatus) return;\n this.setState({changingLikeStatus: true});\n const reactionKind = JSON.stringify({kind: 'like'});\n if (this.state.eventID) this.handleEventLike(reactionKind);\n else this.handleUserLike(reactionKind);\n };\n\n handleUserLike = (reactionKind) => {\n const {liked, poster, streamID, previousScreen} = this.state;\n if (!liked) {\n this.updateLikeStatus('like');\n rwbApi\n .postReaction(poster.id, streamID, reactionKind)\n .then(() => {\n if (previousScreen === 'notifications') logNotificationsLike();\n })\n .catch((err) => {\n errorAlert(STREAM_ERRORS.LIKING);\n this.updateLikeStatus('unlike');\n }).finally(() => {\n this.setState({changingLikeStatus: false});\n });\n } else {\n this.updateLikeStatus('unlike');\n rwbApi\n .deleteReaction(poster.id, streamID, reactionKind)\n .then(() => {})\n .catch((err) => {\n this.updateLikeStatus('like');\n errorAlert(STREAM_ERRORS.UNLIKING);\n }).finally(() => {\n this.setState({changingLikeStatus: false});\n });\n }\n };\n\n handleEventLike = (reactionKind) => {\n const {liked, eventID, streamID, previousScreen} = this.state;\n if (!liked) {\n this.updateLikeStatus('like');\n rwbApi\n .postEventReaction(eventID, streamID, reactionKind)\n .then(() => {\n if (previousScreen === 'notifications') logNotificationsLike();\n })\n .catch((err) => {\n console.warn(err);\n errorAlert(STREAM_ERRORS.LIKING);\n this.updateLikeStatus('unlike');\n }).finally(() => {\n this.setState({changingLikeStatus: false});\n });\n } else {\n this.updateLikeStatus('unlike');\n rwbApi\n .deleteEventReaction(eventID, streamID, reactionKind)\n .then(() => {})\n .catch((err) => {\n this.updateLikeStatus('like');\n errorAlert(STREAM_ERRORS.UNLIKING);\n }).finally(() => {\n this.setState({changingLikeStatus: false});\n });\n }\n };\n\n // only the creator of a post can delete\n // \"event\" types are statuses, and those cannot be deleted\n canDelete = () => {\n const postCreator = this.state.actorID; //ID of post creator\n const currentUserID = userProfile.getUserProfile().id;\n return postCreator == currentUserID && this.props.type !== 'event';\n };\n\n deletePost = () => {\n if (window.confirm(`Delete Post: ${POST_DELETE_WARNING}`)) {\n const {eventID, activityID, groupID, challengeID} = this.state;\n this.setState({deleted: true});\n deletePost(activityID, eventID, challengeID, groupID)\n .then(() => {\n this.props.history.goBack();\n // TODO: Remove post on feed page by passing function which will set delete to true\n })\n .catch(() => {\n errorAlert(POST_DELETE_ERROR);\n this.setState({deleted: false});\n });\n }\n };\n\n blockPost = () => {\n if (window.confirm(`Block Post: ${POST_BLOCK_WARNING}`)) {\n const {eventID, activityID} = this.state;\n if (!eventID) {\n this.setState({deleted: true});\n rwbApi\n .blockPost(activityID)\n .then(() => {\n this.props.history.goBack();\n })\n .catch(() => {\n errorAlert(POST_BLOCK_ERROR);\n this.setState({deleted: false});\n });\n }\n }\n };\n\n handleCommentDeletion = () =>\n this.setState({commentAmount: this.state.commentAmount - 1});\n\n render() {\n const {\n eventName,\n groupName,\n likeAmount,\n liked,\n post_image,\n poster,\n streamID,\n tagged,\n text,\n time,\n title,\n isModalOpen,\n loading,\n verb,\n eventID,\n groupID,\n actorID,\n comments,\n refreshing,\n commentAmount,\n allCommentsLoaded,\n loadingPoster,\n edited,\n workoutEventName,\n chapterName,\n eventStartTime,\n miles,\n steps,\n hours,\n minutes,\n seconds,\n } = this.state;\n const {history} = this.props;\n const links = getHyperlinks(text);\n return !loadingPoster ? (\n <>\n \n
    \n
    \n
    history.goBack()} className={styles.backIcon}>\n \n
    \n history.push(`/profile/${poster.id}`)}>\n \n
    \n

    \n history.push(`/profile/${poster.id}`)}>\n {`${poster.first_name} ${poster.last_name}`} \n \n {eventID ? (\n history.push(`/events/${eventID}`)}>\n {`> ${eventName || ''}`}\n \n ) : groupID ? (\n history.push(`/groups/${groupID}`)}>\n {`> ${groupName || ''}`}\n \n ) : (\n eventName\n )}\n   • {howLongAgo(time)}\n {edited &&

    Edited

    }\n

    \n
    \n \n
    \n
    \n
    \n {workoutEventName ? (\n \n ) : null}\n \n {links?.length > 0 && this.state.graphData?.url ? (\n \n ) : null}\n {post_image && (\n this.setState({isModalOpen: true})}\n />\n )}\n
    \n \n \n

    {likeAmount > 0 && likeAmount}

    \n
    \n {commentAmount !== undefined && (\n

    {`${commentAmount} ${\n commentAmount != 1 ? 'comments' : 'comment'\n }`}

    \n )}\n
    \n \n\n \n {/* Looks like comments do not have open graph data returned */}\n (this.commentsRef = el)}>\n {comments.length > 0 &&\n comments.map(\n (comm) =>\n comm.content && (\n \n ),\n )}\n \n \n {!userProfile.getUserProfile().anonymous_profile && (\n \n )}\n {isModalOpen && (\n this.setState({isModalOpen: false})}\n liked={liked}\n likeAmount={likeAmount}\n onLikeClicked={this.handleLikeClicked}\n />\n )}\n \n ) : null;\n }\n}\n\nexport default withRouter(PostView);\n","import React, {useState} from 'react';\nimport styles from './RecordWorkout.module.css';\nimport Header from '../Header';\nimport {useHistory} from 'react-router-dom';\nimport TextInput from '../TextInput';\nimport CustomButton from '../CustomButton';\nimport CalendarIcon from '../svgs/CalenderIcon';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport DatePicker from 'react-datepicker';\nimport moment from 'moment';\nimport {isWorkoutValid} from '../../../../shared/utils/WorkoutValidationHelper';\nimport { isNullOrEmpty } from '../../../../shared/utils/Helpers';\n\nexport default function RecordWorkout() {\n const [miles, setMiles] = useState('');\n const [milesErrorText, setMilesErrorText] = useState('');\n const [stepsErrorText, setStepsErrorText] = useState('');\n const [timeErrorText, setTimeErrorText] = useState('');\n const [steps, setSteps] = useState('');\n const [hours, setHours] = useState('');\n const [minutes, setMinutes] = useState('');\n const [seconds, setSeconds] = useState('');\n const [loading, setLoading] = useState(false);\n\n const history = useHistory();\n\n\n const clearErrorWarnings = () => {\n setMilesErrorText('');\n setStepsErrorText('');\n setTimeErrorText('');\n };\n const convertToUTC = (time) => moment.utc(time.toISOString());\n const [workOutDate, setDate] = useState(\n moment(new Date()).utc(),\n );\n const handleDateChange = (date) => setDate(convertToUTC(date));\n const handleBack = () => {\n history.goBack()\n };\n\n const submitHandler = () => {\n clearErrorWarnings();\nif(isNullOrEmpty(miles.toString()) || isNullOrEmpty(steps.toString()) || hours.length == 0 || minutes.length == 0 || seconds.length == 0)\n{\n alert(\"Please enter all fields\")\n return\n}\n const {miles_error, steps_error, time_error} = isWorkoutValid(\n workOutDate,\n miles.toString(),\n steps.toString(),\n hours.toString(),\n minutes.toString(),\n seconds.toString(),\n );\n\n const duration = (\n parseInt(hours || 0) * 60 +\n parseInt(minutes || 0) +\n parseInt(seconds || 0) / 60\n ).toString();\n\n const payload = {\n entry_date: moment(workOutDate).format(\"YYYY-MM-DD\"),\n miles: parseFloat(miles) || 0,\n steps: parseInt(steps) || 0,\n minutes: parseFloat(parseFloat(duration).toFixed(2)) || 0,\n };\n\n let data = JSON.stringify(payload);\n\n if (miles_error || steps_error || time_error) {\n setMilesErrorText(miles_error);\n setStepsErrorText(steps_error);\n setTimeErrorText(time_error);\n return;\n } else {\n setLoading(true);\n\n rwbApi\n .putWorkout(data)\n .then(() => {\n setLoading(false);\n handleBack();\n })\n .catch((err) => {\n console.log(\"err\",err);\n setLoading(false);\n });\n }\n };\n\n return (\n <>\n {loading && (\n \n )}\n
    \n
    handleBack()} />\n
    \n
    \n \n
    \n \n {/*

    {location.state.eventStartTime}

    */}\n
    \n
    \n \n setMiles(e.target.value ? Number(e.target.value) : e.target.value)\n }\n error={milesErrorText}\n onEnter={submitHandler}\n min={0}\n />\n \n setSteps(e.target.value ? Number(e.target.value) : e.target.value)\n }\n className={styles.stepsInput}\n error={stepsErrorText}\n onEnter={submitHandler}\n min={0}\n />\n {/* {location.state.requiredUnit === 'minutes' && (\n \n Required:\n

    \n )} */}\n
    \n \n setHours(\n e.target.value ? Number(e.target.value) : e.target.value,\n )\n }\n min={0}\n />\n \n setMinutes(\n e.target.value ? Number(e.target.value) : e.target.value,\n )\n }\n className={styles.inputMinutes}\n min={0}\n />\n \n setSeconds(\n e.target.value ? Number(e.target.value) : e.target.value,\n )\n }\n min={0}\n />\n
    \n
    \n

    {timeErrorText}

    \n
    \n\n
    \n submitHandler()}\n buttonStyle={'primary'}\n />\n
    \n
    \n
    \n \n );\n}\n","import {WORKOUT_WARNINGS} from '../constants/OtherMessages';\n\nexport function isWorkoutValid(\n workoutEntryDate,\n miles,\n steps,\n hours,\n minutes,\n seconds,\n) {\n let workoutEntryDate_error = '';\n let miles_error = '';\n let steps_error = '';\n let time_error = '';\n\n const duration = (\n parseInt(hours || 0) * 60 +\n parseInt(minutes || 0) +\n parseInt(seconds || 0) / 60\n ).toString();\n\n const required_field = 'THIS FIELD IS REQUIRED';\n const number_required = 'PLEASE ENTER A NUMBER';\n\n if (!workoutEntryDate) {\n workoutEntryDate_error = required_field;\n }\n\n if (isNaN(miles)) {\n miles_error = number_required;\n }\n\n if (miles && miles.length > 7) {\n miles_error = WORKOUT_WARNINGS.milesDigit;\n }\n\n if (miles && parseFloat(miles) > 999.99) {\n miles_error = WORKOUT_WARNINGS.milesLength;\n }\n\n if (miles && miles.includes('.') && miles.split('.')[1].length > 2) {\n miles_error = WORKOUT_WARNINGS.milesDecimals;\n }\n\n if (isNaN(steps)) {\n steps_error = number_required;\n }\n\n if (steps && parseInt(steps) > 99999) {\n steps_error = WORKOUT_WARNINGS.stepsLength;\n }\n\n if (isNaN(hours) || isNaN(minutes) || isNaN(seconds)) {\n time_error = number_required;\n }\n\n if (duration && parseFloat(duration) > 1440) {\n time_error = WORKOUT_WARNINGS.timeLength;\n }\n return {\n workoutEntryDate_error: workoutEntryDate_error,\n miles_error: miles_error,\n steps_error: steps_error,\n time_error: time_error,\n };\n}\n","export const eventConfig = {\n // The various types of events, specified in the order in which you wish them to appear\n // If you change them here, you'll also have to update the backend script airtable_sync.py (as of 11/02 this is how we sync with fitpros airtable)\n // to support checkin challenge categories, the backend challenge model also has a hard coded list that must match these slugs.\n // Ultimately, across all whitelabels, an improvement would be to model these on the backend.\n group_event_options : {\n 'fitness-class': {\n display: 'Fitness Class',\n slug: 'fitness-class'\n },\n 'meditation-class': {\n display: 'Meditation Class',\n slug: 'meditation-class'\n },\n 'health-talk': {\n display: 'Health Talk',\n slug: 'health-talk'\n },\n 'team-building-session': {\n display: 'Team Building Session',\n slug: 'team-building-session'\n },\n 'onsite-mini-wellness-fair': {\n display: 'Onsite Mini Wellness Fair',\n slug: 'onsite-mini-wellness-fair'\n },\n 'onsite-wellness-fair': {\n display: 'Onsite Wellness Fair',\n slug: 'onsite-wellness-fair'\n },\n '1-to-1-service': {\n display: '1:1 Service',\n slug: '1-to-1-service'\n },\n 'carrier-session': {\n display: 'Carrier Session',\n slug: 'carrier-session'\n }\n },\n \n featured_lozenge_count: 8, // the number of featured lozenges to display on the event list (from the list above)\n default_event_tab: 'virtual', // the default event tab to display on events list.\n\n VIRTUAL_TIME_OPTIONS:{\n 'all': {\n display: 'All Times',\n slug: 'all'\n },\n 'all-day': {\n display: 'All-day Events',\n slug: 'all-day'\n }\n }\n};\n","import React, {Component} from 'react';\nimport {Switch, Link, Route, withRouter} from 'react-router-dom';\nimport EventDetail from './EventDetail';\nimport EventListItem from './EventListItem';\nimport styles from './Events.module.css';\nimport EventDetailAttendees from './EventDetailAttendees';\nimport CreateEventButton from './CreateEventButton';\nimport SearchBar from '../SearchBar';\nimport FiltersBar from './FiltersBar';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {userLocation} from '../../../../shared/models/UserLocation';\nimport {\n logAccessEventDetails,\n logSearch,\n logAccessMyEvents,\n logAccessUpcomingEvents,\n logAccessPastEvents,\n} from '../../../../shared/models/Analytics';\nimport {filters} from '../../models/Filters';\n\nimport Loading from '../Loading';\n\nimport MyEvents from './MyEvents';\nimport {MdWarning as WarningIcon} from 'react-icons/md';\n\nimport SearchGooglePlaces from '../SearchGooglePlaces';\nimport {debounce, httpsNext, urlToParamsObj} from '../../../../shared/utils/Helpers';\nimport PlacesList from './PlacesList';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport {\n geocodeByAddress,\n getLatLng,\n} from '../../react-places-autocomplete/dist/utils';\nimport ReusableTabs from '../ReusableTabs';\nimport {eventURLFormatter} from '../../../../shared/utils/eventURLFormatter';\nimport {\n EVENT_TAB_TYPES,\n EVENT_NAV_ELEMENTS,\n MY_EVENT_TYPES,\n GROUP_EVENT_NAV_ELEMENTS,\n GROUP_EVENT_TAB_TYPES,\n} from '../../../../shared/constants/EventTabs';\nimport {IconButton} from '@material-ui/core';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport {\n isCreateEventButtonVisible,\n} from '../../../../shared/utils/EventHelpers';\nimport Header from '../Header';\nimport PostView from '../feed/PostView';\nimport {\n VIRTUAL_EVENT_OPTIONS,\n VIRTUAL_GROUP_OPTIONS,\n} from '../../../../shared/constants/EventFilters';\nimport {\n DEFAULT_LOCAL_OPTIONS,\n DEFAULT_VIRTUAL_OPTIONS,\n} from '../../../../shared/constants/DefaultFilters';\nimport RecordWorkout from '../recordWorkout/RecordWorkout';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { EVENT_ERRORS } from '../../../../shared/constants/ErrorMessages';\nimport { eventConfig } from '../../../../shared/fitpros-project-info/eventConfig';\n\nconst SEARCHBAR_NAME_PLACEHOLDER = [\n 'Search for events',\n 'Search for virtual events...',\n 'Search for your events...',\n];\nconst SEARCHBAR_LOCATION_PLACEHOLDER = 'City or Zip';\n\n// on the front end, we simply set the defaut tab in eventConfig.\n// in testing BU, the default is always local regardless of the group type, so let's call this a RWBism and replace it with eventCongfig\n\nclass Events extends Component {\n constructor(props) {\n super(props);\n filters.getFilters();\n this.alertLimitUsersDisplayedShowed = false;\n this.yOffset = 0;\n this.user = userProfile.getUserProfile();\n\n const groupType = props.location.state?.groupType;\n const isVirtualInitial = eventConfig.default_event_tab === 'virtual'? true : false;\n const userLocationData = userLocation.getUserLocation();\n this.state = {\n lat: this.props.location.state?.groupLat || null,\n long: this.props.location.state?.groupLong || null,\n events: [],\n preferredChapterEvent: false,\n eventDistance: filters.eventDistance,\n eventCategory: filters.eventCategory, // \"all-activities\", \"yoga\", \"social\", etc\n eventDate: filters.eventDate,\n sortBy: filters.sortBy,\n virtualSubtype: filters.virtualSubtype, // \"all\", \"challenges\", \"workouts\"\n virtualEventCategory: filters.virtualEventCategory,\n virtualEventDate: filters.virtualEventDate,\n virtualSortBy: filters.virtualSortBy,\n eventFilterNavTab: filters.eventFilterNavTab,\n eventGroupOption: filters.eventGroupOption,\n virtualEventGroupOption: filters.virtualEventGroupOption,\n virtualTime: filters.virtualTime,\n search: '',\n event_ids: [],\n city: userLocationData?.city || '',\n isLoading: true,\n refreshing: false,\n loadingMore: false,\n stopFetching: false,\n server_error_text: null,\n noResultsFound: false,\n showLocationSearch: false,\n createVisible: false,\n locationSearchInput: '',\n locationError: null,\n chapterEventCreation: false,\n eventCreationTypeVisible: false,\n myEventsVisible: false,\n collapsedHeader: false,\n locationSuggestions: [],\n nextURL: null,\n activeTab: isVirtualInitial\n ? EVENT_TAB_TYPES.virtual\n : EVENT_TAB_TYPES.local,\n isAdmin: undefined, // remains undefined for event list tab, otherwise will be true or false\n selectedEventType: isVirtualInitial ? 1 : 0, // [0: 'local', 1: 'virtual', 2: 'my']\n activeMyEventsType: MY_EVENT_TYPES.hosting, // hosting || upcoming || past - default to hosting\n // groups\n groupId: props.match.params?.groupId || null,\n groupName: props.location.state?.groupName || '',\n groupType: groupType || '',\n eventTypes: props.match.params?.groupId\n ? GROUP_EVENT_NAV_ELEMENTS\n : EVENT_NAV_ELEMENTS,\n activeGroupEventType: 'all-activities', // applies to virtual/local\n activePastEventType: null,\n // challenges\n challengeId: props.match.params?.challengeId || null,\n challengeName: props.location.state?.challengeName || null,\n retrievedLastEvent: false,\n page:0\n };\n }\n\n componentDidMount() {\n if (!(filters.virtualEventGroupOption in VIRTUAL_GROUP_OPTIONS)) {\n filters.setFilter({\n virtualEventGroupOption:\n DEFAULT_VIRTUAL_OPTIONS.virtualEventGroupOption,\n });\n }\n // this is for sending users a link to set them on the virtual list\n const params = urlToParamsObj(this.props.location.search);\n if (params.is_virtual === 'true') {\n this.setState(\n {\n virtualSubtype:\n params.virtual_event_category || filters.virtualSubtype,\n virtualEventCategory: params.category || filters.virtualEventCategory,\n virtualSortBy: params.sort || filters.virtualSortBy,\n },\n () => {\n this.handleEventTypeChange(1);\n },\n );\n } else {\n // setting filters causes changes from the link to be overwritten\n this.setFilters();\n }\n window.addEventListener('scroll', this.trackScrolling);\n }\n\n trackScrolling = (event) => {\n event.preventDefault();\n if (this.state.isLoading) return; // prevent the user from loading the next page of events before the initial events are loaded\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement) && !this.state.retrievedLastEvent) {\n this.setState(\n (prevState) => ({\n page: prevState.page + 1,\n retrievedLastEvent: true,\n isLoading: true,\n }),\n () => {\n this.fetchEvents(this.state);\n },\n );\n window.removeEventListener('scroll', this.trackScrolling);\n }\n };\n\n hanldeLocationError = (err) => {\n // ReactPlacesAutocomplete has a very finicky loading state\n // in order to determine if it is done loading when there are zero results we check for the error instead\n if (err === 'ZERO_RESULTS')\n this.setState({locationError: 'No Results Found'});\n };\n\n setFilters() {\n filters.getFilters().then((previousFilters) => {\n this.setState(previousFilters, () => this.clearEvents());\n });\n }\n\n alertLimitUsersDisplayed() {\n if (!this.alertLimitUsersDisplayedShowed) {\n this.alertLimitUsersDisplayedShowed = true;\n errorAlert(EVENT_ERRORS.SOME_INTERESTED_AND_GOING);\n }\n }\n\n clearEvents = (search_props) => {\n this.setState(\n Object.assign(\n {\n events: [],\n noResultsFound: false,\n isLoading: true,\n loadingMore: true,\n stopFetching: false,\n page:0\n },\n search_props,\n ),\n () => {\n this.fetchEvents(this.state);\n },\n );\n return;\n };\n\n // initial load of EventsListView determines if the user is an admin\n // this is group specific and only called if a group id\n setIsAdmin = (isAdmin) => this.setState({isAdmin});\n\n // if on a group event list and isAdmin has not been retrieved, make the network call\n checkIfAdmin = () => {\n const {groupId, isAdmin, activeTab} = this.state;\n if (\n groupId &&\n isAdmin === undefined &&\n (activeTab === GROUP_EVENT_TAB_TYPES.local ||\n activeTab === GROUP_EVENT_TAB_TYPES.virtual)\n ) {\n return rwbApi\n .isGroupAdmin(groupId)\n .then((isAdmin) => {\n this.setIsAdmin(isAdmin);\n })\n .catch((err) => this.setIsAdmin(false));\n } else return new Promise((resolve) => resolve());\n };\n\n fetchEvents(state) {\n /* \n virtual and local events have their own saved filters with their own names\n eventURLformatter expects the name of the local values\n Because of this, we want to modify the values the eventURL formatter receives when on the virtual tab\n */\n if (state.activeTab === EVENT_TAB_TYPES.virtual && !state.groupId) {\n state.eventDate = state.virtualEventDate;\n state.sortBy = state.virtualSortBy;\n state.eventCategory = state.virtualEventCategory;\n state.eventGroupOption = state.virtualEventGroupOption;\n state.virtualTime = state.virtualTime;\n } else if (state.activeTab === EVENT_TAB_TYPES.virtual && state.groupId) {\n // ensure virtualSubtype is all when on a group's page\n state.virtualSubtype = VIRTUAL_EVENT_OPTIONS? 'all' : null;\n }\n if (state.groupId) {\n state.eventCategory = this.state.activeGroupEventType;\n state.eventDate = DEFAULT_LOCAL_OPTIONS.eventDate;\n state.sortBy = DEFAULT_LOCAL_OPTIONS.sortBy;\n state.eventGroupOption = null;\n }\n if (state.challengeId) {\n // ensure the is_virtual param is not set, all upcoming events are shown, and all activity types can be found\n state.activeTab = null;\n state.eventDate = DEFAULT_VIRTUAL_OPTIONS.virtualEventDate;\n state.eventCategory = DEFAULT_VIRTUAL_OPTIONS.virtualEventCategory;\n }\n this.checkIfAdmin().then(() => {\n eventURLFormatter(state, this.user)\n .then((result) => {\n const {urlParams, state} = result;\n // return results from virtual overwrite the value\n // look into not returning state from eventURLFormatter\n state.eventDate = filters.eventDate;\n state.sortBy = filters.sortBy;\n\n this.getEventsCall(urlParams, state);\n })\n .catch((err) => {\n errorAlert(err);\n this.setState({isLoading: false, loadingMore: false});\n });\n });\n }\n\n getEventsCall = (urlParams, state) => {\n let {events,retrievedLastEvent,page} = state;\n rwbApi\n .getMobileEvents(urlParams)\n .then((json) => {\n const {data, total_number_posts, next,count} = json;\n const total_number_pages = Math.floor(count / 10);\n let event_ids = [];\n if (data) {\n data.map((event) => {\n event_ids.push(event.id);\n });\n }\n\n rwbApi\n .getAllFollowedAttendees(event_ids)\n .then((followingAttendeesResult) => {\n let followingAttendeesObjs = [];\n for (let i = 0; i < followingAttendeesResult.length; i++) {\n const singleEvent = followingAttendeesResult[i];\n const eventAttendeesObj = {\n event_id: singleEvent.event_id,\n attendees: singleEvent.attendees,\n };\n followingAttendeesObjs.push(eventAttendeesObj);\n }\n this.setState(\n Object.assign(\n {\n isLoading: false,\n loadingMore: false,\n refreshing: false,\n total_number_pages,\n nextURL: httpsNext(next),\n },\n data\n ? {\n events: [\n ...events,\n ...this.addFollowAttendeesToEvents(\n data,\n followingAttendeesResult,\n ),\n ],\n }\n : {},\n {event_ids},\n total_number_posts === 0 ? {noResultsFound: true} : {},\n page >= total_number_pages ? {stopFetching: true} : {},\n ),\n );\n\n if (retrievedLastEvent && page < total_number_pages) {\n this.setState({retrievedLastEvent: false}, () =>\n window.addEventListener('scroll', this.trackScrolling),\n );\n }\n });\n })\n .catch((err) => {\n this.setState({\n isLoading: false,\n loadingMore: false,\n server_error_text: 'there was a problem with the server.',\n });\n alert('Server Error', 'Please try again later.');\n });\n };\n\n // needs a way to clean up or boost performance. This should ever only check a list of 10 events and all can have a follow, but improvement is desired\n addFollowAttendeesToEvents = (events, followingAttendeesObjs) => {\n for (let i = 0; i < events.length; i++) {\n for (let j = 0; j < followingAttendeesObjs.length; j++) {\n if (events[i].id.toString() === followingAttendeesObjs[j].event_id) {\n events[i].followingAttendees = followingAttendeesObjs[j].attendees;\n break;\n }\n }\n }\n return events;\n };\n\n // See google reverse geocode API documents for what `component` can be.\n extractAddressComponent(component, address_data) {\n for (let datum of address_data) {\n if (datum.types.includes(component)) {\n return datum;\n }\n }\n throw new Error(`Cannot find component ${component} in data.`);\n }\n\n extractLocale(addressComponents) {\n const city = this.extractAddressComponent('locality', addressComponents)\n .long_name;\n const state = this.extractAddressComponent(\n 'administrative_area_level_1',\n addressComponents,\n ).short_name;\n const zip = this.extractAddressComponent('postal_code', addressComponents)\n .long_name;\n\n const localeString = `${zip.slice(0, 5)} ${city}, ${state}`;\n return localeString;\n }\n\n addressFromLatLng = async (lat, lng) => {\n var geocoder = new window.google.maps.Geocoder();\n var OK = window.google.maps.GeocoderStatus.OK;\n\n var latlng = {lat: parseFloat(lat), lng: parseFloat(lng)};\n return new Promise(function (resolve, reject) {\n geocoder.geocode({location: latlng}, function (results, status) {\n if (status !== OK) {\n reject(status);\n }\n resolve(results);\n });\n });\n };\n\n selectCurrentLocationHandler = () => {\n try {\n navigator.geolocation.getCurrentPosition((position) => {\n const {latitude, longitude} = position.coords;\n if (latitude && longitude) {\n this.addressFromLatLng(latitude, longitude).then((results) => {\n let match;\n for (let result of results) {\n if (result.types.includes('street_address')) {\n match = result;\n }\n }\n const {address_components} = match;\n const street = this.extractAddressComponent(\n 'route',\n address_components,\n ).long_name;\n const city = this.extractAddressComponent(\n 'locality',\n address_components,\n ).long_name;\n const state = this.extractAddressComponent(\n 'administrative_area_level_1',\n address_components,\n ).short_name;\n const zip = this.extractAddressComponent(\n 'postal_code',\n address_components,\n ).long_name;\n const localeString = this.extractLocale(address_components);\n if (localeString && street && city && state && zip) {\n userLocation.saveToUserLocation({\n lat: latitude,\n long: longitude,\n locale: localeString,\n street,\n city,\n state,\n zip,\n });\n\n this.handleGoogleResponse({city, lat: latitude, long: longitude});\n } else {\n throw Error('Location can not be found');\n }\n });\n } else {\n throw Error('Location can not be found');\n }\n });\n } catch (error) {\n alert(error.message);\n }\n };\n\n handleGoogleResponse = (response) => {\n if (response) {\n this.setState({locationSearchInput: ''});\n this.clearEvents({\n lat: response.lat.toString(),\n long: response.long.toString(),\n city: response.city,\n });\n }\n };\n\n submitSearchEvents = (search_props) => {\n logSearch();\n this.clearEvents(search_props);\n };\n\n selectLocationHandler = (address, city) => {\n geocodeByAddress(address)\n .then((results) => getLatLng(results[0]))\n .then((latLng) =>\n this.handleGoogleResponse({\n city,\n lat: latLng.lat,\n long: latLng.lng,\n }),\n )\n .catch(() => alert('Error with selecting the location.'));\n };\n\n getSuggestionsHandler = (suggestions) => {\n this.setState({locationSuggestions: suggestions});\n };\n\n loadAttendees(id) {\n return rwbApi.getAllMobileAttendees(id).catch((error) => {\n throw error;\n });\n }\n\n getSuggestionsDebounce = debounce(this.getSuggestionsHandler, 500);\n\n handleEventTypeChange = (index) => {\n const {groupId, eventTypes} = this.state;\n this.setState(\n {\n selectedEventType: index,\n activeTab: eventTypes[index].key,\n eventCategory: 'all-activities',\n activeGroupEventType: 'all-activities',\n },\n () => this.submitSearchEvents({search: ''}),\n );\n\n // log access to my events\n if (!groupId && EVENT_NAV_ELEMENTS[index].key === EVENT_TAB_TYPES.my)\n logAccessMyEvents();\n };\n\n onFilterMyEvents = (activeMyEventsType) => {\n this.setState({activeMyEventsType}, this.submitSearchEvents);\n\n if (activeMyEventsType === MY_EVENT_TYPES.upcoming)\n logAccessUpcomingEvents();\n else if (activeMyEventsType === MY_EVENT_TYPES.past) logAccessPastEvents();\n };\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.trackScrolling);\n }\n\n toggleGroupEventLozenge = (value) => {\n if (value !== this.state.activeGroupEventType) {\n this.setState({activeGroupEventType: value});\n this.clearEvents({eventCategory: value});\n } else {\n this.setState({activeGroupEventType: 'all-activities'});\n this.clearEvents({eventCategory: 'all-activities'});\n }\n };\n\n changeActivePastEventType = (type) => {\n const {activePastEventType} = this.state;\n if (activePastEventType === type) {\n this.setState({activePastEventType: null});\n } else {\n this.setState({activePastEventType: type});\n }\n this.clearEvents();\n };\n\n render() {\n const userLocationData = userLocation.getUserLocation();\n const {match, history} = this.props;\n const {\n isLoading,\n events,\n search,\n city,\n locationSearchInput,\n locationSuggestions,\n activeTab,\n selectedEventType,\n activeMyEventsType,\n lat,\n long,\n groupId,\n groupName,\n eventTypes,\n activeGroupEventType,\n activePastEventType,\n createVisible,\n groupType,\n isAdmin,\n challengeId,\n challengeName,\n } = this.state;\n return (\n \n {isLoading && (\n \n )}\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {(groupId || challengeId) && (\n history.goBack()}\n noBottomPadding={true}\n />\n )}\n {!challengeId && (\n
    \n this.setState({search: value})}\n onSubmit={this.submitSearchEvents}\n onClearSearch={() => {\n this.setState({search: ''}, this.submitSearchEvents);\n }}\n placeholder={SEARCHBAR_NAME_PLACEHOLDER[selectedEventType]}\n />\n {selectedEventType === 0 && (\n {\n this.setState({locationSearchInput: value});\n value.length < 3 && this.getSuggestionsHandler([]);\n }}\n onClearSearch={() => {\n // locationSearchInput is cleared after making a selection, make a search and get the initial results\n if (!locationSearchInput) {\n this.clearEvents({\n city: userLocationData?.city || SEARCHBAR_LOCATION_PLACEHOLDER,\n lat: this.props.location.state?.groupLat || '',\n long: this.props.location.state?.groupLong || '',\n });\n }\n this.setState({locationSearchInput: ''});\n this.getSuggestionsHandler([]);\n }}\n handleError={this.hanldeLocationError}\n getSuggestions={this.getSuggestionsDebounce}\n placeholder={city || SEARCHBAR_LOCATION_PLACEHOLDER}\n lat={lat}\n type=\"(regions)\"\n />\n )}\n
    \n )}\n\n {locationSearchInput.length > 0 ? (\n \n ) : (\n <>\n {!challengeId && (\n <>\n name)}\n onChangeHandler={this.handleEventTypeChange}\n />\n\n this.setFilters()}\n activeTab={activeTab}\n activeMyEventsType={activeMyEventsType}\n onFilterMyEvents={this.onFilterMyEvents}\n // only using props for virtual due to link\n virtualSubtype={this.state.virtualSubtype}\n virtualSortBy={this.state.virtualSortBy}\n virtualEventDate={this.state.virtualEventDate}\n virtualEventCategory={this.state.virtualEventCategory}\n groupId={groupId}\n activeGroupEventActivity={activeGroupEventType}\n changeGroupEventActivity={this.toggleGroupEventLozenge}\n activePastEventType={activePastEventType}\n onChangeActivePastEventType={\n this.changeActivePastEventType\n }\n />\n \n )}\n\n {events.length > 0 && (\n
    \n {events.map((event, i) => (\n \n \n \n ))}\n
    \n )}\n {/* TODO: Figure out if should be displayed even when events.length is zero */}\n {isCreateEventButtonVisible(\n groupName,\n activeTab,\n isLoading,\n createVisible,\n this.user,\n groupType,\n isAdmin,\n this.props.location.state?.joinedGroup,\n challengeId,\n ) && (\n \n )}\n\n {!events.length && !isLoading && (\n
    \n \n

    The selected filters produced no events.

    \n

    Please adjust filter settings.

    \n
    \n )}\n \n )}\n
    \n
    \n \n \n );\n }\n}\n\nexport default withRouter(Events);\n","import React, {Component} from 'react';\nimport {isPostVisible} from '../../../../shared/utils/FeedHelpers';\nimport AggregateFeedListItem from './AggregateFeedListItem';\nimport styles from './Feed.module.css';\n\nexport default class AggregateFeedList extends Component {\n render() {\n const {\n userFeed,\n eventID,\n type,\n origin,\n mergeNewPost,\n pinnedPost,\n } = this.props;\n return (\n
    \n {userFeed.length > 0 && userFeed.map(\n (singleFeed, i) =>\n isPostVisible(pinnedPost, singleFeed) && (\n \n ),\n )}\n
    \n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction NotificationTabIcon(props) {\n return (\n <>\n {props.notification ? (\n \n \n \n ) : (\n \n \n \n )}\n \n );\n}\n\nNotificationTabIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#828588',\n filledIcon: true,\n};\n\nNotificationTabIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n filledIcon: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n};\n\nexport default NotificationTabIcon;\n","import React, {Component} from 'react';\nimport styles from './UpdateProfileOverlay.module.css';\nimport {\n NEW_V2,\n NEW_V2_CONTENT,\n NEW_V2_LINK,\n NEW_V2_LINK_TEXT,\n SOCIAL_FEEDS,\n SOCIAL_FEEDS_CONTENT,\n EVENT_CREATION,\n EVENT_CREATION_CONTENT,\n UPDATE_PROFILE,\n UPDATE_PROFILE_CONTENT,\n} from '../../../../shared/constants/OnboardingMessages';\nimport EventCreationExample from '../../../../shared/project-info/images/EventCreationExample.png';\nimport SocialProfileExample from '../../../../shared/project-info/images/SocialProfileExample.png';\nimport UserFeedExample from '../../../../shared/project-info/images/UserFeedExample.png';\nimport ChevronRightIcon from '../svgs/ChevronRightIcon';\n\nexport default class UpdateProfileOverlay extends Component {\n constructor() {\n super();\n this.state = {\n screen: 0,\n };\n }\n\n updateScreen = (direction) => {\n const {screen} = this.state;\n if (direction === 'forward' && screen < 3)\n this.setState({screen: this.state.screen + 1});\n else if (direction === 'backward' && screen > 0)\n this.setState({screen: this.state.screen - 1});\n };\n\n render() {\n const {screen} = this.state;\n return (\n
    \n
    \n
    \n
    \n this.updateScreen('backward')}>\n \n
    \n
    \n {screen === 0 ? (\n
    \n

    {NEW_V2}

    \n
    \n

    {NEW_V2_CONTENT}

    \n
    \n \n {NEW_V2_LINK_TEXT}\n \n
    \n ) : null}\n {screen === 1 ? (\n
    \n

    {SOCIAL_FEEDS}

    \n
    \n

    {SOCIAL_FEEDS_CONTENT}

    \n
    \n \"Feed\n
    \n ) : null}\n {screen === 2 ? (\n
    \n

    {EVENT_CREATION}

    \n
    \n

    {EVENT_CREATION_CONTENT}

    \n
    \n \n
    \n ) : null}\n {screen === 3 ? (\n
    \n

    {UPDATE_PROFILE}

    \n
    \n

    {UPDATE_PROFILE_CONTENT}

    \n
    \n \n
    \n ) : null}\n
    \n this.updateScreen('forward')}>\n \n
    \n
    \n
    \n
    \n {screen !== 3 ? (\n <>\n this.setState({screen: 0})}\n />\n this.setState({screen: 1})}\n />\n this.setState({screen: 2})}\n />\n this.setState({screen: 3})}\n />\n \n ) : (\n \n Continue\n \n )}\n
    \n
    \n
    \n \n );\n }\n}\n","import React, {Component} from 'react';\nimport AggregateFeedList from './AggregateFeedList';\nimport SearchBar from '../SearchBar';\nimport styles from './Feed.module.css';\nimport CreatePostButton from './CreatePostButton';\nimport {Switch, Route, withRouter} from 'react-router-dom';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport {logAccessNotifications} from '../../../../shared/models/Analytics';\nimport NotificationIcon from '../svgs/NotificationIcon';\nimport {Grid} from '@material-ui/core';\nimport PostView from './PostView';\nimport UsersList from './UsersList';\nimport debounce from 'lodash.debounce';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport UpdateProfileOverlay from '../profile/UpdateProfileOverlay';\nimport {isUpdateNeeded} from '../../../../shared/utils/Helpers';\nimport {\n FEED_VERSION,\n UPDATED_FEED_VERSION,\n} from '../../../../shared/constants/OnboardingVersions';\nimport {\n GET_VERSION_ERROR,\n STREAM_ERRORS,\n USER_SEARCH_ERROR,\n} from '../../../../shared/constants/ErrorMessages';\nimport {getMissingInfoSections} from '../../../../shared/utils/OnboardingChecks';\nimport {FEED_INSTRUCTIONS} from '../../../../shared/constants/OtherMessages';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport AggregateFeedListItem from './AggregateFeedListItem';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { filterRemovedEvents } from '../../../../shared/utils/FeedHelpers';\nconst pJSON = require('../../../package.json');\n\nconst DEBOUNCE_MS = 500;\n\nclass Feed extends Component {\n constructor(props) {\n super(props);\n this.state = {\n // createVisible: false,\n updateProfileVisible: false,\n isLoading: false,\n isLoadingMore: false,\n loadingUsers: false,\n search: '',\n userFeed: [],\n retrievedLastPost: false,\n usersList: [],\n pinnedPost: [],\n unseenNotifications: false,\n intervalId: null,\n };\n this.incompleteSections = [];\n this.user = userProfile.getUserProfile();\n }\n\n componentDidMount() {\n this.getUnseenNotifications();\n\n const newAccount = this.props.location.state?.newAccount;\n this.getFeed();\n if(newAccount)\n {\n if(projectConfig.hasPayment)\n {\n this.props.history.push({\n pathname: '/membershipoptionview',\n state: {\n newAccount:this.props.location.state?.newAccount\n },\n });\n }\n }\n // always update web_version on launch\n // only modify saved_version after onboarding\n rwbApi.updateAppVersion(pJSON.version, 'web').then((savedAppVersion) => {\n if (savedAppVersion === GET_VERSION_ERROR) return;\n return;\n // show most recent onboard process if a new account\n if (newAccount) {\n this.setState({updateProfileVisible: true});\n }\n if (isUpdateNeeded(savedAppVersion.web_version, FEED_VERSION))\n this.setState({updateProfileVisible: true});\n });\n window.addEventListener('scroll', this.trackScrolling);\n\n let intervalId = setInterval(() => {\n this.getUnseenNotifications();\n }, 60 * 3000);\n\n this.setState({intervalId: intervalId});\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.trackScrolling);\n if (this.state.intervalId) {\n clearInterval(this.state.intervalId);\n }\n }\n\n trackScrolling = (event) => {\n event.preventDefault();\n // if (this.props.location.pathname !== '/feed') return;\n\n const wrappedElement = document.getElementById('root');\n // when switching to the tab the bottom is considered reached, but there are no posts\n // this puts the app trying to load more when it should not be\n // on start loading more when the bottom is reached AND there is some data\n if (hasReachedBottom(wrappedElement) && this.state.userFeed.length > 0) {\n this.setState({retrievedLastPost: true}, this.handleLoadMore);\n window.removeEventListener('scroll', this.trackScrolling);\n }\n };\n\n getFeed = () => {\n this.setState({isLoading: true});\n // prepending the most recent result mixes up types, text, and reactions\n // to avoid that, clear out everything and reload everything\n const currentFeed = this.state.userFeed;\n this.setState({userFeed: []});\n Promise.all([this.getPinnedPost(), this.getTimeline()])\n .then(([pinnedPost, timeline]) => {\n this.setState({\n pinnedPost: pinnedPost?.data?.results,\n userFeed: filterRemovedEvents(timeline.data.results),\n isLoading: false,\n });\n })\n .catch((error) => {\n errorAlert(STREAM_ERRORS.FEED_RETRIEVAL);\n this.setState({isLoading: false, userFeed: currentFeed});\n });\n };\n\n getTimeline = () => {\n return rwbApi.getTimelineFeed().then((timeline) => {\n return timeline;\n });\n };\n\n // Not all projects have a community leader account set up. Currently available on FitPros and DBA prod\n getPinnedPost = () => {\n return rwbApi.getPinnedPost().then((pinnedPost) => {\n return pinnedPost;\n });\n };\n\n handleLoadMore = () => {\n // only try to retrieve more from the feed if it is not already retrieving\n const posts = this.state.userFeed;\n const lastPost = posts[posts.length - 1];\n this.setState({isLoadingMore: true});\n //lastPost check needed because window listener is active on all pages\n if (this.state.retrievedLastPost && lastPost) {\n rwbApi.getTimelineFeed(lastPost.id).then((result) => {\n if (result.data.results.length > 0) {\n this.setState({\n userFeed: [...this.state.userFeed, ...filterRemovedEvents(result.data.results)],\n isLoadingMore: false,\n retrievedLastPost: false,\n });\n window.addEventListener('scroll', this.trackScrolling);\n } else this.setState({isLoadingMore: false});\n });\n }\n };\n\n searchUsers = (text) => {\n rwbApi\n .searchUser(text)\n .then((result) => {\n this.setState({usersList: result, loadingUsers: false});\n })\n .catch(() => {\n errorAlert(USER_SEARCH_ERROR);\n this.setState({usersList: [], loadingUsers: false});\n });\n };\n\n debouncedSearchUsers = debounce(this.searchUsers, DEBOUNCE_MS);\n\n // display search text and indicate to the user that data is loading\n searchUserHandler = (text) => {\n this.setState({search: text, loadingUsers: true});\n this.debouncedSearchUsers(text);\n };\n\n mergeNewPost = () => this.getFeed();\n\n // used when finishing onboarding process\n updateProfile = () => {\n rwbApi.updateAppVersion(UPDATED_FEED_VERSION);\n this.setState({updateProfileVisible: false});\n const missingSections = getMissingInfoSections(this.user);\n if (\n !missingSections.militaryComplete ||\n !missingSections.personalComplete ||\n !missingSections.privacyComplete\n )\n this.props.history.push('/profile/edit');\n };\n\n getUnseenNotifications = () => {\n const userID = userProfile.getUserProfile().id;\n if (userID) {\n rwbApi.getUnseenNotifications().then((result) => {\n this.setState({unseenNotifications: result.data > 0});\n });\n }\n };\n\n render() {\n const {\n search,\n loadingUsers,\n isLoading,\n userFeed,\n isLoadingMore,\n usersList,\n updateProfileVisible,\n pinnedPost,\n unseenNotifications,\n } = this.state;\n\n const {history} = this.props;\n\n return (\n
    \n {/* {updateProfileVisible ? (\n \n ) : null} */}\n {isLoading && (\n \n )}\n
    \n \n \n \n \n \n
    \n {}}\n onClearSearch={() => this.setState({search: ''})}\n />\n {\n history.push('/notifications');\n this.setState({unseenNotifications: false});\n logAccessNotifications();\n }}\n className={styles.notificationsButton}>\n \n \n
    \n\n {search !== '' ? (\n \n this.props.history.push(`/profile/${user.id}`)\n }\n />\n ) : (\n <>\n {pinnedPost !== undefined && pinnedPost.length > 0 && (\n null}\n />\n )}\n {userFeed.length > 0 && (\n <>\n \n {isLoadingMore && (\n \n )}\n \n )}\n\n {userFeed.length === 0 && !isLoading && (\n \n

    \n {FEED_INSTRUCTIONS}\n

    \n
    \n )}\n\n {!this.user.anonymous_profile && (\n \n )}\n \n )}\n
    \n
    \n
    \n
    \n );\n }\n}\n\nexport default withRouter(Feed);\n","// Versions are the initial versions of the public release\nconst FEED_VERSION = \"0.0.1\";\nconst GROUP_VERSION = \"0.0.1\"\n\n// Updated versions are one minor version higher of the public relased version\n// this is to keep updating past a version before a different onboarding process happens, to a screen that might not be visited\n// ex. Feed tab and group onboarding are on different screens. Updating the version after going through the feed onboarding,\n// but the user does not access the group tab could prevent viewing that onboarding information\nconst UPDATED_FEED_VERSION = \"0.0.1\";\n\nexport {FEED_VERSION, UPDATED_FEED_VERSION, GROUP_VERSION}\n","import { isMilitaryUser } from \"./Helpers\";\n\nfunction getMissingInfoSections(user) {\n let personalComplete = true;\n let militaryComplete = true;\n let privacyComplete = true;\n if (\n !user.email ||\n !user.email_verified ||\n !user.location.address ||\n !user.first_name ||\n !user.last_name\n )\n personalComplete = false;\n const militaryUser = isMilitaryUser(user.service_info.status);\n if (militaryUser) {\n // TODO set this up better per client\n if (\n user.service_info.culturally_and_linguistically_diverse !== true ||\n user.service_info.culturally_and_linguistically_diverse !== false\n )\n militaryComplete = false;\n else if (!user.service_info.service_type) militaryComplete = false;\n }\n return {personalComplete, militaryComplete, privacyComplete};\n}\n\nexport {getMissingInfoSections};\n","import React, {Component} from 'react';\nimport {Link, withRouter} from 'react-router-dom';\nimport {capitalizeFirstLetter} from '../../../../shared/utils/Helpers';\nimport styles from './GroupCard.module.css';\n\nclass GroupCard extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n handlePress = () => {\n const {onDetailOpen, searchPressed} = this.props;\n // indicate that a group has been pressed, used as a way to remove onboarding message\n if (onDetailOpen) onDetailOpen();\n // if found via searching, clear results and return the groups tab to show results instead of search bar\n if (searchPressed) searchPressed();\n };\n\n render() {\n // when type (activity, chapter, etc) is included, text is to the right of the images instead of under. This is used for the search screen\n const {id, image, name, kind} = this.props.group;\n const {horizontal, favorites} = this.props;\n\n // TODO: favorites groups design is not completed\n return (\n \n \n \n\n {horizontal ? (\n
    \n

    {name}

    \n
    {`${capitalizeFirstLetter(kind)} Group`}
    \n
    \n ) : (\n

    {name}

    \n )}\n \n \n );\n }\n}\n\nexport default withRouter(GroupCard);\n","import React, {Component, createRef} from 'react';\nimport GroupCard from './GroupCard';\nimport styles from './GroupContainer.module.css';\nimport Loading from '../Loading';\nimport {ClipLoader} from 'react-spinners';\n\nconst EMPTY_LIST_MSG = \"You currently aren't in any groups.\";\n\nexport default class GroupContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {};\n\n this.scrollContainerRef = createRef();\n }\n\n isFavorites = () => {\n return this.props.title === 'favorites';\n };\n\n handleHorizontalScroll = (e) => {\n e.preventDefault();\n\n this.scrollContainerRef.current.scrollTo({\n top: 0,\n left: this.scrollContainerRef.current.scrollLeft + e.deltaY,\n behaviour: 'smooth', // for smooth scrolling\n });\n };\n\n determineEmptyMessage = () => {\n const {title} = this.props;\n if (title === 'my groups') return EMPTY_LIST_MSG;\n else if (title === 'favorites') return 'Favorite a group to add it here.';\n else if (title === 'nearby groups') return 'No groups within 50 miles.';\n // not sure if this will be needed, keeping as a safety measure\n };\n\n render() {\n const {title, data, onDetailOpen, isLoading} = this.props;\n\n return (\n \n

    {title}

    \n {isLoading ? (\n
    \n \n
    \n ) : (\n \n {data?.length > 0 ? (\n data.map((group, i) => (\n \n ))\n ) : (\n

    {this.determineEmptyMessage()}

    \n )}\n \n )}\n \n );\n }\n}\n","import React from 'react';\nimport styles from './ExpandingText.module.css';\nimport {useState} from 'react';\n\nconst ExpandingText = ({text, containerStyle}) => {\n const [isExpanded, setIsExpanded] = useState(false);\n return (\n <>\n {text && text.length > 0 && (\n
    \n

    {text}

    \n
    \n setIsExpanded(!isExpanded)}>\n {isExpanded ? 'Show less...' : 'Show more...'}\n \n
    \n )}\n \n );\n};\n\nexport default ExpandingText;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class MyProfileIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nMyProfileIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#828588',\n filledIcon: true,\n};\n\nMyProfileIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n filledIcon: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class EventsIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nEventsIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#828588',\n filledIcon: true,\n};\n\nEventsIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n filledIcon: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport {Link, withRouter} from 'react-router-dom';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport styles from './GroupDetail.module.css';\nimport ExpandingText from '../ExpandingText';\nimport Loading from '../Loading';\nimport {\n capitalizeFirstLetter,\n putUserFirst,\n} from '../../../../shared/utils/Helpers';\nimport AvatarList from '../AvatarList';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {isDev} from '../../../../shared/utils/IsDev';\nimport {GROUP_ERRORS, STREAM_ERRORS} from '../../../../shared/constants/ErrorMessages';\nimport CreatePostButton from '../feed/CreatePostButton';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport FeedList from '../feed/FeedList';\n\n// SVGs\nimport AccountIcon from '../svgs/MyProfileIcon';\nimport CheckIcon from '../svgs/CheckIcon';\nimport EventsIcon from '../svgs/EventsIcon';\nimport DetailHeader from '../DetailHeader';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nclass GroupDetail extends Component {\n constructor(props) {\n super(props);\n const {groupId} = props.match?.params;\n this.user = userProfile.getUserProfile();\n\n this.state = {\n groupId,\n isLoading: true,\n joinedGroup: false,\n favoritedGroup: false,\n photo: '',\n name: '',\n type: '',\n description: '',\n eventCount: 0,\n memberCount: 0,\n eventsVisible: false,\n photo_url: '',\n sponsored_photo_url: '',\n members: [],\n copyMessage: '',\n groupLat: '',\n groupLong: '',\n groupFeed: [],\n createPostVisible: false,\n isLoadingMore: false,\n retrievedLastPost: false,\n joinStatusChanging: false,\n activeGroup: true,\n };\n }\n\n componentDidMount = () => {\n this.loadGroupAndFeed();\n\n window.addEventListener('scroll', this.trackScrolling);\n };\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.trackScrolling);\n }\n\n trackScrolling = (event) => {\n event.preventDefault();\n\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n this.handleLoadMore();\n window.removeEventListener('scroll', this.trackScrolling);\n }\n };\n\n loadGroupAndFeed = () => {\n if (!this.state.isLoading) this.setState({isLoading: true}); // this function will be called after adding a new post, in that case set isLoading to true\n Promise.all([this.loadGroup(), this.getFeed()]).then(\n ([groupResult, feedResult]) => {\n this.setState({\n photo_url: groupResult.image,\n name: groupResult.name,\n type: groupResult.kind,\n description: groupResult.description,\n memberCount: groupResult.members_count,\n members: putUserFirst(groupResult.members, groupResult.joined),\n eventCount: groupResult.event_count,\n groupLat: groupResult?.location?.latitude || 0,\n groupLong: groupResult?.location?.longitude || 0,\n joinedGroup: groupResult.joined,\n activeGroup: groupResult.active,\n isLoading: false,\n groupFeed: feedResult,\n });\n },\n );\n };\n\n loadGroup = () =>\n rwbApi\n .getGroup(this.state.groupId)\n .then((result) => result)\n .catch((err) => {\n errorAlert(GROUP_ERRORS.LOAD);\n this.props.history.goBack();\n });\n\n getFeed = () =>\n rwbApi\n .getGroupFeed(this.state.groupId)\n .then((result) => result.data.results)\n .catch((err) => {\n errorAlert(STREAM_ERRORS.GROUP_FEED);\n });\n\n handleLoadMore = () => {\n const {isLoadingMore, retrievedLastPost, groupId, groupFeed} = this.state;\n if (!isLoadingMore && !retrievedLastPost && groupFeed?.length > 0) {\n this.setState({isLoadingMore: true});\n const lastPost = groupFeed[groupFeed.length - 1].id;\n rwbApi\n .getGroupFeed(groupId, lastPost)\n .then((result) => {\n this.setState({\n groupFeed: [...groupFeed, ...result.data.results],\n isLoadingMore: false,\n retrievedLastPost: result.data.results.length !== 10,\n });\n })\n .catch((err) => {\n errorAlert(STREAM_ERRORS.GROUP_FEED);\n });\n }\n };\n\n changeJoinStatus = () => {\n if (this.state.joinedGroup) this.leaveGroup();\n else this.joinGroup();\n };\n\n joinGroup = () => {\n this.userJoined();\n this.setState({joinStatusChanging: true});\n rwbApi\n .joinGroup(this.state.groupId)\n .then(() => {\n this.props.updateJoined();\n this.setState({joinStatusChanging: false});\n })\n .catch((err) => {\n this.userLeft();\n this.setState({joinStatusChanging: false});\n errorAlert(GROUP_ERRORS.JOIN);\n });\n };\n\n leaveGroup = () => {\n this.userLeft();\n this.setState({joinStatusChanging: true});\n rwbApi\n .leaveGroup(this.state.groupId)\n .then(() => {\n this.props.updateJoined();\n this.setState({joinStatusChanging: false});\n })\n .catch(() => {\n this.userJoined();\n this.setState({joinStatusChanging: false});\n errorAlert(GROUP_ERRORS.LEAVE);\n });\n };\n\n userJoined = () => {\n const user = userProfile.getUserProfile();\n let membersList = Array.from(this.state.members);\n membersList.unshift(user);\n this.setState({\n joinedGroup: true,\n memberCount: this.state.memberCount + 1,\n members: membersList,\n });\n };\n\n userLeft = () => {\n let membersList = Array.from(this.state.members);\n // will server always return this user in the badges, and will they always be first?\n membersList.shift();\n this.setState({\n joinedGroup: false,\n memberCount: this.state.memberCount - 1,\n members: membersList,\n });\n };\n\n changeFavoriteStatus = () => {\n // this.setState((prevState) => ({favoritedGroup: !prevState.favoritedGroup}));\n };\n\n // determine if user has joined and favorited the group\n getGroupStatus = () => {\n rwbApi.getGroupRelation().then((result) => {\n this.setState({\n joinedGroup: result.joined,\n favoritedGroup: result.favorited,\n });\n });\n };\n\n copyGroupURL = () => {\n const {groupId} = this.state;\n // logShare(); // TODO: Add Groups logs\n navigator.clipboard.writeText(\n isDev()\n ? `${projectConfig.stagingURL}groups/${groupId}`\n : `${projectConfig.prodURL}groups/${groupId}`,\n );\n this.setState({copyMessage: 'Copied!'});\n setTimeout(() => {\n this.setState({copyMessage: ''});\n }, 3000);\n };\n\n render() {\n const {\n groupId,\n isLoading,\n photo_url,\n sponsored_photo_url,\n name,\n type,\n description,\n joinedGroup,\n favoritedGroup,\n copyMessage,\n memberCount,\n members,\n eventCount,\n isLoadingMore,\n groupFeed,\n } = this.state;\n const {history} = this.props;\n\n return (\n
    \n {isLoading ? (\n \n ) : (\n <>\n \n
    \n {sponsored_photo_url && (\n \n )}\n

    {name}

    \n
    {`${capitalizeFirstLetter(\n type,\n )} Group`}
    \n
    \n
    \n {/* \n \n
    */}\n \n {joinedGroup ? (\n \n ) : (\n \n )}\n

    {joinedGroup ? 'Joined' : 'Join'}

    \n
    \n
    \n {\n history.push({\n pathname: `/groups/${groupId}/events`,\n state: {\n groupName: name,\n groupType: type,\n groupLat: this.state.groupLat,\n groupLong: this.state.groupLong,\n joinedGroup: this.state.joinedGroup,\n },\n });\n }}>\n \n

    {`${eventCount} ${\n eventCount === 1 ? 'Event' : 'Events'\n }`}

    \n
    \n \n \n \n \n \n \n
    \n {groupFeed?.length > 0 && (\n \n )}\n {isLoadingMore && (\n \n )}\n
    \n {!this.user.anonymous_profile &&\n joinedGroup &&\n this.state.activeGroup && (\n \n )}\n \n )}\n \n );\n }\n}\n\nexport default withRouter(GroupDetail);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class HandPointerIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nHandPointerIcon.defaultProps = {\n width: 20,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nHandPointerIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport {\n CHAPTER_GROUP,\n MORE_GROUPS,\n} from '../../../../shared/constants/OnboardingMessages';\nimport HandPointerIcon from '../svgs/HandPointerIcon';\nimport styles from './GroupMessages.module.css';\n\nconst ICON_WIDTH = 50; // width of the icon is 83% of its height\nconst ICON_HEIGHT = 60;\n\nexport default class GroupMessages extends Component {\n render() {\n return (\n
    \n
    \n \n
    \n

    {CHAPTER_GROUP}

    \n

    {MORE_GROUPS}

    \n
    \n \n
    \n
    \n );\n }\n}\n","import React from 'react';\nimport {NO_GROUPS_FOUND} from '../../../../shared/constants/ErrorMessages';\nimport GroupCard from './GroupCard';\nimport styles from './SearchSection.module.css';\n\nconst SearchSection = ({section, loading, searchPressed, searchEmpty}) => (\n
    \n {!searchEmpty &&

    {section?.title}

    }\n {section?.data.map((group, i) => (\n
    \n \n
    \n ))}\n {!loading && !searchEmpty && !section?.data.length && (\n
    \n

    {NO_GROUPS_FOUND}

    \n
    \n )}\n
    \n);\n\nexport default SearchSection;\n","import React from 'react';\nimport Loading from '../Loading';\nimport styles from './SearchGroupsList.module.css';\nimport SearchSection from './SearchSection';\nimport {GROUP_SEARCH_INSTRUCTIONS} from '../../../../shared/constants/OtherMessages';\nimport {NO_GROUPS_TIP} from '../../../../shared/constants/ErrorMessages';\n\nconst SearchGroupsList = ({groups, loading, searchPressed, searchEmpty}) => (\n
    \n \n {/* default message */}\n {searchEmpty && !loading ? (\n

    {GROUP_SEARCH_INSTRUCTIONS}

    \n ) : // results\n groups[0]?.data.length !== 0 || groups[1]?.data.length !== 0 ? (\n <>\n \n \n \n ) : !loading ? (\n // no results for any section message\n

    {NO_GROUPS_TIP}

    \n ) : null}\n
    \n);\n\nexport default SearchGroupsList;\n","import React from 'react';\nimport Attendee from '../events/Attendee';\nimport styles from './GroupMembersList.module.css';\n\nconst GroupMembersList = ({label, data, onSelect, isSponsor}) => (\n <>\n

    {label}

    \n {data.map((item, i) => (\n \n ))}\n \n);\n\nexport default GroupMembersList;\n","import React, {Component} from 'react';\nimport Header from '../Header';\nimport SearchBar from '../SearchBar';\nimport styles from './GroupMembers.module.css';\nimport GroupMembersList from './GroupMembersList';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport debounce from 'lodash.debounce';\nimport {USER_SEARCH_ERROR} from '../../../../shared/constants/ErrorMessages';\nimport UsersList from '../feed/UsersList';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\n\nconst DEBOUNCE_MS = 500;\n\nexport class GroupMembers extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n groupId: props.match.params?.groupId,\n groupName: props.location.state?.groupName,\n admins: [],\n members: [],\n loading: true,\n loadingMore: false,\n // search group members\n search: '',\n searchingMembers: false,\n searchResults: [],\n searchLoading: false,\n searchLoadingMore: false,\n canLoadMore: true,\n };\n }\n\n componentDidMount() {\n Promise.all([this.loadUsers('admin', 0), this.loadUsers('member', 0)]).then(([adminUsers, memberUsers]) => {\n this.setState({\n admins: adminUsers.data,\n members: memberUsers.data,\n loadingMore: false,\n loading: false,\n canLoadMore: memberUsers.data.length < memberUsers.count,\n });\n })\n\n window.addEventListener('scroll', this.trackScrolling);\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.trackScrolling);\n }\n\n trackScrolling = (event) => {\n event.preventDefault();\n\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n this.loadMoreUsers();\n window.removeEventListener('scroll', this.trackScrolling);\n }\n };\n\n loadUsers = (role, offset) => {\n const {groupId} = this.state;\n return rwbApi\n .retrieveGroupMembers(groupId, role, offset)\n .then((result) => {\n return result;\n });\n };\n\n loadMoreUsers = () => {\n const {loadingMore, loading, canLoadMore, groupId, members} = this.state;\n\n if (!loadingMore && !loading && canLoadMore) {\n this.setState({loadingMore: true});\n rwbApi.retrieveGroupMembers(groupId, 'member', members.length).then((memberUsers) => {\n this.setState({\n members: [...members, ...memberUsers.data],\n loadingMore: false,\n loading: false,\n canLoadMore: members.length + memberUsers.data.length < memberUsers.count,\n });\n window.addEventListener('scroll', this.trackScrolling);\n });\n }\n };\n\n handleUserSelect = ({id}) => this.props.history.push(`/profile/${id}`);\n\n handleClearSearch = () =>\n this.setState({\n search: '',\n searchResults: [],\n searchLoading: false,\n searchLoadingMore: false,\n searchingMembers: false,\n });\n\n searchValueChange = (text) => {\n this.setState({search: text, searchLoading: true});\n this.updateOptions(text);\n };\n\n updateOptions = debounce((value) => this.apiSearch(value), DEBOUNCE_MS);\n\n apiSearch = (text) => {\n rwbApi\n .searchGroupMembers(text, this.state.groupId)\n .then((result) => {\n this.setState({searchResults: result || [], searchLoading: false});\n })\n .catch((err) => {\n errorAlert(USER_SEARCH_ERROR);\n this.setState({searchResults: [], searchLoading: false});\n });\n };\n\n render() {\n const {history} = this.props;\n const {\n groupName,\n admins,\n members,\n loading,\n loadingMore,\n search,\n searchingMembers,\n searchResults,\n searchLoading,\n } = this.state;\n\n return (\n
    \n history.goBack()}\n />\n {loading ? (\n \n ) : (\n <>\n
    \n {}}\n onClearSearch={this.handleClearSearch}\n placeholder={'Search for Members'}\n onFocus={() => this.setState({searchingMembers: true})}\n searching={searchingMembers}\n />\n
    \n {searchingMembers ? (\n \n ) : (\n <>\n {/* I suppose each section (admins, captain, members) will be returned as a separate array from the backend */}\n \n \n\n {loadingMore && (\n \n )}\n \n )}\n \n )}\n
    \n );\n }\n}\n\nexport default GroupMembers;\n","import React, {Component} from 'react';\nimport GroupContainer from './GroupContainer';\nimport SearchBar from '../SearchBar';\nimport styles from './Groups.module.css';\nimport {Switch, Route} from 'react-router-dom';\nimport GroupDetail from './GroupDetail';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {\n GROUP_SEARCH_ERROR,\n LOCATION_ERRORS,\n} from '../../../../shared/constants/ErrorMessages';\nimport Loading from '../Loading';\nimport {GROUP_VERSION} from '../../../../shared/constants/OnboardingVersions';\nimport {isNullOrEmpty, isUpdateNeeded} from '../../../../shared/utils/Helpers';\nimport GroupMessages from './GroupMessages';\nimport SearchGroupsList from './SearchGroupsList';\nimport debounce from 'lodash.debounce';\nimport {version as currentVersion} from '../../../package.json';\nimport {hasReachedBottom, getCurrentPath} from '../../BrowserUtil';\nimport Events from '../events/Events';\nimport GroupMembers from './GroupMembers';\nimport PostView from '../feed/PostView';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\n\nconst DEBOUNCE_MS = 500;\nconst groupTitles = {\n my: 'my groups',\n other: 'other groups',\n};\n\nexport default class Groups extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // group types\n favorites: [],\n admin: [],\n my: [],\n featured: [],\n activity: [],\n nearby: [],\n national: [],\n favoritesGroupsLoading: true,\n myGroupsLoading: true,\n featuredGroupsLoading: true,\n activityGroupsLoading: true,\n nearbyGroupsLoading: true,\n nationalGroupsLoading: true,\n newToGroups: false,\n isLoading: true,\n // for search groups\n searchingGroups: false,\n searchLoading: false,\n searchLoadingMore: false,\n retrievedLastGroup: false,\n search: '',\n searchResults: [],\n lat: '',\n long: '',\n chapter_id: userProfile.getUserProfile().preferred_chapter.id,\n };\n }\n\n componentDidMount() {\n // rwbApi.getAppVersion().then((savedVersion) => {\n // savedVersion = savedVersion.web_version;\n // if (isUpdateNeeded(savedVersion, GROUP_VERSION)) {\n // this.setState({newToGroups: true});\n // rwbApi.updateAppVersion(currentVersion);\n // }\n // });\n this.retrieveGroups();\n\n window.addEventListener('scroll', this.trackScrolling);\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.trackScrolling);\n }\n\n trackScrolling = (event) => {\n event.preventDefault();\n\n const {searchingGroups, searchResults} = this.state;\n if (searchingGroups) {\n const wrappedElement = document.getElementById('root');\n // when switching to the tab the bottom is considered reached, but there are no posts\n // this puts the app trying to load more when it should not be\n // on start loading more when the bottom is reached AND there is some data\n if (hasReachedBottom(wrappedElement) && searchResults.length > 0) {\n this.setState({retrievedLastGroup: true}, this.loadMoreGroups);\n window.removeEventListener('scroll', this.trackScrolling);\n }\n }\n };\n\n getLocation = () => {\n return new Promise((resolve) => {\n navigator.geolocation.getCurrentPosition(\n (position) => {\n const {latitude, longitude} = position.coords;\n this.setState({lat: latitude.toString(), long: longitude.toString()});\n resolve({lat: latitude.toString(), long: longitude.toString()});\n },\n (error) => {\n const chapter_id = this.state.chapter_id;\n const onGroupsPage = getCurrentPath() === '/groups';\n\n if (error.code === 1 && onGroupsPage) {\n errorAlert(LOCATION_ERRORS.PERMISSION);\n }\n // Error code when geolocator times out.\n else {\n if (onGroupsPage) errorAlert(LOCATION_ERRORS.GENERAL);\n }\n resolve({chapter_id: chapter_id});\n },\n {\n enableHighAccuracy: true,\n },\n );\n });\n };\n\n // load all groups\n retrieveGroups = async () => {\n this.loadAdminGroups();\n this.loadMyGroups();\n this.loadActivityGroups();\n this.loadNearbyGroups();\n this.loadNationalGroups();\n };\n\n loadNationalGroups = () => {\n rwbApi\n .searchGroups('kind=national')\n .then((nationalGroups) => {\n this.setState({national: nationalGroups.other_groups});\n })\n }\n\n loadAdminGroups = () =>\n rwbApi\n .retrieveGroups('admin')\n .then((adminGroups) => {\n this.setState({\n admin: adminGroups.data || [],\n });\n })\n .catch(() =>\n // temporary logic until the endpoint is adjusted for admin groups\n this.setState({\n admin: [],\n }),\n );\n\n // not in sprint 2\n loadFavoriteGroups = () => {};\n\n loadMyAndNearbyGroups = () => {\n this.loadMyGroups();\n this.loadNearbyGroups();\n this.loadNationalGroups();\n };\n\n loadMyGroups = () => {\n rwbApi.searchGroups().then((myGroups) => {\n this.setState({\n my: myGroups.my_groups,\n myGroupsLoading: false,\n })\n })\n };\n\n loadActivityGroups = () => {\n rwbApi.searchGroups('kind=activity').then((activityGroups) => {\n this.setState({\n activity: [...activityGroups.my_groups, ...activityGroups.other_groups],\n activityGroupsLoading: false,\n });\n });\n };\n\n loadNearbyGroups = () => {\n this.getLocation().then((locationData) => {\n rwbApi.retrieveGroups('nearby', locationData).then((nearbyGroups) => {\n this.setState({\n nearby: nearbyGroups?.data || [], // in the case when there are no nearby groups, data is undefined\n nearbyGroupsLoading: false,\n });\n });\n });\n };\n\n handleSearchFocus = () => {\n this.interactWithGroups();\n this.setState({searchingGroups: true});\n };\n\n // called on any interactions on the group page (visiting a group, interacting with the search bar, clicking on another tab)\n interactWithGroups = () => {\n this.setState({newToGroups: false});\n };\n\n searchValueChange = (text) => {\n this.setState({search: text, searchLoading: true});\n this.updateOptions(text);\n };\n\n updateOptions = debounce((value) => this.apiSearch(value), DEBOUNCE_MS);\n\n apiSearch = (text) => {\n const {lat, long, chapter_id, offset} = this.state;\n const location = {lat, long, chapter_id};\n if (text) {\n rwbApi\n .searchGroups(`q=${text}`, location, offset)\n .then((result) => {\n this.setState({\n searchResults: this.separateGroups(result),\n searchLoading: false,\n offset: result.offset,\n });\n })\n .catch((err) => {\n errorAlert(GROUP_SEARCH_ERROR);\n });\n } else {\n this.setState({searchLoading: false});\n }\n };\n\n separateGroups = (groups) => {\n return [\n {\n title: groupTitles.my,\n data: groups.my_groups,\n },\n {\n title: groupTitles.other,\n data: groups.other_groups,\n },\n ];\n };\n\n loadMoreGroups = () => {\n const {\n offset,\n search,\n searchResults,\n lat,\n long,\n chapter_id,\n retrievedLastGroup,\n } = this.state;\n const location = {lat, long, chapter_id};\n if (!offset || !retrievedLastGroup) return;\n this.setState({searchLoadingMore: true});\n rwbApi\n .searchGroups(search, location, offset)\n .then((result) => {\n this.setState({\n searchResults: [...searchResults, ...result], // this will use the appendToSection\n searchLoadingMore: false,\n offset: result.offset,\n retrievedLastGroup: false,\n });\n window.addEventListener('scroll', this.trackScrolling);\n })\n .catch((err) => {\n this.setState({searchLoadingMore: false, retrievedLastGroup: false}); // retrievedLastGroups is here for testing purposes\n window.addEventListener('scroll', this.trackScrolling); // for testing purposes\n this.appendToSection(groupTitles.other, []);\n });\n };\n\n // determine if extradata should be used, or forceupdate\n appendToSection = (title, data) => {\n const sections = this.state.searchResults;\n let updatedSections = [];\n for (let i = 0; i < sections.length; i++) {\n if (sections[i].title === title) {\n const updatedSection = {\n title: title,\n data: [...sections[i].data, ...data],\n };\n updatedSections.push(updatedSection);\n } else updatedSections.push(sections[i]);\n }\n this.setState({searchResults: updatedSections});\n };\n\n clearSearchGroups = () =>\n this.setState({\n search: '',\n searchResults: [],\n searchLoading: false,\n searchLoadingMore: false,\n searchError: null,\n searchingGroups: false,\n });\n\n render() {\n const {\n admin,\n my,\n activity,\n nearby,\n national,\n searchingGroups,\n searchLoading,\n searchLoadingMore,\n search,\n searchResults,\n newToGroups,\n myGroupsLoading,\n activityGroupsLoading,\n nearbyGroupsLoading,\n nationalGroupsLoading,\n } = this.state;\n const {match} = this.props;\n\n return (\n
    \n \n \n (\n \n )}\n />\n }\n />\n }\n />\n \n \n \n\n \n
    \n null}\n onClearSearch={this.clearSearchGroups}\n placeholder={'Search for Groups'}\n onFocus={this.handleSearchFocus}\n searching={searchingGroups}\n />\n
    \n <>\n {searchingGroups ? (\n \n ) : (\n <>\n {/* */}\n\n {/* If there are no groups that you are an admin of, then section should not be visible. */}\n {national && national.length > 0 && ( \n )\n }\n {admin && admin.length > 0 && ( \n )\n }\n \n {/* {newToGroups && } */}\n {/* */}\n {activity.length > 0 &&\n }\n {(nearbyGroupsLoading || nearby?.length > 0) && (\n \n )}\n \n )}\n \n
    \n
    \n
    \n );\n }\n}\n","import React, {Component} from 'react';\nimport styles from './NotificationListItem.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport {howLongAgo} from '../../../../shared/utils/Helpers';\nimport {withRouter} from 'react-router-dom';\nimport Loading from '../Loading';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {logAccessNotification} from '../../../../shared/models/Analytics';\n\nclass NotificationListItem extends Component {\n constructor(props) {\n super(props);\n\n const data = props.item.activities[0];\n this.state = {\n data,\n photoClickable: data.actor\n ? !data.actor.anonymous_profile\n : !data?.user?.anonymous_profile,\n photoClickId: data?.object ? data?.actor.id : data?.user?.id,\n isFollowing: data?.is_following || null,\n };\n\n this.currentUser = userProfile.getUserProfile();\n }\n\n renderProfilePhoto = (data) =>\n data?.actor?.profile_photo_url\n\n renderActorName = (data) => {\n if (\n data.verb === 'follow' ||\n data.verb === 'update' ||\n data.verb === 'cancel' ||\n data.verb === 'post' ||\n data.verb === 'like' ||\n data.verb === 'comment' ||\n data.verb === 'create'\n )\n return `${data.actor?.first_name} ${data.actor?.last_name}`;\n };\n\n renderAction = (data) => {\n if (data.verb === 'follow') return 'started following you';\n else if (data.verb === 'update' || data.verb === 'cancel')\n return `${data.verb === 'update' ? 'updated' : 'canceled'} the event`;\n else if (data.verb === 'like' || data.verb === 'comment')\n return `${data.verb === 'like' ? 'liked' : 'commented on'} your post`;\n else if (data.verb === 'create') {\n const type = data.comment_id ? 'comment' : 'post';\n let taggedCurrentUser = false;\n for (let i = 0; i < data.tagged.length; i++) {\n if (data.tagged[i].id == this.currentUser.id) {\n taggedCurrentUser = true;\n break;\n }\n }\n let mentionText;\n if (data?.event?.id && !taggedCurrentUser) return 'posted on your event';\n else if (data?.event?.id && taggedCurrentUser) mentionText = 'on an event';\n else if (data?.group?.id) mentionText = 'in a group';\n else mentionText = `in a ${type}`;\n return `mentioned you ${mentionText}`;\n }\n };\n\n renderSpecificText = (data) => {\n if (\n data.verb === 'update' ||\n data.verb === 'cancel' ||\n data.verb === 'post'\n )\n return data.object.name;\n else return '';\n };\n\n userProfileClickHandler = () => {\n const {photoClickable, photoClickId} = this.state;\n if (photoClickable && photoClickId) {\n this.props.history.push(`/profile/${photoClickId}`);\n } else {\n alert('This user has set their profile to anonymous.');\n }\n };\n\n notificationClickHandler = () => {\n const {data} = this.state;\n const {history} = this.props;\n logAccessNotification();\n if (data.verb === 'follow') {\n this.userProfileClickHandler();\n }\n // both update and cancel navigate to an event\n else if (data.verb === 'update' || data.verb === 'cancel') {\n history.push(`/events/${data.object.id}`);\n } else if (\n data.verb === 'like' ||\n data.verb === 'comment' ||\n data.verb === 'replied'\n ) {\n const streamID = data.object.split(':')[1];\n history.push({\n pathname: `/feed/${streamID}`,\n state: {\n poster: this.currentUser,\n time: data.time,\n streamID,\n postID: data.id,\n previousScreen: 'notifications',\n },\n });\n } else if (data.verb === 'create') {\n if (data.object.id) {\n history.push(`/events/${data.object.id}`);\n } else {\n const streamID = data.id;\n history.push({\n pathname: `/feed/${streamID}`,\n state: {\n poster: data.comment_id ? {id: data.author_id} : data.actor,\n time: data.time,\n streamID,\n postID: data.id,\n previousScreen: 'notifications',\n commentID: data.comment_id,\n },\n });\n }\n } else if (data.verb === 'post') {\n const streamID = data.post_id;\n history.push({\n pathname: `/feed/${streamID}`,\n state: {\n poster: data.user,\n time: data.time,\n streamID,\n postID: data.id,\n previousScreen: 'notifications',\n },\n });\n }\n };\n\n render() {\n const {data, isFollowing} = this.state;\n return (\n
    \n {\n e.stopPropagation();\n this.userProfileClickHandler();\n }}>\n \n
    \n

    \n {\n e.stopPropagation();\n this.userProfileClickHandler();\n }}>\n {this.renderActorName(data)} \n \n {this.renderAction(data)} \n \n {this.renderSpecificText(data)} \n \n • {howLongAgo(data.time)}\n

    \n {data.verb === 'follow' && !data.actor.anonymous_profile && (\n {\n e.stopPropagation();\n this.props.updateFollowingStatus(data.actor.id, isFollowing);\n }}>\n

    {isFollowing ? 'Unfollow' : 'Follow'}

    \n \n )}\n \n );\n }\n}\n\nexport default withRouter(NotificationListItem);\n","import React, {useState, useEffect} from 'react';\nimport NotificationListItem from './NotificationListItem';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport {Grid} from '@material-ui/core';\nimport {ClipLoader} from 'react-spinners';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport {NO_NOTIFICATIONS} from '../../../../shared/constants/OtherMessages';\n\nconst NotificationsList = () => {\n const [notifications, setNotifications] = useState([]);\n const [notificationsRequested, requestNotifications] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [retrievedLastNotification, setRetrievedLastNotification] = useState(\n false,\n );\n\n useEffect(() => {\n getNotifications();\n }, []);\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n }, [notifications]);\n\n useEffect(() => {\n // replacement for setState callback\n if (retrievedLastNotification) getMoreNotifications();\n }, [retrievedLastNotification]);\n\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n setRetrievedLastNotification(true);\n }\n };\n\n const getNotifications = () => {\n if (!notificationsRequested) {\n requestNotifications(true);\n rwbApi.getNotifications().then((res) => {\n const results = res.data.results;\n setNotifications(results);\n requestNotifications(false);\n setIsLoading(false);\n });\n }\n };\n\n const getMoreNotifications = () => {\n const lastNotification = notifications[notifications.length - 1];\n setIsLoadingMore(true);\n if (retrievedLastNotification && lastNotification) {\n rwbApi.getNotifications(lastNotification.id).then((res) => {\n const results = res.data.results;\n if (results.length > 0) {\n setNotifications([...notifications, ...results]);\n setIsLoadingMore(false);\n setRetrievedLastNotification(false);\n } else setIsLoadingMore(false);\n });\n }\n };\n\n const updateFollowStateHandler = (userId, isFollowing) => {\n // setIsFollowLoading(true);\n setIsLoading(true);\n if (isFollowing) {\n rwbApi\n .unfollowUser(userId)\n .then(() => {\n updateFollowingStatus(userId, isFollowing);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n // setIsFollowLoading(false);\n setIsLoading(false);\n });\n } else {\n rwbApi\n .followUser(userId)\n .then(() => {\n updateFollowingStatus(userId, isFollowing);\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n // setIsFollowLoading(false);\n setIsLoading(false);\n });\n }\n };\n\n const updateFollowingStatus = (userId, isFollowing) => {\n let updatedNotifications = notifications.filter((item) => {\n if (\n item.activities[0].actor_user &&\n item.activities[0].actor_user.id === userId\n ) {\n item.activities[0].is_following = !isFollowing;\n }\n return item;\n });\n setNotifications(updatedNotifications);\n };\n\n return (\n
    \n {isLoading ? (\n \n ) : (\n
    \n {notifications.length > 0 ? (\n notifications.map((notification, i) => {\n return (\n \n );\n })\n ) : (\n

    \n {NO_NOTIFICATIONS}\n

    \n )}\n \n \n \n
    \n )}\n
    \n );\n};\n\nexport default NotificationsList;\n","import React from 'react';\nimport {Switch, Route, useRouteMatch, useHistory} from 'react-router-dom';\nimport NotificationsList from './NotificationsList';\nimport styles from './Notifications.module.css';\nimport Header from '../Header';\n\nexport default function Notifications(props) {\n let match = useRouteMatch();\n\n const history = useHistory();\n\n return (\n
    \n
    history.goBack()} />\n \n \n \n \n \n
    \n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class UploadPhotoIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nUploadPhotoIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nUploadPhotoIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './RWBUserImages.module.css';\nimport UploadPhotoIcon from './svgs/UploadPhotoIcon';\nimport DefaultProfileImg from '../../../shared/project-info/images/DefaultProfileImg.png';\nimport { WEB_IMAGE_FORMATS } from '../../../shared/constants/ImageConstants';\nimport { projectConfig } from '../../../shared/project-info/projectConfig';\n\nfunction RWBUserImages({\n edit,\n coverPhoto,\n profilePhoto,\n onChangeCover,\n onChangeProfile,\n}) {\n return (\n
    \n
    \n \n {edit ? (\n
    \n \n
    \n ) : null}\n
    \n
    \n
    \n \n
    \n {edit ? (\n
    \n \n
    \n ) : null}\n
    \n
    \n );\n}\n\nRWBUserImages.defaultProps = {\n edit: false,\n};\n\nRWBUserImages.propTypes = {\n edit: PropTypes.bool,\n};\n\nexport default RWBUserImages;\n","import {IconButton} from '@material-ui/core';\nimport React, {Component, useEffect, useRef, useState} from 'react';\nimport ReactDOM from 'react-dom';\nimport {rwbApi} from '../../../shared/apis/api';\nimport { reportAPI } from '../../../shared/apis/reportAPI';\nimport { errorAlert } from '../../../shared/utils/ErrorAlert';\nimport PostOptionIcon from '../components/svgs/PostOptionIcon';\nimport styles from './ReportAndDeleteOverlay.module.css';\n\nconst BlockAndReportOverlay = ({loggedInUser, profileId}) => {\n const [overlayVisible, setOverlayVisible] = useState(false);\n const myRef = useRef();\n const handleClickOutside = (event) => {\n const domNode = ReactDOM.findDOMNode(myRef.current);\n\n if (!domNode || !domNode.contains(event.target)) {\n setOverlayVisible(false);\n }\n };\n\n useEffect(() => {\n document.addEventListener('click', handleClickOutside, true);\n return () =>\n document.removeEventListener('click', handleClickOutside, true);\n }, []);\n\n const blockUser = () => {\n if (window.confirm('Would you like to block this member?')) {\n rwbApi\n .blockUser(profileId)\n .then((res) => {\n window.alert('This user has been blocked.');\n })\n .catch((err) => console.log('err', err));\n setOverlayVisible(false);\n }\n };\n\n const reportUser = () => {\n if (window.confirm('Would you like to report this member?')) {\n setOverlayVisible(false);\n const reporterID = JSON.stringify({reporter: loggedInUser.id});\n reportAPI\n .user(profileId, reporterID)\n .then(() => {\n errorAlert('Your report has been sent.');\n })\n .catch((err) => {\n console.warn(err);\n }).finally(() => {\n });\n }\n };\n\n return (\n
    \n setOverlayVisible(true)}>\n \n \n \n
    \n {overlayVisible ? (\n <>\n \n \n \n \n \n ) : null}\n \n );\n};\n\nexport default BlockAndReportOverlay;\n","import React, {useState, useEffect} from 'react';\nimport {useParams} from 'react-router-dom';\nimport RWBUserImages from '../RWBUserImages';\nimport styles from './ProfileDetail.module.css';\nimport {IconButton, Grid} from '@material-ui/core';\nimport {useHistory, useRouteMatch} from 'react-router-dom';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport AppMark from '../../../../shared/project-info/web-project-info/svgs/AppMark';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport {ClipLoader} from 'react-spinners';\nimport FeedList from '../feed/FeedList';\nimport ExpandingText from '../ExpandingText';\nimport {\n logAccessFollowers,\n logAccessFollowing,\n logUnfollow,\n logFollow,\n} from '../../../../shared/models/Analytics';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport {reportAPI} from '../../../../shared/apis/reportAPI';\nimport {errorAlert} from '../../../../shared/utils/ErrorAlert';\nimport {\n PRIVATE_USER_ERROR,\n REPORT_SENT,\n} from '../../../../shared/constants/ErrorMessages';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\nimport BlockAndReportOverlay from '../BlockAndReportOverlay';\nimport { formatStatusTitle } from '../../../../shared/utils/Helpers';\nimport { filterRemovedEvents } from '../../../../shared/utils/FeedHelpers';\n\nexport default function ProfileDetail() {\n const [isLoading, setIsLoading] = useState(false);\n const [isFollowing, setIsFollowing] = useState(false); // server code to see if the person is being followed\n const [isFollowed, setIsFollowed] = useState(false);\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n const [preferredChapter, setPreferredChapter] = useState('');\n // const [homeChapter, setHomeChapter] = useState(''); // Currently home chapter, service type, service status, and purchase data are giving me errors.\n const [workspace, setWorkspace] = useState('');\n const [title, setTitle] = useState('');\n const [serviceInfo, setServiceInfo] = useState('');\n const [militaryRank, setMilitaryRank] = useState('');\n // const [militarySpecialty, setMilitarySpecialty] = useState('');\n const [industry, setIndustry] = useState('');\n // const [purchaseData, setPurchaseData] = useState('');\n const [profileBio, setProfileBio] = useState('');\n const [coverPhoto, setCoverPhoto] = useState('');\n const [profilePhoto, setProfilePhoto] = useState('');\n const [followingAmount, setFollowingAmount] = useState('-');\n const [followersAmount, setFollowersAmount] = useState('-');\n const [isEagleLeader, setIsEagleLeader] = useState(false);\n const [expirationTermOfService, setExpirationTermOfService] = useState(null);\n const [anonymousProfile, setAnonymousProfile] = useState(false);\n const [isLoadingFeed, setIsLoadingFeed] = useState(true);\n const [userFeed, setUserFeed] = useState([]);\n const [retrievedLastPost, setRetrievedLastPost] = useState(false);\n\n const loggedInUser = userProfile.getUserProfile();\n const {profileId} = useParams();\n const history = useHistory();\n const match = useRouteMatch();\n\n useEffect(() => {\n setIsLoading(true);\n retrieveUser()\n .then((user) => {\n // TODO: store all of this as a single user object?\n setIsEagleLeader(user.eagle_leader);\n setCoverPhoto(user.cover_photo_url);\n setProfilePhoto(user.profile_photo_url);\n setFirstName(user.first_name);\n setLastName(user.last_name);\n setPreferredChapter(user.preferred_chapter);\n // setHomeChapter(user.home_chapter);\n setWorkspace(user.workspace);\n setServiceInfo(user?.service_info);\n setIndustry(user.extra_info.industry);\n // setPurchaseData(user.purchaseData.description);\n setExpirationTermOfService(user.military_ets);\n setMilitaryRank(user.military_rank);\n setProfileBio(user.profile_bio);\n setAnonymousProfile(user.anonymous_profile);\n getUsersFollowSummary().then((fData) => {\n setFollowingAmount(fData.following);\n setFollowersAmount(fData.followers);\n getFollowerRelationship().then((followed) => {\n setIsFollowed(followed);\n getFollowingRelationship().then((following) => {\n setIsFollowing(following);\n setIsLoading(false);\n });\n });\n });\n if (user.anonymous_profile) errorAlert(PRIVATE_USER_ERROR);\n else {\n getFeed()\n .then((feed) => {\n setIsLoadingFeed(false);\n })\n .catch(() => {\n setIsLoadingFeed(false);\n alert('Error retrieving the user feed');\n });\n }\n })\n .catch((error) => {\n console.warn(error);\n setIsLoading(false);\n if (error.toString().includes('403')) {\n alert('This user has set their profile to private.');\n history.goBack();\n } else alert('There was an error retrieving the user.');\n });\n }, []);\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n }, [userFeed]);\n\n useEffect(() => {\n // replacement for setState callback\n if (retrievedLastPost) handleLoadMore();\n }, [retrievedLastPost]);\n\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n setRetrievedLastPost(true);\n }\n };\n\n const getUsersFollowSummary = () => {\n return rwbApi.getFollowSummary(profileId);\n };\n\n // see if this profile is following the logged in user\n const getFollowerRelationship = () => {\n return rwbApi\n .getFollowingRelationships(profileId, loggedInUser.id)\n .then((isFollowed, isFollowing) => {\n return isFollowed;\n });\n };\n\n // see if the logged in user is following this profile\n const getFollowingRelationship = () => {\n return rwbApi\n .getFollowingRelationships(loggedInUser.id, profileId)\n .then((isFollowing) => {\n return isFollowing;\n });\n };\n\n const retrieveUser = () => {\n return rwbApi.getUserByID(profileId);\n };\n\n const getFeed = () => {\n return rwbApi\n .getUserFeed(profileId)\n .then((result) => {\n if (result.data) {\n // ensures editing posts on other users' profiles is updated\n setUserFeed(filterRemovedEvents(result.data.results));\n return filterRemovedEvents(result.data.results);\n }\n return [];\n })\n .catch((error) => {\n console.warn('error getting feed: ', error);\n });\n };\n\n const handleLoadMore = () => {\n const lastPost = userFeed[userFeed.length - 1];\n setIsLoadingFeed(true);\n if (retrievedLastPost && lastPost) {\n rwbApi.getUserFeed(profileId, lastPost.id).then((result) => {\n if (result.data.results.length > 0) {\n setUserFeed([...userFeed, ...filterRemovedEvents(result.data.results)]);\n setIsLoadingFeed(false);\n setRetrievedLastPost(false);\n } else setIsLoadingFeed(false);\n });\n }\n };\n\n const updateFollowState = () => {\n setIsLoading(true);\n if (isFollowing) {\n rwbApi\n .unfollowUser(profileId)\n .then((result) => {\n setIsFollowing(false);\n setFollowersAmount(followersAmount - 1);\n logUnfollow();\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n setIsLoading(false);\n });\n } else {\n rwbApi\n .followUser(profileId)\n .then((result) => {\n setIsFollowing(true);\n setFollowersAmount(followersAmount + 1);\n logFollow();\n })\n .catch((error) => {\n console.error(error);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n };\n\n const reportUser = () => {\n if (window.confirm('Would you like to report this member?')) {\n const reporterID = JSON.stringify({reporter: loggedInUser.id});\n reportAPI\n .user(profileId, reporterID)\n .then(() => {\n errorAlert(REPORT_SENT);\n })\n .catch((err) => {\n console.warn(err);\n });\n }\n };\n\n return (\n
    \n {isLoading && (\n \n )}\n
    \n \n\n
    \n
    history.goBack()}>\n \n \n \n
    \n {profileId !== parseInt(loggedInUser.id) ? (\n
    \n \n
    \n ) : null}\n
    \n
    \n
    \n
    \n {/* Name */}\n
    \n

    {`${firstName} ${lastName} `}

    \n {/* {isEagleLeader && (\n \n )} */}\n
    \n
    \n {/* Chapter/Workspace */}\n {workspace || preferredChapter ?\n

    \n {projectConfig.hasAnchorChapter ?\n (preferredChapter && preferredChapter.name) || null\n // (homeChapter && homeChapter.name)\n : workspace && workspace.name}\n

    \n : null}\n {/* Leadership Title */}\n {isEagleLeader && projectConfig.leaderRoleDisplay ? (\n
    \n {projectConfig.leaderRoleDisplay}\n
    \n ): null}\n {/* Industry */}\n {industry &&\n
    \n {/* {purchaseData ? purchaseData + \", \" : null} */}\n {industry}\n
    \n }\n {/* Service and Branch */}\n {(serviceInfo?.status || serviceInfo?.service_type) &&

    {formatStatusTitle(serviceInfo?.status, serviceInfo?.service_type)}

    }\n {/* Follow */}\n
    \n \n logAccessFollowers() +\n history.push({\n pathname: `${match.path}/followers`,\n state: {index: 0, selectedUserID: profileId},\n })\n }>\n {followersAmount}\n followers\n
    \n \n logAccessFollowing() +\n history.push({\n pathname: `${match.path}/followers`,\n state: {index: 1, selectedUserID: profileId},\n })\n }>\n {followingAmount}\n following\n
    \n
    \n {isFollowed && (\n
    follows you
    \n )}\n
    \n {!anonymousProfile && loggedInUser.id !== parseInt(profileId) && (\n \n
    {isFollowing ? 'Unfollow' : 'Follow'}
    \n
    \n )}\n \n \n \n
    \n \n \n \n \n \n \n \n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class SettingsIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nSettingsIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nSettingsIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class EditIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nEditIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nEditIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import { projectConfig } from \"../project-info/projectConfig\";\n\nconst PROFILE_TAB_LABELS = {\n ANALYTICS: projectConfig.inAppAnalyticsLabel || 'ANALYTICS',\n EVENT_AND_WORKOUT_STATS: 'EVENTS & WORKOUT STATS',\n CHALLENGE_WORKOUT_LOGS: 'Challenge Workout Logs',\n CHALLENGE_BADGES: 'Challenge Badges',\n JOIN_CHALLENGES_EARN_BADGES: 'Join challenges to earn badges',\n ALL_TIME_CHALLENGES: 'CHALLENGES',\n YTD_EVENTS: 'EVENTS (YTD)',\n MTD_EVENTS: 'EVENTS (MTD)',\n};\n\nconst FEED_TYPE = {\n POST: 'post',\n EVENT: 'event',\n};\n\nconst FEED_TAGS = {\n EVERYONE: 'everyone',\n};\n\n// TODO remove _POST/_User from delete, edit, block\nconst FEED_ACTION_LABELS = {\n DELETE_POST: 'Delete',\n EDIT_POST: 'Edit',\n BLOCK_USER: 'Block',\n REPORT_POST: 'Report',\n REMOVE_POST_AND_REPORT: 'Remove & Report',\n DELETE_USER_AND_REPORT: 'Remove & Report User',\n PIN_POST: 'Pin Post',\n UNPIN_POST: 'Remove Pin',\n};\n\nexport {PROFILE_TAB_LABELS, FEED_TYPE, FEED_TAGS, FEED_ACTION_LABELS};\n","import React, { useState, useEffect } from 'react';\nimport RWBUserImages from '../RWBUserImages';\nimport styles from './ProfileDetail.module.css';\nimport { IconButton, Grid } from '@material-ui/core';\nimport SettingsIcon from '../svgs/SettingsIcon';\nimport EditIcon from '../svgs/EditIcon';\nimport { userProfile } from '../../../../shared/models/UserProfile';\nimport { rwbApi } from '../../../../shared/apis/api';\nimport FeedList from '../feed/FeedList';\nimport { ClipLoader } from 'react-spinners';\nimport { useRouteMatch, useHistory } from 'react-router-dom';\nimport ExpandingText from '../ExpandingText';\nimport moment from 'moment';\nimport {\n logEditButton,\n logAccessFollowers,\n logAccessFollowing,\n logAccessAppSettings,\n} from '../../../../shared/models/Analytics';\nimport { hasReachedBottom } from '../../BrowserUtil';\nimport Loading from '../Loading';\nimport AppMark from '../../../../shared/project-info/web-project-info/svgs/AppMark';\nimport { paymentConfig } from '../../../../shared/project-info/paymentConfig';\nimport { formatStatusTitle } from '../../../../shared/utils/Helpers';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { PROFILE_TAB_LABELS } from '../../../../shared/constants/Labels';\nimport ChevronRightIcon from '../svgs/ChevronRightIcon';\n\nexport default function ProfileDetail() {\n const [isFollowSummaryLoading, setIsFollowSummaryLoading] = useState(true);\n const [isInitialFeedLoading, setIsInitialFeedloading] = useState(true);\n const [isMoreFeedLoading, setIsMoreFeedLoading] = useState(false);\n const [followingAmount, setFollowingAmount] = useState('-');\n const [followersAmount, setFollowersAmount] = useState('-');\n const [userFeed, setUserFeed] = useState([]);\n const [retrievedLastPost, setRetrievedLastPost] = useState(false);\n const user = userProfile.getUserProfile();\n const match = useRouteMatch();\n const history = useHistory();\n const [userMetric, setUserMetric] = useState({});\n const [userbadges, setuserBadges] = useState([])\n useEffect(() => {\n getUsersFollowSummary(user.id);\n getFeed();\n if (projectConfig.hasChallenges) {\n getUserMetrics()\n getBadges()\n }\n\n }, []);\n\n // getUserMetrics getBadges requires the backend has fitpros-style workouts\n const getUserMetrics = () => {\n rwbApi.getUserMetrics().then((result) => {\n setUserMetric(result.data)\n });\n };\n const getBadges = () => {\n rwbApi\n .getUserBadges(userProfile.getUserProfile().id)\n .then((result) => {\n setuserBadges(result.data.badges)\n });\n };\n\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n }, [userFeed]);\n\n useEffect(() => {\n // replacement for setState callback\n if (retrievedLastPost) handleLoadMore();\n }, [retrievedLastPost]);\n\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n setRetrievedLastPost(true);\n }\n };\n\n const getUsersFollowSummary = (id) => {\n return rwbApi\n .getFollowSummary(id)\n .then((result) => {\n const followingAmount = result.following;\n const followersAmount = result.followers;\n setFollowingAmount(followingAmount);\n setFollowersAmount(followersAmount);\n setIsFollowSummaryLoading(false);\n })\n .catch((error) => {\n console.warn(error);\n alert(\"Error retrieving user's following and follower count.\");\n });\n };\n\n const getFeed = () => {\n rwbApi\n .getUserFeed(user.id)\n .then((result) => {\n setUserFeed(result.data.results);\n setIsInitialFeedloading(false);\n })\n .catch((error) => {\n console.warn('error getting feed: ', error);\n alert('There was an error retrieving your feed.');\n setIsInitialFeedloading(false);\n });\n };\n\n const handleLoadMore = () => {\n const lastPost = userFeed[userFeed.length - 1];\n setIsMoreFeedLoading(true);\n if (retrievedLastPost && lastPost) {\n rwbApi.getUserFeed(user.id, lastPost.id).then((result) => {\n if (result.data.results.length > 0) {\n setUserFeed([...userFeed, ...result.data.results]);\n setIsMoreFeedLoading(false);\n setRetrievedLastPost(false);\n } else setIsMoreFeedLoading(false);\n });\n }\n };\nconst navigateChallange = () =>{\n history.push('/challenges')\n}\nconst navigateBadges = () =>{\n history.push(\n {\n pathname: '/challengebadges',\n state: {badgesData: userbadges},\n }\n )\n}\n return (\n
    \n {!isFollowSummaryLoading && !isInitialFeedLoading ? (\n <>\n
    \n \n\n
    \n {\n history.push({ pathname: `${match.path}/edit`, });\n }}>\n \n \n {\n logAccessAppSettings();\n history.push(`${match.path}/settings`);\n }}>\n \n \n
    \n
    \n
    \n
    \n {projectConfig.hasPayment && {\n history.push(`${match.path}/settings/membershipoptionview`)\n }}>\n {\n user.latest_purchase?.expiration_date ? \n `${paymentConfig.appSettingsMembershipLabel} ${user.latest_purchase?.expiration_date ? `(valid until ${moment(user.latest_purchase?.expiration_date).format('MM/DD/YYYY')})`:''}`: \n `${paymentConfig.membershipPurchaseLinkText}`\n }\n
    }\n
    \n {/* Name */}\n
    \n

    {`${user.first_name} ${user.last_name}`}

    \n {/* {user.eagle_leader && (\n \n )} */}\n
    \n {/* Chapter/Workspace */}\n {user.workspace || user.preferred_chapter || user.home_chapter ?\n

    \n {projectConfig.hasAnchorChapter ?\n (user.preferred_chapter && user.preferred_chapter.name) ||\n (user.home_chapter && user.home_chapter.name)\n : user.workspace && user.workspace.name}\n

    \n : null}\n {/* Leadership Title */}\n {user.eagle_leader && projectConfig.leaderRoleDisplay ? (\n
    \n
    \n {projectConfig.leaderRoleDisplay}\n
    \n
    \n ): null}\n {/* Industry */}\n {user.extra_info?.industry &&\n
    \n {user.purchaseData?.description ? user.purchaseData?.description + \", \" : null}\n {user.extra_info?.industry}\n
    \n }\n {/* Service and Branch */}\n {user.service_info?.status || user.service_info?.service_type ?\n
    \n

    \n {formatStatusTitle(user.service_info?.status, user.service_info?.service_type)}\n

    \n
    \n : null}\n {/* Followers and Following */}\n
    \n {\n logAccessFollowers();\n history.push({\n pathname: `${match.path}/followers`,\n state: { index: 0 },\n });\n }}>\n {followersAmount}\n followers\n
    \n \n logAccessFollowing() +\n history.push({\n pathname: `${match.path}/followers`,\n state: { index: 1 },\n })\n }>\n {followingAmount}\n following\n
    \n \n\n

    \n {formatStatusTitle(\n user?.service_info?.status,\n user?.service_info?.service_type,\n )}\n

    \n {/*

    \n {user.military_status === MILITARY_STATUSES.veteran &&\n `ETS: ${moment(user.military_ets).format('Y')}`}\n

    */}\n
    \n \n \n\n {projectConfig.hasChallenges && (<>\n
    \n
    {\n history.push(`/workoutlogs`);\n }} className={[styles.metricBox]}>\n

    {PROFILE_TAB_LABELS.EVENT_AND_WORKOUT_STATS}

    \n
    \n \n
    \n\n
    \n\n
    \n
    \n

    {userMetric.all_time_challenges_participated}

    \n

    {PROFILE_TAB_LABELS.ALL_TIME_CHALLENGES}

    \n
    \n
    \n

    {userMetric.mtd_events_participated}

    \n

    {PROFILE_TAB_LABELS.YTD_EVENTS}

    \n
    \n
    \n

    {userMetric.ytd_events_participated}

    \n

    {PROFILE_TAB_LABELS.MTD_EVENTS}

    \n
    \n
    \n
    \n\n\n {/* badges view */}\n
    \n
    {userbadges.length > 0 && navigateBadges()}} className={[styles.metricBox]}>\n

    {PROFILE_TAB_LABELS.CHALLENGE_BADGES}

    \n {userbadges.length > 0 &&
    \n \n
    \n }\n
    \n
    \n {userbadges.length > 0 ?\n
    {navigateBadges()}} className={[styles.imageContainerFlex]}>\n {userbadges.map((badge, index) => {\n return (index < 5) ?
    \n \n
    : null\n })}\n
    \n :\n
    {\n navigateChallange()\n }}>\n
    \n\n
    \n
    \n\n
    \n
    \n\n
    \n
    \n
    \n

    {PROFILE_TAB_LABELS.JOIN_CHALLENGES_EARN_BADGES}

    \n
    \n
    \n \n
    \n
    \n
    \n }\n
    \n\n
    \n\n {/* analytics view */}\n {projectConfig.hasInAppAnalytics && user.eagle_leader &&\n
    \n
    {\n history.push(`/analytics`);\n }} className={[styles.metricBox]}>\n

    {projectConfig.inAppAnalyticsLabel}

    \n
    \n \n
    \n
    \n
    }\n \n )}\n \n \n \n \n \n ) : (\n \n )}\n \n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {Link} from 'react-router-dom';\nimport styles from './RWBRowButton.module.css';\nimport ChevronRightIcon from './svgs/ChevronRightIcon';\n\nexport default class RWBRowButton extends Component {\n render() {\n return (\n \n {this.props.children}\n

    {this.props.label}

    \n \n \n );\n }\n}\n\nRWBRowButton.defaultProps = {\n link: false,\n};\n\nRWBRowButton.propTypes = {\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n link: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","'use strict';\n\nimport {projectConfig} from './projectConfig';\n\nexport const HEADER = `LIABILITY WAIVER & ACKNOWLEDGEMENT`;\nexport const SUBHEADER = `(THIS DOCUMENT AFFECTS YOUR LEGAL RIGHTS. YOU MUST READ AND UNDERSTAND BEFORE SUBMITTING)`;\nexport const INTRODUCTION = `This document governs your participation in ${projectConfig.orgName} Activities.\\n`;\n\nexport const INCLUSIVITY = `Buddy Up Australia is an inclusive organisation, and attempts to deliver varying events and activities, both at the local and national level, that accommodate all physical abilities and fitness levels. It is the responsibility of individual participants to work with appropriate medical professionals to determine which activities and events best align with their abilities and fitness levels.`;\n\nexport const MEDICAL = `\\nI certify that I am medically and physically capable to participate in Buddy Up Australia events, including any and all associated training and development activities during Buddy Up Australia physical fitness events and/or Buddy Up Australia social and community service events (collectively, “Buddy Up Australia Activities”), and have taken into consideration any potential limitations including those communicated by medical personnel. My medical and/or physical condition will not endanger myself or others if I participate in Buddy Up Australia Activities. As stated below, participation in Buddy Up Australia Activities presents an inherent risk of injury to person and property. I certify that, to the best of my knowledge, I will take into consideration any known medical or physical conditions before agreeing to participate in Buddy Up Australia activities. Additionally, I certify that I have primary medical insurance in place to cover any expenses related to any potential injury that may arise from my participation in Buddy Up Australia Activities.`;\n\nexport const INDEMNIFICATION = ``;\n\nexport const INDEMN_CLAUSES = `1. I knowingly and freely assume all such risks from Buddy Up Australia Activities, both known and unknown, identified or unidentified, anticipated or unanticipated, even if arising from the negligence of any releasee or others, and I assume full responsibility for my participation.\n\\n2. I willingly agree to comply with the stated and customary terms and conditions for Buddy Up Australia Activities including the terms and conditions relating to the delivery of events through a third party supplier.\n\\n3. At all times, I will exercise due caution and abide by the practices and principles of fitness safety.\n\\n4. I hereby consent to receive medical treatment, which may be deemed advisable in the event of injury, accident, or illness during my participation in Buddy Up Australia Activities.\n\\n5. I understand that still and video images of me may be taken in conjunction with Buddy Up Australia Activities and agree that they may be used to promote Buddy Up Australia. Should I not consent to any images being taken of me and used for promotional purposes, I acknowledge that it is my responsibility to notify a Buddy Up Representative of this prior to attending each and any event, in writing (e.g. email).\n\\n6. At all times, I will wear proper safety equipment and clothing based on customary practices.\n\\n7. I accept responsibility for the condition and adequacy of any personal equipment I choose to bring along to a physical fitness event. For example, a personally owned bicycle and appropriate safety equipment such as a helmet.\n\\n8. In consideration of my use of equipment owned by Buddy Up Australia, I expressly agree and contract, on behalf of myself and my heirs, that Buddy Up Australia shall not be liable for any damages arising from personal injuries (including death) sustained by me, as a result of the use of the equipment.\n\\n9. Buddy Up Australia Limited has, in its sole and unrestricted discretion, the right to cancel or postpone an event if it is deemed unsafe to participate.  Buddy Up Australia Limited also has the right, in its sole and unrestricted discretion, to change the course or nature of an event.\n\nI hereby indemnify and hold harmless the releasees from any damages, fees, or expenses arising from any claim asserted in contravention of this liability waiver and acknowledgement, including but not limited to all reasonable and necessary legal fees. I sign this document freely and voluntarily without any inducement or anyone forcing me to participate despite the risks.\n`\n\nexport const RESPONSIBILITY = ``;\n\nexport const ENTIRETY = `\\nI understand that this is the entire agreement between Buddy Up Australia and me, that it is for the benefit of all RELEASEES, and that it cannot be modified or changed in any way by the representations of Buddy Up Australia or any employee or agent of Buddy Up Australia or any of the RELEASEES or by me. This Liability Waiver & Acknowledgment may not be modified orally.`;\n\nexport const NO_WAIVER = `\\nA waiver or modification of any provision shall not be export construed as a modification of any other provision herein or as a consent to any subsequent waiver or modification.`;\n\nexport const SEVERABILITY = `\\nEvery term and provision of this Liability Waiver & Acknowledgement is severable. If any one or more of them is found to be unenforceable or invalid, that shall not affect the other terms and provisions which shall remain binding and enforceable. My signature below indicates that I have read this entire document, understand it completely, and agree to be bound by its terms.`;\n\nexport const MINORITY_CONSENT = ``;","import React, {Component} from 'react';\nimport * as LEGAL from '../LegalCopy'\n\nconst Header = () => {\n return (\n
    \n
    {LEGAL.HEADER}
    \n
    {LEGAL.SUBHEADER}
    \n
    {LEGAL.INTRODUCTION}{'\\n'}
    \n
    \n );\n};\n\nconst Inclusivity = () => {\n return
    {LEGAL.INCLUSIVITY}
    ;\n};\n\nconst Medical = () => {\n return (\n
    \n
    Medical:
    \n {LEGAL.MEDICAL}\n
    \n );\n};\n\nconst IndemnficationAndRisk = () => {\n return (\n
    \n {/*
    \n
    \n Indemnification and Risk Acknowledgment:\n
    \n {LEGAL.INDEMNIFICATION}\n
    */}\n
    {LEGAL.INDEMNIFICATION}
    \n
    \n );\n};\n\nconst Responsibility = () => {\n return
    {LEGAL.RESPONSIBILITY}
    ;\n};\n\n\nconst Entirety = () => {\n return (\n
    \n
    Entire Agreement:
    \n {LEGAL.ENTIRETY}\n
    \n );\n};\n\nconst NoWaiver = () => {\n return (\n
    \n
    No Waiver:
    \n {LEGAL.NO_WAIVER}\n
    \n );\n};\n\nconst Severability = () => {\n return (\n
    \n
    Severability:
    \n {LEGAL.SEVERABILITY}\n
    \n );\n};\n\nconst Signatures = () => {\n return (\n
    \n
    \n {/* Participant’s Signature: ELECTRONICALLY SIGNED & DATED */}\n Participant’s Signature: ELECTRONICALLY SIGNED & DATED\n
    \n
    \n FOR PARTICIPANTS OF MINORITY AGE (UNDER AGE 18 AT TIME OF REGISTRATION)\n
    \n
    {LEGAL.MINORITY_CONSENT}
    \n
    \n Parent/Guardian Signature: ELECTRONICALLY SIGNED & DATED\n
    \n
    \n );\n};\nexport default class LegalWaiver extends Component {\n render() {\n return (\n
    \n
    \n \n \n \n \n \n \n \n \n
    \n );\n }\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\nimport Modal from '@material-ui/core/Modal';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport Fade from '@material-ui/core/Fade';\nimport LegalWaiver from '../../../shared/project-info/web-project-info/LegalWaiver';\n\nconst useStyles = makeStyles(() => ({\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n overflowY: 'scroll',\n display: 'flex',\n flexDirection: 'column',\n textAlign: 'justify',\n height: '90%',\n width: '60%',\n backgroundColor: 'var(--white)',\n padding: '32px',\n '&:focus-visible': {\n outlineColor: 'var(--primary)',\n },\n },\n goBackButton: {\n width: '150px',\n padding: '15px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '5px',\n backgroundColor: 'var(--primary)',\n color: 'white',\n alignSelf: 'center',\n marginTop: '20px',\n cursor: 'pointer',\n },\n}));\n\nexport default function LegalModal({modalHandler, type}) {\n const classes = useStyles();\n\n return (\n
    \n modalHandler(false)}\n closeAfterTransition\n BackdropComponent={Backdrop}\n BackdropProps={{\n timeout: 500,\n }}>\n \n
    \n \n modalHandler(false)}>\n Close\n
    \n
    \n \n \n \n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class PrivacyIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nPrivacyIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nPrivacyIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class AccountIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nAccountIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nAccountIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class LogoutIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nLogoutIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nLogoutIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class KeyIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nKeyIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nKeyIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class TrashIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nTrashIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nTrashIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class EmailIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nEmailIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nEmailIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class BlockIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nBlockIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nBlockIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {useState} from 'react';\nimport styles from './MyAppSettings.module.css';\nimport {\n Toolbar,\n IconButton,\n Typography,\n Button,\n makeStyles,\n Paper,\n} from '@material-ui/core';\nimport {Close as CloseIcon} from '@material-ui/icons';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport RWBRowButton from '../RWBRowButton';\nimport {userLocation} from '../../../../shared/models/UserLocation';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {authentication} from '../../../../shared/models/Authentication';\nimport {logLogout} from '../../../../shared/models/Analytics';\nimport {useHistory, useRouteMatch} from 'react-router-dom';\nimport {filters} from '../../models/Filters';\nimport LegalModal from '../LegalModal';\nimport {isDev} from '../../../../shared/utils/IsDev';\nimport {NEWSLETTER_PREFERENCES} from '../../../../shared/constants/URLs';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\nimport moment from 'moment';\nimport { paymentConfig } from '../../../../shared/project-info/paymentConfig';\n\n// svgs\nimport PrivacyIcon from '../svgs/PrivacyIcon';\nimport AccountIcon from '../svgs/AccountIcon';\nimport LogoutIcon from '../svgs/LogoutIcon';\nimport KeyIcon from '../svgs/KeyIcon';\nimport DocumentIcon from '../svgs/DocumentIcon';\nimport TrashIcon from '../svgs/TrashIcon';\nimport MailIcon from '../svgs/EmailIcon';\nimport BlockIcon from '../svgs/BlockIcon';\n\nconst MyAppSettings = () => {\n const useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n },\n menuButton: {\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontFamily: 'OpenSans-Bold',\n textAlign: 'center',\n // title should always center, regardless of length of siblings\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n },\n toolbar: {\n position: 'relative',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n },\n bottomRow: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n padding:25\n },\n }));\n const classes = useStyles();\n\n const history = useHistory();\n const match = useRouteMatch();\n const [isLegalWaiver, setIsLegalWaiver] = useState(false);\n const [userDetails,setuserDetails] = useState(userProfile.getUserProfile())\n\n const legalWaiverHandler = (state) => setIsLegalWaiver(state);\n\n // Temporary logout logic\n const logoutHandler = async () => {\n if (window.confirm('Are you sure you want to logout?')) {\n logLogout();\n userLocation.deleteUserLocation();\n userProfile.deleteUserProfile();\n filters.deleteFilters();\n await authentication.deleteAuthentication();\n window.localStorage.clear();\n history.replace('/login');\n // FBLoginManager.logOut();\n // GoogleSignin.signOut();\n }\n };\n\n return (\n
    \n \n \n history.goBack()}>\n \n \n \n App Settings\n \n \n \n
    \n {projectConfig.hasPayment && history.push(`${match.path}/membershipoptionview`)}>\n \n }\n history.push(`${match.path}/personal-info`)}>\n \n \n {projectConfig.supportsAnonymousUsers && history.push(`${match.path}/privacy-settings`)}>\n \n }\n {history.push(`${match.path}/blocked-users`)}}>\n \n \n history.push(`${match.path}/password-update`)}>\n \n \n legalWaiverHandler(true)}>\n \n \n window.open(projectConfig.privacyPolicy, '_blank', 'noopener')}>\n \n \n window.open(projectConfig.communityGuidelines, '_blank', 'noopener')}>\n \n \n window.open(projectConfig.termsConditions, '_blank', 'noopener')}>\n \n \n {\n history.push(`${match.path}/delete-account`);\n }}>\n \n \n {/* {\n // no preferences on staging, so use acccount 176249 (Daniel Ellman) on prod\n isDev()\n ? window.open(`${NEWSLETTER_PREFERENCES}0033h00000OZ5dBAAT`)\n : window.open(\n `${NEWSLETTER_PREFERENCES}${userProfile.salesforce_contact_id}`,\n );\n }}> */}\n {/* fix size */}\n {/* \n */}\n \n \n \n {isLegalWaiver && }\n {/* links and version number */}\n
    \n \n Powered by Your Community App\n \n {`VERSION ${projectConfig.version}`}\n {/* TODO add version number */}\n
    \n
    \n
    \n );\n};\nexport default MyAppSettings;\n","import React, {useState, useEffect} from 'react';\nimport styles from './ProfileFollowers.module.css';\nimport {\n Paper,\n Toolbar,\n IconButton,\n makeStyles,\n Tabs,\n Tab,\n Grid,\n} from '@material-ui/core';\nimport XIcon from '../svgs/XIcon';\nimport {useHistory, useLocation} from 'react-router-dom';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport {MdStar as StarIcon} from 'react-icons/md';\nimport Loading from '../Loading';\nimport {ClipLoader} from 'react-spinners';\nimport {logUnfollow, logFollow} from '../../../../shared/models/Analytics';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport ReusableTabs from '../ReusableTabs';\nimport {\n formatStatusTitle,\n isValidFollowing,\n} from '../../../../shared/utils/Helpers';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\n\nconst useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n boxShadow: '0px 0px 0px 0px',\n position: 'sticky',\n },\n menuButton: {\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n },\n toolbar: {\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n height: 64,\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n },\n iconLabelWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n fontWeight: 'bold',\n color: 'var(--grey)',\n },\n iconLabelWrapperSelected: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n fontWeight: 'bold',\n color: 'var(--primary)',\n },\n tabs: {\n borderBottom: '1px solid var(--grey20)',\n },\n indicator: {\n backgroundColor: 'var(--primary)',\n border: null,\n borderColor: null,\n },\n}));\n\nconst ProfileFollowers = () => {\n const location = useLocation();\n\n const [selectedValue, setSelectedValue] = useState(location?.state?.index || 0);\n const [isLoading, setIsLoading] = useState(true);\n const [followersList, setFollowersList] = useState([]);\n const [followingList, setFollowingList] = useState([]);\n const [retrievedLastFollower, setRetrievedLastFollower] = useState(false);\n const [retrievedLastFollowing, setRetrievedLastFollowing] = useState(false);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const classes = useStyles();\n const selectedUserID =\n location?.state?.selectedUserID || userProfile.getUserProfile().id;\n const loggedInID = userProfile.getUserProfile().id;\n const history = useHistory();\n\n // events are followed, but we don't want to display them\n // this is used to determine the length of valid following as we save the undisplayed ones to check for length\n const filterFollowing = (following) => {\n return following.filter((followingObj) => followingObj.first_name);\n };\n\n useEffect(() => {\n getFollowersList(0).then((followers) => {\n setFollowersList(followers);\n selectedValue === 0 && setIsLoading(false);\n getFollowingList(0).then((following) => {\n setFollowingList(following);\n setIsLoading(false);\n if (\n following?.length > filterFollowing(following)?.length &&\n following?.length === 10\n ) {\n handleInitialFollowing(following);\n }\n });\n });\n }, []);\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n }, [followersList, followingList, selectedValue]);\n\n useEffect(() => {\n if (retrievedLastFollower) handleLoadMore('followers');\n }, [retrievedLastFollower]);\n\n useEffect(() => {\n if (retrievedLastFollowing) handleLoadMore('following');\n }, [retrievedLastFollowing]);\n\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n selectedValue === 0\n ? setRetrievedLastFollower(true)\n : setRetrievedLastFollowing(true);\n }\n };\n\n const onChangeHandler = (index) => setSelectedValue(index);\n\n const getFollowersList = (offset) => {\n return rwbApi\n .getFollows(selectedUserID, 'followers', offset)\n .then((result) => {\n return result;\n });\n };\n\n const getFollowingList = (offset) => {\n return rwbApi\n .getFollows(selectedUserID, 'following', offset)\n .then((result) => {\n return result;\n });\n };\n\n const updateFollowStateFollowers = (id, isFollowing) => {\n if (isFollowing) {\n rwbApi\n .unfollowUser(id)\n .then(() => {\n let followersListTemp = followersList.filter((item) => {\n if (item.id === id) {\n item.following = false;\n }\n return item;\n });\n setFollowersList(followersListTemp);\n logUnfollow();\n })\n .catch((error) => {\n console.error(error);\n const callbackArr = setFollowersList(...followersList);\n setFollowersList(callbackArr);\n });\n } else {\n const followedUser = followersList.find((item) => item.id === id);\n followedUser.following = true;\n rwbApi\n .followUser(id)\n .then(() => {\n let followersListTemp = followersList.filter((item) => {\n if (item.id === id) item.following = true;\n return item;\n });\n setFollowersList(followersListTemp);\n logFollow();\n })\n .catch((error) => {\n console.error(error);\n followedUser.following = false;\n const newFollowersArr = [...followersList, followedUser];\n setFollowersList(newFollowersArr);\n });\n }\n };\n\n const updateFollowStateFollowing = (id, isFollowing) => {\n if (isFollowing) {\n rwbApi\n .unfollowUser(id)\n .then(() => {\n let followingListTemp = followingList.filter((item) => {\n if (item.id === id) {\n item.following = false;\n }\n return item;\n });\n setFollowingList(followingListTemp);\n logUnfollow();\n })\n .catch((error) => {\n console.error(error);\n const callbackArr = setFollowingList(...followingList);\n setFollowingList(callbackArr);\n });\n } else {\n const followedUser = followingList.find((item) => item.id === id);\n followedUser.following = true;\n rwbApi\n .followUser(id)\n .then(() => {\n let followingListTemp = followingList.filter((item) => {\n if (item.id === id) item.following = true;\n return item;\n });\n setFollowingList(followingListTemp);\n logFollow();\n })\n .catch((error) => {\n console.error(error);\n followedUser.following = false;\n const newFollowingArr = [...followingList, followedUser];\n setFollowingList(newFollowingArr);\n });\n }\n };\n\n const selectUserHandler = (user) => {\n if (user.anonymous_profile)\n alert('This user has set their profile to anonymous.');\n else history.push(`/profile/${user.id}`);\n };\n\n const handleLoadMore = (relation) => {\n if (relation === 'followers') {\n if (retrievedLastFollower) {\n setIsLoadingMore(true);\n getFollowersList(followersList?.length).then((result) => {\n if (result?.length > 0) {\n let newFollowersList = [...followersList, ...result];\n setFollowersList(newFollowersList);\n setRetrievedLastFollower(false);\n setIsLoadingMore(false);\n } else {\n setIsLoadingMore(false);\n }\n });\n }\n } else {\n if (retrievedLastFollowing) {\n setIsLoadingMore(true);\n getFollowingList(followingList?.length).then((result) => {\n if (result?.length > 0) {\n let newFollowingList = [...followingList, ...result];\n setFollowingList(newFollowingList);\n setRetrievedLastFollowing(false);\n setIsLoadingMore(false);\n } else {\n setIsLoadingMore(false);\n }\n });\n }\n }\n };\n\n // used at the start to ensure the following list is populated enough to be scrollable and continue loading more\n // this is needed because events are followed, but they should not be displayed\n const handleInitialFollowing = (following) => {\n setIsLoadingMore(true);\n getFollowingList(following?.length).then((result) => {\n if (result?.length > 0) {\n let newFollowingList = [...following, ...result];\n setFollowingList(newFollowingList);\n if (filterFollowing(newFollowingList)?.length < 10) {\n handleInitialFollowing(newFollowingList);\n } else {\n setRetrievedLastFollowing(false);\n setIsLoadingMore(false);\n }\n } else {\n setIsLoadingMore(false);\n }\n });\n };\n\n return (\n \n \n history.goBack()}\n className={classes.menuButton}\n color=\"inherit\">\n \n \n \n \n
    \n {isLoading ? (\n
    \n \n
    \n ) : (\n <>\n {selectedValue === 0 ? (\n <>\n {followersList?.length > 0 &&\n followersList.map((item, i) => {\n return (\n \n );\n })}\n \n ) : (\n <>\n {followingList?.length > 0 &&\n followingList.map((item, i) => {\n // users follow events when they set a status on one\n /* in order to keep the offset proper for loading more events, these event follows\n will still be saved, but not displayed */\n return isValidFollowing(item) ? (\n \n ) : null;\n })}\n \n )}\n \n \n \n \n )}\n
    \n \n
    \n );\n};\n\nconst UserCard = ({user, onSelect, followable, following, onFollow}) => {\n return (\n
    onSelect(user)}>\n
    \n \n
    \n
    \n

    {`${user.first_name} ${user.last_name}`}

    \n {/* {user.eagle_leader && } */}\n
    \n {/* TODO pull in if user is a type of \"leader\" */}\n {user.eagle_leader && (\n
    \n {projectConfig.leaderRoleDisplay}\n
    \n )}\n

    {user?.preferred_chapter?.name}

    \n

    \n {/* TODO get the service info from users and if user is public or not */}\n {/* {formatStatusTitle(user.service_info.status, user.service_info.service_type)} */}\n

    \n
    \n
    \n {followable && (\n {\n e.stopPropagation();\n onFollow(user.id, following);\n }}>\n

    {following ? 'Unfollow' : 'Follow'}

    \n
    \n )}\n \n );\n};\n\nexport default ProfileFollowers;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class FlagIcon extends Component {\n render() {\n return (\n \n \n \n \n \n \n );\n }\n}\n\nFlagIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: 'var(--primary)',\n};\n\nFlagIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {useState} from 'react';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormLabel from '@material-ui/core/FormLabel';\n\nexport default function RadioButtons({\n label,\n data,\n userProp,\n setMilitaryValue,\n setMilitaryRank,\n extraMarginBottom,\n}) {\n const [value, setValue] = useState(userProp);\n\n const handleChange = (event) => {\n if (event.target.value === 'true') {\n setValue(true);\n setMilitaryValue(true);\n } else if (event.target.value === 'false') {\n setValue(false);\n setMilitaryValue(false);\n } else {\n setValue(event.target.value);\n setMilitaryValue(event.target.value);\n if (label === 'Military Branch') setMilitaryRank(null);\n }\n };\n\n return (\n \n \n

    {label}

    \n \n \n {data &&\n data.map((item, key) => (\n } // TODO, get this to be matching colors like radio button\n label={item.label.toString()}\n style={{\n position: 'relative',\n marginBottom: extraMarginBottom ? 25 : null,\n }}\n />\n ))}\n \n
    \n );\n}\n","'use strict';\n\nimport {projectConfig} from '../project-info/projectConfig';\nimport { primaryOptions, subOptions } from '../project-info/serviceInfo';\n\nconst status_radio_props = primaryOptions;\n\nconst branch_radio_props = subOptions;\n\nconst disability_radio_props = [\n {label: 'Yes', value: true},\n {label: 'No', value: false},\n];\n\nconst zone_radio_props = [\n {label: 'Yes', value: true},\n {label: 'No', value: false},\n];\n\nconst deployment_radio_props = [\n {label: 'World War II', value: 'World War II'},\n {label: 'Korean War', value: 'Korean War'},\n {label: 'Vietnam War', value: 'Vietnam War'},\n {label: 'Dominican Republic', value: 'Dominican Republic'},\n {label: 'Lebanon', value: 'Lebanon'},\n {label: 'Grenada', value: 'Grenada'},\n {label: 'Panama', value: 'Panama'},\n {label: 'Gulf War', value: 'Gulf War'},\n {label: 'Somalia', value: 'Somalia'},\n {label: 'Haiti', value: 'Haiti'},\n {label: 'Bosnia', value: 'Bosnia'},\n {label: 'Kosovo', value: 'Kosovo'},\n {label: 'Afghanistan', value: 'Afghanistan'},\n {label: 'Iraq', value: 'Iraq'},\n {label: 'Other', value: 'Other'},\n];\n\nconst military_props = {\n status_radio_props,\n branch_radio_props,\n disability_radio_props,\n zone_radio_props,\n deployment_radio_props,\n};\n\nconst address_type_radio_props = [\n {label: 'United States', value: 'domestic'},\n {label: 'International', value: 'international'},\n];\n\nconst gender_radio_props = projectConfig.validGenderOptions;\n\nconst personal_info_props = {\n address_type_radio_props,\n gender_radio_props,\n};\n\nconst anon_radio_props = [\n {\n label: `Yes, I would like to make my profile public (name, chapter, service, activities, and profile image may be shared with other members on the ${projectConfig.name} website and app).`,\n value: false,\n },\n {\n label: `No, please keep my profile anonymous (I will not be able to post to feed and events, and will not be able to create events on the ${projectConfig.name} website and app).`,\n value: true,\n },\n];\n\nconst anonymity_props = {\n anon_radio_props,\n};\n\nconst sizes_radio_props = [\n {label: 'Mens Small', value: 'Mens Small'},\n {label: 'Mens Medium', value: 'Mens Medium'},\n {label: 'Mens Large', value: 'Mens Large'},\n {label: 'Mens X-Large', value: 'Mens X-Large'},\n {label: 'Mens XX-Large', value: 'Mens XX-Large'},\n {label: 'Mens 3XL', value: 'Mens 3XL'},\n {label: 'Mens 4XL', value: 'Mens 4XL'},\n {label: 'Womens Small', value: 'Womens Small'},\n {label: 'Womens Medium', value: 'Womens Medium'},\n {label: 'Womens Large', value: 'Womens Large'},\n {label: 'Womens X-Large', value: 'Womens XL'},\n {label: 'Womens XX-Large', value: 'Womens XX-Large'},\n];\n\nconst radio_props = {\n sizes_radio_props,\n};\n\nexport {\n military_props as MILITARY_PROPS,\n personal_info_props as PERSONAL_INFO_PROPS,\n anonymity_props as ANON_PROPS,\n radio_props as RADIO_PROPS,\n};\n","import React, {useState, memo} from 'react';\nimport PropTypes from 'prop-types';\nimport Button from '@material-ui/core/Button';\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport styles from './MenuButton.module.css';\nimport {isObject} from '../../../../shared/utils/Helpers';\nimport ChevronDownIcon from '../svgs/ChevronDownIcon';\n\nconst MenuButton = memo(\n ({label, data, setMilitaryValue, userProp, fullWidth, placeholder}) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [selectedItem, setSelectedItem] = useState(userProp);\n\n // this file manages what is displayed instead of displaying props\n // because of this, we want to reset the item in here if it should be empty\n // this case is when a user swithces the branch and forces the rank to change, but the text needs to be updated here\n if (userProp === null && selectedItem !== null) {\n setSelectedItem(null);\n }\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const selectHandler = (item) => {\n setSelectedItem(item);\n setMilitaryValue(item);\n setAnchorEl(null);\n };\n\n return (\n
    \n

    {label}

    \n \n {isObject(selectedItem) ? (\n
    \n {selectedItem.name ||\n selectedItem.title ||\n selectedItem.label ||\n 'Select One'}\n
    \n ) : (\n
    \n {selectedItem || placeholder}\n
    \n )}\n \n \n \n {data && isObject(data)\n ? Object.keys(data).map((item, key) => (\n selectHandler(data[item])}>\n {data[item]}\n \n ))\n : data.map((item, key) => (\n selectHandler(item)}>\n {item.name || item.label || item}\n \n ))}\n \n
    \n );\n },\n);\n\nMenuButton.defaultProps = {\n placeholder: 'Select One',\n};\n\nexport default MenuButton;\n","'use strict';\n\nconst armyEnlistedRanks = {\n 'PVT': 'E-1 Private',\n 'PV2': 'E-2 Private',\n 'PFC': 'E-3 Private First Class',\n 'SPC': 'E-4 Specialist',\n 'CPL': 'E-4 Corporal',\n 'SGT': 'E-5 Sergeant',\n 'SSG': 'E-6 Staff Sergeant',\n 'SFC': 'E-7 Sergeant First Class',\n 'MSG': 'E-8 Master Sergeant',\n '1SG': 'E-8 First Sergeant',\n 'SGM': 'E-9 Sergeant Major',\n 'CSM': 'E-9 Command Sergeant Major',\n};\nconst armyWarrantRanks = {\n 'WO1': 'W-1 Warrant Officer 1',\n 'CW2': 'W-2 Chief Warrant Officer 2',\n 'CW3': 'W-3 Chief Warrant Officer 3',\n 'CW4': 'W-4 Chief Warrant Officer 4',\n 'CW5': 'W-5 Chief Warrant Officer 5',\n};\nconst armyOfficerRanks = {\n '2LT': 'O-1 Second Lieutenant',\n '1LT': 'O-2 First Lieutenant',\n 'CPT': 'O-3 Captain',\n 'MAJ': 'O-4 Major',\n 'LTC': 'O-5 Lieutenant Colonel',\n 'COL': 'O-6 Colonel',\n 'BG': 'O-7 Brigadier General',\n 'MG': 'O-8 Major General',\n 'LTG': 'O-9 Lieutenant General',\n 'GEN': 'O-10 General'\n};\n\nconst marinesEnlistedRanks = {\n 'PVT': 'E-1 Private',\n 'PFC': 'E-2 Private First Class',\n 'LCpl': 'E-3 Lance Corporal',\n 'Cpl': 'E-4 Corporal',\n 'Sgt': 'E-5 Sergeant',\n 'SSgt': 'E-6 Staff Sergeant',\n 'GySgt': 'E-7 Gunnery Sergeant',\n 'MSgt': 'E-8 Master Sergeant',\n 'FSgt': 'E-8 First Sergeant',\n 'MGySgt': 'E-9 Master Gunnery Sergeant',\n 'SgtMaj': 'E-9 Sergeant Major',\n};\nconst marinesWarrantRanks = armyWarrantRanks;\nconst marinesOfficerRanks = armyOfficerRanks;\n\nconst navyEnlistedRanks = {\n 'SR': 'E-1 Seaman Recruit',\n 'SA': 'E-2 Seaman Apprentice',\n 'SN': 'E-3 Seaman',\n 'PO3': 'E-4 Petty Officer Third Class',\n 'PO2': 'E-5 Petty Officer Second Class',\n 'PO1': 'E-6 Petty Officer First Class',\n 'CPO': 'E-7 Chief Petty Officer',\n 'SCPO': 'E-8 Senior Chief Petty Officer',\n 'MCPO': 'E-9 Master Chief Petty Officer',\n 'FMCPO': 'E-9 Fleet/Command Master Chief Petty Officer',\n};\nconst navyWarrantRanks = {\n 'WO1': 'W-1 USN Warrant Officer 1',\n 'CWO2': 'W-2 USN Chief Warrant Officer 2',\n 'CWO3': 'W-3 USN Chief Warrant Officer 3',\n 'CWO4': 'W-4 USN Chief Warrant Officer 4',\n 'CWO5': 'W-5 USN Chief Warrant Officer 5',\n};\nconst navyOfficerRanks = {\n 'ENS': 'O-1 Ensign',\n 'LTJG': 'O-2 Lieutenant Junior Grade',\n 'LT': 'O-3 Lieutenant',\n 'LCDR': 'O-4 Lieutenant Commander',\n 'CDR': 'O-5 Commander',\n 'CAPT': 'O-6 Captain',\n 'RDML': 'O-7 Rear Admiral Lower Half',\n 'RADM': 'O-8 Rear Admiral Upper Half',\n 'VADM': 'O-9 Vice Admiral',\n 'ADM': 'O-10 Admiral'\n};\n\nconst airForceEnlistedRanks = {\n 'AMB': 'E-1 Airman Basic',\n 'Amn': 'E-2 Airman',\n 'A1C': 'E-3 Airman First Class',\n 'SrA': 'E-4 Senior Airman',\n 'SSgt': 'E-5 Staff Sergeant',\n 'TSgt': 'E-6 Technical Sergeant',\n 'MSgt': 'E-7 Master Sergeant',\n '7Sgt': 'E-7 First Sergeant',\n 'SMSgt': 'E-8 Senior Master Sergeant',\n '8Sgt': 'E-8 First Sergeant',\n 'CMSgt': 'E-9 Chief Master Sergeant',\n '9Sgt': 'E-9 First Sergeant',\n 'CCMSgt': 'E-9 Command Chief Master Sergeant',\n};\n// The Air Force has no Warrant ranks\nconst airForceOfficerRanks = armyOfficerRanks;\n\nconst coastGuardEnlistedRanks = {\n 'SR': 'E-1 Seaman Recruit',\n 'SA': 'E-2 Seaman Apprentice',\n 'SN': 'E-3 Seaman',\n 'PO3': 'E-4 Petty Officer Third Class',\n 'PO2': 'E-5 Petty Officer Second Class',\n 'PO1': 'E-6 Petty Officer First Class',\n 'CPO': 'E-7 Chief Petty Officer',\n 'SCPO': 'E-8 Senior Chief Petty Officer',\n 'MCPO': 'E-9 Master Chief Petty Officer',\n 'FMCPO': 'E-9 Fleet/Command Master Chief Petty Officer',\n};\n// Coast Guard has no W-1 and W-5 Warrant ranks\nconst coastGuardWarrantRanks = {\n 'CWO2': 'W-2 Chief Warrant Officer 2',\n 'CWO3': 'W-3 Chief Warrant Officer 3',\n 'CWO4': 'W-4 Chief Warrant Officer 4',\n};\nconst coastGuardOfficerRanks = navyOfficerRanks;\n\nexport {\n armyEnlistedRanks as ARMY_ENLISTED,\n armyWarrantRanks as ARMY_WARRANT,\n armyOfficerRanks as ARMY_OFFICER,\n\n marinesEnlistedRanks as MARINES_ENLISTED,\n marinesWarrantRanks as MARINES_WARRANT,\n marinesOfficerRanks as MARINES_OFFICER,\n\n navyEnlistedRanks as NAVY_ENLISTED,\n navyWarrantRanks as NAVY_WARRANT,\n navyOfficerRanks as NAVY_OFFICER,\n\n airForceEnlistedRanks as AIRFORCE_ENLISTED,\n airForceOfficerRanks as AIRFORCE_OFFICER,\n\n coastGuardEnlistedRanks as COASTGUARD_ENLISTED,\n coastGuardWarrantRanks as COASTGUARD_WARRANT,\n coastGuardOfficerRanks as COASTGUARD_OFFICER,\n};\n","import React, {memo, useMemo} from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport RadioButtons from './RadioButtons';\nimport {MILITARY_PROPS} from '../../../../shared/constants/RadioProps';\nimport MenuButton from './MenuButton';\nimport {\n ARMY_ENLISTED,\n ARMY_WARRANT,\n ARMY_OFFICER,\n MARINES_ENLISTED,\n MARINES_WARRANT,\n MARINES_OFFICER,\n NAVY_ENLISTED,\n NAVY_WARRANT,\n NAVY_OFFICER,\n AIRFORCE_ENLISTED,\n AIRFORCE_OFFICER,\n COASTGUARD_ENLISTED,\n COASTGUARD_WARRANT,\n COASTGUARD_OFFICER,\n} from '../../../../shared/constants/military/ranks';\nimport {MILITARY_STATUSES} from '../../../../shared/constants/MilitaryStatusSlugs';\nimport {months, days} from '../../../../shared/constants/MonthsAndDays';\nimport {generateYears, isMilitaryUser} from '../../../../shared/utils/Helpers';\nimport ToggleSwitch from '../ToggleSwitch';\nimport styles from './EditMyProfile.module.css';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n },\n heading: {\n fontSize: theme.typography.pxToRem(15),\n fontWeight: theme.typography.fontWeightRegular,\n marginLeft: '25px',\n display: 'flex',\n },\n svg: {\n marginRight: '10px',\n },\n expansionPanel: {\n padding: '8px 40px 16px',\n },\n typography: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n}));\n\nconst {\n status_radio_props,\n branch_radio_props,\n disability_radio_props,\n zone_radio_props,\n deployment_radio_props,\n} = MILITARY_PROPS;\n\nconst ExpansionPanelComponent = memo(\n ({\n label,\n Icon,\n militaryStatus,\n militaryFamily,\n militaryBranch,\n militaryRank,\n disability,\n militaryETSMonth,\n militaryETSDay,\n militaryETSYear,\n militaryETSError,\n combatZone,\n combatZoneOperation,\n setMilitaryStatus,\n setMilitaryFamily,\n setMilitaryBranch,\n setMilitaryRank,\n setMilitaryETSMonth,\n setMilitaryETSDay,\n setMilitaryETSYear,\n rankError,\n setDisability,\n setCombatZone,\n setCombatZoneOperation,\n expanded,\n }) => {\n const classes = useStyles();\n\n return (\n
    \n \n }\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\">\n \n {label}\n \n \n \n \n \n {isMilitaryUser(militaryStatus) && (\n \n )}\n\n \n\n \n \n \n
    \n );\n },\n);\n\nexport default ExpansionPanelComponent;\n","import React, {useState, useMemo, useEffect} from 'react';\nimport styles from './EditMyProfile.module.css';\nimport XIcon from '../svgs/XIcon';\nimport {Paper, Toolbar, IconButton, makeStyles, Typography,} from '@material-ui/core';\nimport {useHistory} from 'react-router-dom';\nimport CheckIcon from '../svgs/CheckIcon';\nimport ChevronRightIcon from '../svgs/ChevronRightIcon'\nimport LocationIcon from '../svgs/LocationIcon';\nimport FlagIcon from '../svgs/FlagIcon';\nimport RWBUserImages from '../RWBUserImages';\nimport TextInput from '../TextInput';\nimport TextArea from '../TextArea';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport ExpansionPanel from './ExpansionPanel';\nimport RadioButtons from './RadioButtons';\nimport {isNullOrEmpty} from '../../../../shared/utils/Helpers';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport moment from 'moment';\nimport {MILITARY_STATUSES} from '../../../../shared/constants/MilitaryStatusSlugs';\nimport imageHandler from '../ImageHandler';\nimport {\n logCoverPhoto,\n logProfilePhoto,\n logUpdateMilitaryService,\n logUpdateProfile,\n} from '../../../../shared/models/Analytics';\nimport MenuButton from './MenuButton';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { ACCOUNT_ERRORS, UPLOADING_IMAGE_ERROR } from '../../../../shared/constants/ErrorMessages';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nconst useStyles = makeStyles(() => ({\n root: {\n flexGrow: 1,\n boxShadow: '0px 0px 0px 0px',\n position: 'sticky',\n },\n menuButton: {\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n },\n toolbar: {\n display: 'flex',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n height: 64,\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n },\n iconLabelWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n fontWeight: 'bold',\n color: 'var(--grey)',\n },\n iconLabelWrapperSelected: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n fontWeight: 'bold',\n color: 'var(--primary)',\n },\n indicator: {\n backgroundColor: 'var(--primary)',\n border: null,\n borderColor: null,\n },\n}));\n\nconst EditMyProfile = () => {\n const user = useMemo(() => userProfile.getUserProfile(), []);\n // if the user does not have an ets date, passing undefined creates a moment of now, which we want to avoid\n const etsDate = moment(user.military_ets || 'invalid');\n const ets_date_valid = etsDate.isValid();\n const [isLoading, setIsLoading] = useState(true);\n const [profileImage, setProfileImage] = useState(user.profile_photo_url);\n const [profileImageUri, setProfileImageUri] = useState();\n const [coverImage, setCoverImage] = useState(user.cover_photo_url);\n const [coverImageFile, setCoverImageFile] = useState(null);\n const [firstName, setFirstName] = useState(user.first_name);\n const [firstNameError, setFirstNameError] = useState(false);\n const [lastName, setLastName] = useState(user.last_name);\n const [lastNameError, setLastNameError] = useState(false);\n const [bioValue, setBioValue] = useState(user.profile_bio);\n const [bioError, setBioError] = useState(\"\")\n const [militaryStatus, setMilitaryStatus] = useState(user.service_info?.status);\n const [militaryFamily, setMilitaryFamily] = useState(\n user.military_family_member,\n );\n const [militaryBranch, setMilitaryBranch] = useState(user.service_info?.service_type);\n const [militaryETSMonth, setMilitaryETSMonth] = useState(\n ets_date_valid ? etsDate.format('MMMM') : '',\n );\n const [militaryETSDay, setMilitaryETSDay] = useState(\n ets_date_valid ? etsDate.format('DD') : '',\n );\n const [militaryETSYear, setMilitaryETSYear] = useState(\n ets_date_valid ? etsDate.format('YYYY') : '',\n );\n const [militaryETSError, setMilitaryETSError] = useState(false);\n const [militaryRank, setMilitaryRank] = useState(user.military_rank);\n const [rankError, setRankError] = useState(false);\n const [disability, setDisability] = useState(user.service_info?.culturally_and_linguistically_diverse);\n const [combatZone, setCombatZone] = useState(user.combat_zone);\n const [combatZoneOperation, setCombatZoneOperation] = useState(\n user.combat_deployment_operations,\n );\n const [chapterData, setChapterData] = useState([]);\n const [preferredChapter, setPreferredChapter] = useState(\n user.preferred_chapter,\n );\n const [newsletterSubscription1, setNewsletterSubscription1] = useState(\n user.newsletter_subscription?.[0],\n );\n const [newsletterSubscription2, setNewsletterSubscription2] = useState(\n user.newsletter_subscription?.[1],\n );\n const [expandedMilitaryPanel, setExpandedMilitaryPanel] = useState(false);\n\n const MAX_BIO_CHARS = 250;\n\n const classes = useStyles();\n const history = useHistory();\n\n useEffect(() => {\n setIsLoading(false);\n // rwbApi\n // .getChapters()\n // .then((jsonBody) => {\n // let {data} = jsonBody;\n // setChapterData(data);\n // setIsLoading(false);\n // })\n // .catch(() => {\n // errorAlert(ACCOUNT_ERRORS.CHAPTERS);\n // });\n }, []);\n\n const addImageHandler = async (e, type) => {\n const file = e.target.files[0];\n const reader = new FileReader();\n\n if (file) {\n // needs support for iOS devices as they are 'image/' type,\n // but are not selectable from the html accept value\n if (!file.type.includes('image/')) {\n window.alert('Invalid file format: please upload an image.');\n return;\n } else if (type === 'cover') {\n logCoverPhoto();\n setCoverImageFile(file);\n reader.readAsDataURL(file);\n reader.onload = () => {\n setCoverImage(reader.result);\n };\n } else {\n logProfilePhoto();\n setProfileImageUri(file);\n reader.readAsDataURL(file);\n reader.onload = () => {\n setProfileImage(reader.result);\n };\n }\n }\n };\n\n const uploadImage = async (file, type) => {\n try {\n return await imageHandler(file, type);\n } catch (error) {\n errorAlert(error.message);\n }\n };\n\n const clearWarnings = () => {\n setExpandedMilitaryPanel(false);\n setFirstNameError(false);\n setLastNameError(false);\n setBioError(\"\");\n setMilitaryETSError(false);\n setRankError(false);\n };\n\n const handleChapterLog = () => {\n let changed = false;\n if (\n preferredChapter.id?.toString() !== user.preferred_chapter?.id.toString()\n )\n changed = true;\n if (\n newsletterSubscription1?.id?.toString() !==\n user.newsletter_subscription[0]?.id.toString()\n )\n changed = true;\n if (\n newsletterSubscription2?.id?.toString() !==\n user.newsletter_subscription[1]?.id.toString()\n )\n changed = true;\n };\n\n const handleMilitaryLog = () => {\n let changed = false;\n if (militaryStatus !== user.military_status) changed = true;\n if (militaryBranch !== user.military_branch) changed = true;\n if (disability !== user.has_disability) changed = true;\n if (combatZone !== user.combat_zone) changed = true;\n if (combatZoneOperation !== user.combat_deployment_operations)\n changed = true;\n if (militaryRank !== user.military_rank) changed = true;\n if (etsDate.format('YYYY-MM-DD') !== user.military_ets) changed = true;\n if (militaryFamily !== user.military_family_member) changed = true;\n if (changed) logUpdateMilitaryService();\n };\n\n const updateProfile = async () => {\n setIsLoading(true);\n clearWarnings();\n let hasError = false;\n if (isNullOrEmpty(firstName)) {\n setFirstNameError(true);\n hasError = true;\n }\n if (!projectConfig.allowBlankLastName && isNullOrEmpty(lastName)) {\n setLastNameError(true);\n hasError = true;\n }\n if(isNullOrEmpty(bioValue))\n {\n setBioError(\"This field is required.\")\n hasError = true;\n }\n if (bioValue && bioValue.length > MAX_BIO_CHARS) {\n setBioError(\"EXCEEDED THE PROFILE BIO LIMIT\")\n hasError = true;\n }\n // if (\n // militaryStatus === MILITARY_STATUSES.veteran &&\n // (!militaryETSMonth || !militaryETSDay || !militaryETSYear)\n // ) {\n // setExpandedMilitaryPanel(true);\n // setMilitaryETSError(true);\n // hasError = true;\n // }\n // if (militaryStatus !== MILITARY_STATUSES.civilian && !militaryRank) {\n // setExpandedMilitaryPanel(true);\n // setRankError(true);\n // hasError = true;\n // }\n // check all fields for errors, then return.\n if (hasError) {\n setIsLoading(false);\n return;\n }\n // const etsdDate = moment(\n // `${militaryETSMonth} ${militaryETSDay} ${militaryETSYear}`,\n // 'MMMM DD YYYY',\n // );\n let payload = {\n first_name: firstName,\n last_name: lastName,\n profile_bio: bioValue || null,\n cover_photo_url: coverImage,\n service_info: {\n status: militaryStatus,\n culturally_and_linguistically_diverse: disability,\n service_type: militaryBranch,\n }\n };\n if (coverImageFile) {\n const result = await uploadImage(coverImageFile, 'cover');\n if (result) payload.cover_photo_url = result;\n }\n if (profileImageUri) {\n const result = await uploadImage(profileImageUri, 'profile');\n if (result) payload.profile_photo_url = result;\n }\n \n await rwbApi.putUser(JSON.stringify(payload));\n logUpdateProfile();\n setIsLoading(false);\n history.goBack();\n };\n\n return (\n \n {isLoading && (\n \n )}\n \n history.goBack()}\n className={classes.menuButton}\n color=\"inherit\">\n \n \n

    Edit Profile

    \n \n \n \n
    \n
    \n addImageHandler(e, 'profile')}\n onChangeCover={(e) => addImageHandler(e, 'cover')}\n />\n
    \n setFirstName(e.target.value)}\n />\n \n setLastName(e.target.value)}\n />\n {/*
    */}\n {/* */}\n {/*

    Local Chapter

    \n

    {user.preferred_chapter.name}

    */}\n {/*
    */}\n setBioValue(value)}\n />\n
    \n
    setExpandedMilitaryPanel(!expandedMilitaryPanel)}>\n {/* */}\n
    \n {\n history.push({\n pathname: `/profile/edit/profileextrainfoupdate`,\n state: {\n value: user,\n }\n })\n }}>\n {projectConfig.profileInfoTitle}\n \n\n \n \n \n
    \n
    \n
    \n
    \n );\n};\n\nexport default EditMyProfile;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './RadioForm.module.css';\n\nexport default class RadioForm extends Component {\n render() {\n const listRadioItems = this.props.radioProps.map((i, index) => (\n \n this.props.onValueChange(val.target.value)}\n />\n \n \n ));\n return (\n
    \n

    {this.props.label}

    \n

    {this.props.desc}

    \n {listRadioItems}\n

    {this.props.error}

    \n
    \n );\n }\n}\n\nRadioForm.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n name: PropTypes.string.isRequired,\n radioProps: PropTypes.array,\n label: PropTypes.string.isRequired,\n desc: PropTypes.string,\n error: PropTypes.string,\n};\n","'use strict';\n\nexport const COUNTRY_OPTIONS = {\n \"US\": {\n \"display\": \"United States\",\n \"value\": \"US\"\n },\n \"AF\": {\n \"display\": \"Afghanistan\",\n \"value\": \"AF\"\n },\n \"AX\": {\n \"display\": \"Aland Islands\",\n \"value\": \"AX\"\n },\n \"AL\": {\n \"display\": \"Albania\",\n \"value\": \"AL\"\n },\n \"DZ\": {\n \"display\": \"Algeria\",\n \"value\": \"DZ\"\n },\n \"AD\": {\n \"display\": \"Andorra\",\n \"value\": \"AD\"\n },\n \"AO\": {\n \"display\": \"Angola\",\n \"value\": \"AO\"\n },\n \"AI\": {\n \"display\": \"Anguilla\",\n \"value\": \"AI\"\n },\n \"AG\": {\n \"display\": \"Antigua and Barbuda\",\n \"value\": \"AG\"\n },\n \"AR\": {\n \"display\": \"Argentina\",\n \"value\": \"AR\"\n },\n \"AM\": {\n \"display\": \"Armenia\",\n \"value\": \"AM\"\n },\n \"AW\": {\n \"display\": \"Aruba\",\n \"value\": \"AW\"\n },\n \"AU\": {\n \"display\": \"Australia\",\n \"value\": \"AU\"\n },\n \"AT\": {\n \"display\": \"Austria\",\n \"value\": \"AT\"\n },\n \"AZ\": {\n \"display\": \"Azerbaijan\",\n \"value\": \"AZ\"\n },\n \"BS\": {\n \"display\": \"Bahamas\",\n \"value\": \"BS\"\n },\n \"BH\": {\n \"display\": \"Bahrain\",\n \"value\": \"BH\"\n },\n \"BD\": {\n \"display\": \"Bangladesh\",\n \"value\": \"BD\"\n },\n \"BB\": {\n \"display\": \"Barbados\",\n \"value\": \"BB\"\n },\n \"BY\": {\n \"display\": \"Belarus\",\n \"value\": \"BY\"\n },\n \"BE\": {\n \"display\": \"Belgium\",\n \"value\": \"BE\"\n },\n \"BZ\": {\n \"display\": \"Belize\",\n \"value\": \"BZ\"\n },\n \"BJ\": {\n \"display\": \"Benin\",\n \"value\": \"BJ\"\n },\n \"BM\": {\n \"display\": \"Bermuda\",\n \"value\": \"BM\"\n },\n \"BT\": {\n \"display\": \"Bhutan\",\n \"value\": \"BT\"\n },\n \"BO\": {\n \"display\": \"Bolivia\",\n \"value\": \"BO\"\n },\n \"BA\": {\n \"display\": \"Bosnia and Herzegovina\",\n \"value\": \"BA\"\n },\n \"BW\": {\n \"display\": \"Botswana\",\n \"value\": \"BW\"\n },\n \"BV\": {\n \"display\": \"Bouvet Island\",\n \"value\": \"BV\"\n },\n \"BR\": {\n \"display\": \"Brazil\",\n \"value\": \"BR\"\n },\n \"IO\": {\n \"display\": \"British Indian Ocean Territory\",\n \"value\": \"IO\"\n },\n \"BN\": {\n \"display\": \"Brunei Darussalam\",\n \"value\": \"BN\"\n },\n \"BG\": {\n \"display\": \"Bulgaria\",\n \"value\": \"BG\"\n },\n \"BF\": {\n \"display\": \"Burkina Faso\",\n \"value\": \"BF\"\n },\n \"BI\": {\n \"display\": \"Burundi\",\n \"value\": \"BI\"\n },\n \"KH\": {\n \"display\": \"Cambodia\",\n \"value\": \"KH\"\n },\n \"CM\": {\n \"display\": \"Cameroon\",\n \"value\": \"CM\"\n },\n \"CA\": {\n \"display\": \"Canada\",\n \"value\": \"CA\"\n },\n \"CV\": {\n \"display\": \"Cape Verde\",\n \"value\": \"CV\"\n },\n \"BQ\": {\n \"display\": \"Caribbean Netherlands \",\n \"value\": \"BQ\"\n },\n \"KY\": {\n \"display\": \"Cayman Islands\",\n \"value\": \"KY\"\n },\n \"CF\": {\n \"display\": \"Central African Republic\",\n \"value\": \"CF\"\n },\n \"TD\": {\n \"display\": \"Chad\",\n \"value\": \"TD\"\n },\n \"CL\": {\n \"display\": \"Chile\",\n \"value\": \"CL\"\n },\n \"CN\": {\n \"display\": \"China\",\n \"value\": \"CN\"\n },\n \"CX\": {\n \"display\": \"Christmas Island\",\n \"value\": \"CX\"\n },\n \"CC\": {\n \"display\": \"Cocos (Keeling) Islands\",\n \"value\": \"CC\"\n },\n \"CO\": {\n \"display\": \"Colombia\",\n \"value\": \"CO\"\n },\n \"KM\": {\n \"display\": \"Comoros\",\n \"value\": \"KM\"\n },\n \"CG\": {\n \"display\": \"Congo\",\n \"value\": \"CG\"\n },\n \"CD\": {\n \"display\": \"Congo, Democratic Republic of\",\n \"value\": \"CD\"\n },\n \"CK\": {\n \"display\": \"Cook Islands\",\n \"value\": \"CK\"\n },\n \"CR\": {\n \"display\": \"Costa Rica\",\n \"value\": \"CR\"\n },\n \"CI\": {\n \"display\": \"Cote D'Ivoire\",\n \"value\": \"CI\"\n },\n \"HR\": {\n \"display\": \"Croatia\",\n \"value\": \"HR\"\n },\n \"CU\": {\n \"display\": \"Cuba\",\n \"value\": \"CU\"\n },\n \"CW\": {\n \"display\": \"Curacao\",\n \"value\": \"CW\"\n },\n \"CY\": {\n \"display\": \"Cyprus\",\n \"value\": \"CY\"\n },\n \"CZ\": {\n \"display\": \"Czech Republic\",\n \"value\": \"CZ\"\n },\n \"DK\": {\n \"display\": \"Denmark\",\n \"value\": \"DK\"\n },\n \"DJ\": {\n \"display\": \"Djibouti\",\n \"value\": \"DJ\"\n },\n \"DM\": {\n \"display\": \"Dominica\",\n \"value\": \"DM\"\n },\n \"DO\": {\n \"display\": \"Dominican Republic\",\n \"value\": \"DO\"\n },\n \"EC\": {\n \"display\": \"Ecuador\",\n \"value\": \"EC\"\n },\n \"EG\": {\n \"display\": \"Egypt\",\n \"value\": \"EG\"\n },\n \"SV\": {\n \"display\": \"El Salvador\",\n \"value\": \"SV\"\n },\n \"GQ\": {\n \"display\": \"Equatorial Guinea\",\n \"value\": \"GQ\"\n },\n \"ER\": {\n \"display\": \"Eritrea\",\n \"value\": \"ER\"\n },\n \"EE\": {\n \"display\": \"Estonia\",\n \"value\": \"EE\"\n },\n \"ET\": {\n \"display\": \"Ethiopia\",\n \"value\": \"ET\"\n },\n \"FK\": {\n \"display\": \"Falkland Islands\",\n \"value\": \"FK\"\n },\n \"FO\": {\n \"display\": \"Faroe Islands\",\n \"value\": \"FO\"\n },\n \"FJ\": {\n \"display\": \"Fiji\",\n \"value\": \"FJ\"\n },\n \"FI\": {\n \"display\": \"Finland\",\n \"value\": \"FI\"\n },\n \"FR\": {\n \"display\": \"France\",\n \"value\": \"FR\"\n },\n \"GF\": {\n \"display\": \"French Guiana\",\n \"value\": \"GF\"\n },\n \"PF\": {\n \"display\": \"French Polynesia\",\n \"value\": \"PF\"\n },\n \"TF\": {\n \"display\": \"French Southern Territories\",\n \"value\": \"TF\"\n },\n \"GA\": {\n \"display\": \"Gabon\",\n \"value\": \"GA\"\n },\n \"GM\": {\n \"display\": \"Gambia\",\n \"value\": \"GM\"\n },\n \"GE\": {\n \"display\": \"Georgia\",\n \"value\": \"GE\"\n },\n \"DE\": {\n \"display\": \"Germany\",\n \"value\": \"DE\"\n },\n \"GH\": {\n \"display\": \"Ghana\",\n \"value\": \"GH\"\n },\n \"GI\": {\n \"display\": \"Gibraltar\",\n \"value\": \"GI\"\n },\n \"GR\": {\n \"display\": \"Greece\",\n \"value\": \"GR\"\n },\n \"GL\": {\n \"display\": \"Greenland\",\n \"value\": \"GL\"\n },\n \"GD\": {\n \"display\": \"Grenada\",\n \"value\": \"GD\"\n },\n \"GP\": {\n \"display\": \"Guadeloupe\",\n \"value\": \"GP\"\n },\n \"GT\": {\n \"display\": \"Guatemala\",\n \"value\": \"GT\"\n },\n \"GG\": {\n \"display\": \"Guernsey\",\n \"value\": \"GG\"\n },\n \"GN\": {\n \"display\": \"Guinea\",\n \"value\": \"GN\"\n },\n \"GW\": {\n \"display\": \"Guinea-Bissau\",\n \"value\": \"GW\"\n },\n \"GY\": {\n \"display\": \"Guyana\",\n \"value\": \"GY\"\n },\n \"HT\": {\n \"display\": \"Haiti\",\n \"value\": \"HT\"\n },\n \"HM\": {\n \"display\": \"Heard and McDonald Islands\",\n \"value\": \"HM\"\n },\n \"HN\": {\n \"display\": \"Honduras\",\n \"value\": \"HN\"\n },\n \"HK\": {\n \"display\": \"Hong Kong\",\n \"value\": \"HK\"\n },\n \"HU\": {\n \"display\": \"Hungary\",\n \"value\": \"HU\"\n },\n \"IS\": {\n \"display\": \"Iceland\",\n \"value\": \"IS\"\n },\n \"IN\": {\n \"display\": \"India\",\n \"value\": \"IN\"\n },\n \"ID\": {\n \"display\": \"Indonesia\",\n \"value\": \"ID\"\n },\n \"IR\": {\n \"display\": \"Iran\",\n \"value\": \"IR\"\n },\n \"IQ\": {\n \"display\": \"Iraq\",\n \"value\": \"IQ\"\n },\n \"IE\": {\n \"display\": \"Ireland\",\n \"value\": \"IE\"\n },\n \"IM\": {\n \"display\": \"Isle of Man\",\n \"value\": \"IM\"\n },\n \"IL\": {\n \"display\": \"Israel\",\n \"value\": \"IL\"\n },\n \"IT\": {\n \"display\": \"Italy\",\n \"value\": \"IT\"\n },\n \"JM\": {\n \"display\": \"Jamaica\",\n \"value\": \"JM\"\n },\n \"JP\": {\n \"display\": \"Japan\",\n \"value\": \"JP\"\n },\n \"JE\": {\n \"display\": \"Jersey\",\n \"value\": \"JE\"\n },\n \"JO\": {\n \"display\": \"Jordan\",\n \"value\": \"JO\"\n },\n \"KZ\": {\n \"display\": \"Kazakhstan\",\n \"value\": \"KZ\"\n },\n \"KE\": {\n \"display\": \"Kenya\",\n \"value\": \"KE\"\n },\n \"KI\": {\n \"display\": \"Kiribati\",\n \"value\": \"KI\"\n },\n \"KW\": {\n \"display\": \"Kuwait\",\n \"value\": \"KW\"\n },\n \"KG\": {\n \"display\": \"Kyrgyzstan\",\n \"value\": \"KG\"\n },\n \"LA\": {\n \"display\": \"Lao People's Democratic Republic\",\n \"value\": \"LA\"\n },\n \"LV\": {\n \"display\": \"Latvia\",\n \"value\": \"LV\"\n },\n \"LB\": {\n \"display\": \"Lebanon\",\n \"value\": \"LB\"\n },\n \"LS\": {\n \"display\": \"Lesotho\",\n \"value\": \"LS\"\n },\n \"LR\": {\n \"display\": \"Liberia\",\n \"value\": \"LR\"\n },\n \"LY\": {\n \"display\": \"Libya\",\n \"value\": \"LY\"\n },\n \"LI\": {\n \"display\": \"Liechtenstein\",\n \"value\": \"LI\"\n },\n \"LT\": {\n \"display\": \"Lithuania\",\n \"value\": \"LT\"\n },\n \"LU\": {\n \"display\": \"Luxembourg\",\n \"value\": \"LU\"\n },\n \"MO\": {\n \"display\": \"Macau\",\n \"value\": \"MO\"\n },\n \"MK\": {\n \"display\": \"Macedonia\",\n \"value\": \"MK\"\n },\n \"MG\": {\n \"display\": \"Madagascar\",\n \"value\": \"MG\"\n },\n \"MW\": {\n \"display\": \"Malawi\",\n \"value\": \"MW\"\n },\n \"MY\": {\n \"display\": \"Malaysia\",\n \"value\": \"MY\"\n },\n \"MV\": {\n \"display\": \"Maldives\",\n \"value\": \"MV\"\n },\n \"ML\": {\n \"display\": \"Mali\",\n \"value\": \"ML\"\n },\n \"MT\": {\n \"display\": \"Malta\",\n \"value\": \"MT\"\n },\n \"MQ\": {\n \"display\": \"Martinique\",\n \"value\": \"MQ\"\n },\n \"MR\": {\n \"display\": \"Mauritania\",\n \"value\": \"MR\"\n },\n \"MU\": {\n \"display\": \"Mauritius\",\n \"value\": \"MU\"\n },\n \"YT\": {\n \"display\": \"Mayotte\",\n \"value\": \"YT\"\n },\n \"MX\": {\n \"display\": \"Mexico\",\n \"value\": \"MX\"\n },\n \"MD\": {\n \"display\": \"Moldova\",\n \"value\": \"MD\"\n },\n \"MC\": {\n \"display\": \"Monaco\",\n \"value\": \"MC\"\n },\n \"MN\": {\n \"display\": \"Mongolia\",\n \"value\": \"MN\"\n },\n \"ME\": {\n \"display\": \"Montenegro\",\n \"value\": \"ME\"\n },\n \"MS\": {\n \"display\": \"Montserrat\",\n \"value\": \"MS\"\n },\n \"MA\": {\n \"display\": \"Morocco\",\n \"value\": \"MA\"\n },\n \"MZ\": {\n \"display\": \"Mozambique\",\n \"value\": \"MZ\"\n },\n \"MM\": {\n \"display\": \"Myanmar\",\n \"value\": \"MM\"\n },\n \"NA\": {\n \"display\": \"Namibia\",\n \"value\": \"NA\"\n },\n \"NR\": {\n \"display\": \"Nauru\",\n \"value\": \"NR\"\n },\n \"NP\": {\n \"display\": \"Nepal\",\n \"value\": \"NP\"\n },\n \"NC\": {\n \"display\": \"New Caledonia\",\n \"value\": \"NC\"\n },\n \"NZ\": {\n \"display\": \"New Zealand\",\n \"value\": \"NZ\"\n },\n \"NI\": {\n \"display\": \"Nicaragua\",\n \"value\": \"NI\"\n },\n \"NE\": {\n \"display\": \"Niger\",\n \"value\": \"NE\"\n },\n \"NG\": {\n \"display\": \"Nigeria\",\n \"value\": \"NG\"\n },\n \"NU\": {\n \"display\": \"Niue\",\n \"value\": \"NU\"\n },\n \"NF\": {\n \"display\": \"Norfolk Island\",\n \"value\": \"NF\"\n },\n \"KP\": {\n \"display\": \"North Korea\",\n \"value\": \"KP\"\n },\n \"NO\": {\n \"display\": \"Norway\",\n \"value\": \"NO\"\n },\n \"OM\": {\n \"display\": \"Oman\",\n \"value\": \"OM\"\n },\n \"PK\": {\n \"display\": \"Pakistan\",\n \"value\": \"PK\"\n },\n \"PS\": {\n \"display\": \"Palestinian Territory, Occupied\",\n \"value\": \"PS\"\n },\n \"PA\": {\n \"display\": \"Panama\",\n \"value\": \"PA\"\n },\n \"PG\": {\n \"display\": \"Papua New Guinea\",\n \"value\": \"PG\"\n },\n \"PY\": {\n \"display\": \"Paraguay\",\n \"value\": \"PY\"\n },\n \"PE\": {\n \"display\": \"Peru\",\n \"value\": \"PE\"\n },\n \"PH\": {\n \"display\": \"Philippines\",\n \"value\": \"PH\"\n },\n \"PN\": {\n \"display\": \"Pitcairn\",\n \"value\": \"PN\"\n },\n \"PL\": {\n \"display\": \"Poland\",\n \"value\": \"PL\"\n },\n \"PT\": {\n \"display\": \"Portugal\",\n \"value\": \"PT\"\n },\n \"QA\": {\n \"display\": \"Qatar\",\n \"value\": \"QA\"\n },\n \"RE\": {\n \"display\": \"Reunion\",\n \"value\": \"RE\"\n },\n \"RO\": {\n \"display\": \"Romania\",\n \"value\": \"RO\"\n },\n \"RU\": {\n \"display\": \"Russian Federation\",\n \"value\": \"RU\"\n },\n \"RW\": {\n \"display\": \"Rwanda\",\n \"value\": \"RW\"\n },\n \"BL\": {\n \"display\": \"Saint Barthelemy\",\n \"value\": \"BL\"\n },\n \"SH\": {\n \"display\": \"Saint Helena\",\n \"value\": \"SH\"\n },\n \"KN\": {\n \"display\": \"Saint Kitts and Nevis\",\n \"value\": \"KN\"\n },\n \"LC\": {\n \"display\": \"Saint Lucia\",\n \"value\": \"LC\"\n },\n \"VC\": {\n \"display\": \"Saint Vincent and the Grenadines\",\n \"value\": \"VC\"\n },\n \"MF\": {\n \"display\": \"Saint-Martin (France)\",\n \"value\": \"MF\"\n },\n \"SX\": {\n \"display\": \"Saint-Martin (Pays-Bas)\",\n \"value\": \"SX\"\n },\n \"WS\": {\n \"display\": \"Samoa\",\n \"value\": \"WS\"\n },\n \"SM\": {\n \"display\": \"San Marino\",\n \"value\": \"SM\"\n },\n \"ST\": {\n \"display\": \"Sao Tome and Principe\",\n \"value\": \"ST\"\n },\n \"SA\": {\n \"display\": \"Saudi Arabia\",\n \"value\": \"SA\"\n },\n \"SN\": {\n \"display\": \"Senegal\",\n \"value\": \"SN\"\n },\n \"RS\": {\n \"display\": \"Serbia\",\n \"value\": \"RS\"\n },\n \"SC\": {\n \"display\": \"Seychelles\",\n \"value\": \"SC\"\n },\n \"SL\": {\n \"display\": \"Sierra Leone\",\n \"value\": \"SL\"\n },\n \"SG\": {\n \"display\": \"Singapore\",\n \"value\": \"SG\"\n },\n \"SK\": {\n \"display\": \"Slovakia (Slovak Republic)\",\n \"value\": \"SK\"\n },\n \"SI\": {\n \"display\": \"Slovenia\",\n \"value\": \"SI\"\n },\n \"SB\": {\n \"display\": \"Solomon Islands\",\n \"value\": \"SB\"\n },\n \"SO\": {\n \"display\": \"Somalia\",\n \"value\": \"SO\"\n },\n \"ZA\": {\n \"display\": \"South Africa\",\n \"value\": \"ZA\"\n },\n \"GS\": {\n \"display\": \"South Georgia & S Sandwich Islands\",\n \"value\": \"GS\"\n },\n \"KR\": {\n \"display\": \"South Korea\",\n \"value\": \"KR\"\n },\n \"SS\": {\n \"display\": \"South Sudan\",\n \"value\": \"SS\"\n },\n \"ES\": {\n \"display\": \"Spain\",\n \"value\": \"ES\"\n },\n \"LK\": {\n \"display\": \"Sri Lanka\",\n \"value\": \"LK\"\n },\n \"PM\": {\n \"display\": \"St. Pierre and Miquelon\",\n \"value\": \"PM\"\n },\n \"SD\": {\n \"display\": \"Sudan\",\n \"value\": \"SD\"\n },\n \"SR\": {\n \"display\": \"Suriname\",\n \"value\": \"SR\"\n },\n \"SJ\": {\n \"display\": \"Svalbard and Jan Mayen Islands\",\n \"value\": \"SJ\"\n },\n \"SZ\": {\n \"display\": \"Swaziland\",\n \"value\": \"SZ\"\n },\n \"SE\": {\n \"display\": \"Sweden\",\n \"value\": \"SE\"\n },\n \"CH\": {\n \"display\": \"Switzerland\",\n \"value\": \"CH\"\n },\n \"SY\": {\n \"display\": \"Syria\",\n \"value\": \"SY\"\n },\n \"TW\": {\n \"display\": \"Taiwan\",\n \"value\": \"TW\"\n },\n \"TJ\": {\n \"display\": \"Tajikistan\",\n \"value\": \"TJ\"\n },\n \"TZ\": {\n \"display\": \"Tanzania\",\n \"value\": \"TZ\"\n },\n \"TH\": {\n \"display\": \"Thailand\",\n \"value\": \"TH\"\n },\n \"NL\": {\n \"display\": \"The Netherlands\",\n \"value\": \"NL\"\n },\n \"TL\": {\n \"display\": \"Timor-Leste\",\n \"value\": \"TL\"\n },\n \"TG\": {\n \"display\": \"Togo\",\n \"value\": \"TG\"\n },\n \"TK\": {\n \"display\": \"Tokelau\",\n \"value\": \"TK\"\n },\n \"TO\": {\n \"display\": \"Tonga\",\n \"value\": \"TO\"\n },\n \"TT\": {\n \"display\": \"Trinidad and Tobago\",\n \"value\": \"TT\"\n },\n \"TN\": {\n \"display\": \"Tunisia\",\n \"value\": \"TN\"\n },\n \"TR\": {\n \"display\": \"Turkey\",\n \"value\": \"TR\"\n },\n \"TM\": {\n \"display\": \"Turkmenistan\",\n \"value\": \"TM\"\n },\n \"TC\": {\n \"display\": \"Turks and Caicos Islands\",\n \"value\": \"TC\"\n },\n \"TV\": {\n \"display\": \"Tuvalu\",\n \"value\": \"TV\"\n },\n \"UG\": {\n \"display\": \"Uganda\",\n \"value\": \"UG\"\n },\n \"UA\": {\n \"display\": \"Ukraine\",\n \"value\": \"UA\"\n },\n \"AE\": {\n \"display\": \"United Arab Emirates\",\n \"value\": \"AE\"\n },\n \"GB\": {\n \"display\": \"United Kingdom\",\n \"value\": \"GB\"\n },\n \"UM\": {\n \"display\": \"United States Minor Outlying Islands\",\n \"value\": \"UM\"\n },\n \"VI\": {\n \"display\": \"United States Virgin Islands\",\n \"value\": \"VI\"\n },\n \"UY\": {\n \"display\": \"Uruguay\",\n \"value\": \"UY\"\n },\n \"UZ\": {\n \"display\": \"Uzbekistan\",\n \"value\": \"UZ\"\n },\n \"VU\": {\n \"display\": \"Vanuatu\",\n \"value\": \"VU\"\n },\n \"VA\": {\n \"display\": \"Vatican\",\n \"value\": \"VA\"\n },\n \"VE\": {\n \"display\": \"Venezuela\",\n \"value\": \"VE\"\n },\n \"VN\": {\n \"display\": \"Vietnam\",\n \"value\": \"VN\"\n },\n \"VG\": {\n \"display\": \"Virgin Islands (British)\",\n \"value\": \"VG\"\n },\n \"WF\": {\n \"display\": \"Wallis and Futuna Islands\",\n \"value\": \"WF\"\n },\n \"YE\": {\n \"display\": \"Yemen\",\n \"value\": \"YE\"\n },\n \"ZM\": {\n \"display\": \"Zambia\",\n \"value\": \"ZM\"\n },\n \"ZW\": {\n \"display\": \"Zimbabwe\",\n \"value\": \"ZW\"\n }\n};\n","import React from 'react';\nimport styles from './CountryModal.module.css';\nimport {Modal, Backdrop, Fade} from '@material-ui/core';\nimport {withStyles} from '@material-ui/core/styles';\n\nconst _styles = {\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n backgroundColor: 'var(--white)',\n boxShadow: null,\n padding: '20px',\n maxHeight: '90%',\n overflowY: 'scroll',\n },\n};\n\nconst CountryModal = ({\n classes,\n title,\n isOpen,\n items,\n selectedValue,\n modalHandler,\n onSelect,\n placeholder,\n}) => (\n <>\n
    \n

    {title}

    \n

    \n {items[selectedValue]?.display\n ? items[selectedValue]?.display\n : placeholder}\n

    \n
    \n \n \n
    \n {Object.keys(items).map((item, i) => (\n onSelect(items[item].value)}>\n {items[item].display}\n \n ))}\n
    \n
    \n \n \n);\n\nexport default withStyles(_styles)(CountryModal);\n","import React from 'react';\nimport styles from './AddressesList.module.css';\nimport Loading from '../Loading';\nimport CurrentLocationIcon from '../svgs/CurrentLocationIcon';\n\nconst AddressesList = ({\n addressSuggestions,\n onSelect,\n // onCurrentLocationSelect,\n}) => {\n return (\n
    \n {/* \n \n

    {'Use Current Location'}

    \n
    */}\n {addressSuggestions.length > 0 ? (\n addressSuggestions.map((suggestion, i) => (\n onSelect(suggestion.key)}\n key={i}>\n

    \n {suggestion.key.fullAddress} {suggestion.key.suiteName}\n

    \n \n ))\n ) : (\n
    \n \n
    \n )}\n \n );\n};\n\nexport default AddressesList;\n","import React from 'react';\nimport styles from './CountryModal.module.css';\nimport {Modal, Backdrop, Fade} from '@material-ui/core';\nimport {withStyles} from '@material-ui/core/styles';\n\nconst _styles = {\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n backgroundColor: 'var(--white)',\n boxShadow: null,\n padding: '20px',\n maxHeight: '90%',\n overflowY: 'scroll',\n },\n};\n// TODO: make this accept objects and replace country modal with this\nconst ScrollableListModal = ({\n classes,\n title,\n isOpen,\n items,\n selectedValue,\n modalHandler,\n onSelect,\n placeholder,\n}) => (\n <>\n
    \n

    {title}

    \n
    \n \n \n
    \n {items.map((item, i) => (\n onSelect(item)}>\n {item}\n \n ))}\n
    \n
    \n \n \n);\n\nexport default withStyles(_styles)(ScrollableListModal);\n","import {MELISSA_ID} from '../constants/APIKeys-obfuscated';\n\nvar error_codes = {};\nerror_codes['AE01'] = 'General Error';\nerror_codes['AE02'] = 'Unknown Street';\nerror_codes['AE03'] = 'Component Mismatch Error';\nerror_codes['AE05'] = 'Multiple Match';\nerror_codes['AE08'] = 'Sub Premise Number Invalid';\nerror_codes['AE09'] = 'Sub Premise Number Missing';\nerror_codes['AE10'] = 'Premise Number Invalid';\nerror_codes['AE11'] = 'Premise Number Missing';\nerror_codes['AE12'] = 'Box Number Invalid';\nerror_codes['AE13'] = 'Box Number Missing';\nerror_codes['AE14'] = 'PMB Number Missing';\nerror_codes['AE17'] = '';\nexport var error_codes;\n/* Melissa APIs */\nexport const verifyAddress = (country, fulladdress) => {\n var url = `https://address.melissadata.net/V3/WEB/GlobalAddress/doGlobalAddress?id=${MELISSA_ID}&a1=${fulladdress}&ctry=${country}&format=JSON`;\n return fetch(url)\n .then((data) => {\n return data.json().then((result) => {\n if (\n result.hasOwnProperty('TotalRecords') &&\n result['TotalRecords'] !== '1'\n ) {\n return [];\n } else if (result.hasOwnProperty('Records')) {\n return result['Records'];\n } else {\n return [];\n }\n });\n })\n .catch((err) => {\n console.warn('err: ', err);\n // throw new Error(err.message);\n });\n};\nexport const freeForm = (search_text, number_of_results) => {\n let urlParams = `id=${MELISSA_ID}&ff=${encodeURIComponent(\n search_text,\n )}&maxrecords=${number_of_results}&format=JSON`;\n return fetch(\n `https://expressentry.melissadata.net/web/ExpressFreeForm?${urlParams}`,\n )\n .then((data) => {\n return data\n .json()\n .then((result) => {\n return result;\n })\n .catch((err) => {});\n })\n .catch((err) => {});\n};\n\nexport const globalFreeForm = (\n search_text,\n country,\n number_of_results,\n) => {\n // Melissa's GlobalExpressFreeForm API spec has it returning latitude and longitude,\n // but this is actually an add-on service.\n\n let urlParams = `id=${MELISSA_ID}&ff=${encodeURIComponent(\n search_text,\n )}&maxrecords=${number_of_results}&country=${country}&format=JSON`;\n return fetch(\n `https://expressentry.melissadata.net/web/GlobalExpressFreeForm?${urlParams}`,\n )\n .then((data) => {\n return data\n .json()\n .then((result) => {\n return result;\n })\n .catch((err) => {});\n })\n .catch((err) => {});\n};\n\nexport const cityState = (city, zip, number_of_results, state = '') => {\n let urlParams = `id=${MELISSA_ID}&city=${encodeURIComponent(\n city,\n )}&state=${state}&maxrecords=${number_of_results}&format=JSON`;\n\n if (zip) {\n urlParams = urlParams + `&postalcode=${zip}`;\n }\n return fetch(\n `https://expressentry.melissadata.net/web/ExpressCityState?${urlParams}`,\n )\n .then((data) => {\n return data\n .json()\n .then((result) => {\n return result;\n })\n .catch((err) => {});\n })\n .catch((err) => {});\n};\n","import {\n verifyAddress,\n error_codes,\n freeForm,\n globalFreeForm,\n cityState,\n} from '../apis/melissaAPI';\n\nconst melissaVerify = (country, fullAddress, complete_callback) => {\n return verifyAddress(country, fullAddress).then((response) => {\n let resultObj = {\n address_not_verified: false,\n city: '',\n address_state: '',\n address_street: '',\n zip: '',\n error_string: '',\n };\n if (response.length != 1) {\n resultObj.address_not_verified = true;\n } else {\n var record = response[0];\n var results = record['Results'];\n results = results.split(',');\n var verified = false;\n var error = false;\n var error_string = '';\n\n for (let result of results) {\n if (result.startsWith('AV')) {\n result = result.replace('AV', '');\n var level = parseInt(result);\n if (level >= 12) verified = true;\n }\n if (result.startsWith('AE')) {\n var error_code = result.substring(0, 4);\n error = true;\n error_string = error_codes[error_code];\n }\n }\n if (verified && !error) {\n resultObj.address_not_verified = false;\n resultObj.error_string = '';\n var line1 = `${record['PremisesNumber']} ${record['Thoroughfare']}`;\n var line2 = record['AddressLine2'];\n if (line2.startsWith(record['Locality'])) line2 = '';\n else line2 = ', ' + line2;\n resultObj.address_street = `${line1} ${line2}`;\n resultObj.city = record['Locality'];\n resultObj.address_state = record['AdministrativeArea'];\n resultObj.zip = record['PostalCode'];\n } else {\n error_string = 'Could not verify address';\n resultObj.address_not_verified = true;\n resultObj.error_string = error_string;\n }\n if (complete_callback) {\n complete_callback();\n }\n return resultObj;\n }\n });\n};\n\nconst melissaFreeform = (value) => {\n return freeForm(value, 25)\n .then((data) => {\n let addressList = data['Results']\n ? data['Results'].map((option) => ({\n fullAddress: `${option['Address']['AddressLine1']}, ${option['Address']['City']} ${option['Address']['State']}, ${option['Address']['PostalCode']}`,\n street: option['Address']['AddressLine1'],\n city: option['Address']['City'],\n state: option['Address']['State'],\n zip: option['Address']['PostalCode'],\n list_key: option['Address']['MAK'],\n suiteName: option['Address']['SuiteName'],\n suiteList: option['Address']['SuiteList'],\n }))\n : [];\n return addressList;\n })\n .catch((err) => { });\n};\n\nconst melissaGlobalFreeForm = (value, country) => {\n return globalFreeForm(value, country, 25)\n .then((data) => {\n let addressList = data['Results']\n ? data['Results'].map((option) => ({\n fullAddress: `${option['Address']['Address1']}, ${option['Address']['Locality']} ${option['Address']['AdministrativeArea']} ${option['Address']['PostalCode']}, ${option['Address']['CountryName']}`,\n country: option['Address']['CountryName'], // Might be needlessly verbose. \"United States of America\".\n street: `${option['Address']['Premise']} ${option['Address']['Thoroughfare']}`,\n city: option['Address']['Locality'],\n state: option['Address']['AdministrativeArea'],\n zip: option['Address']['PostalCode'],\n list_key: option['Address']['MAK'],\n suiteName: option['Address']['SuiteName'],\n suiteList: option['Address']['SuiteList'],\n subBuilding: option['Address']['SubBuilding'],\n }))\n : [];\n return addressList;\n })\n .catch((err) => { });\n};\n\nconst melissaCityState = (value) => {\n let zipcode = /\\d\\d\\d\\d\\d/; // regex matches five numeric digits\n let zip;\n let city;\n let state;\n if (value.match(zipcode) !== null) {\n zip = value.match(zipcode)[0];\n city = value.replace(zipcode, '').trim();\n } else {\n zip = null;\n if (value.includes(',')) {\n let commaIndex = value.indexOf(',');\n city = value.slice(0, commaIndex);\n state = value.slice(commaIndex).trim();\n } else {\n city = value;\n }\n }\n return cityState(city, zip, 25, state)\n .then((data) => {\n let addressList = data['Results']\n ? data['Results'].map((option) => ({\n fullAddress:\n option['Address']['PostalCode'] +\n ' ' +\n option['Address']['City'] +\n ', ' +\n option['Address']['State'],\n city: option['Address']['City'],\n state: option['Address']['State'],\n zip: option['Address']['PostalCode'],\n list_key: option['Address']['PostalCode'],\n suiteName: option['Address']['SuiteName'],\n suiteList: option['Address']['SuiteList'],\n }))\n : [];\n return addressList;\n })\n .catch((err) => { });\n};\n\nconst melissaLookup = (api, value, country) => {\n if (api === 'freeform') return melissaFreeform(value);\n if (api === 'globalfreeform') return melissaGlobalFreeForm(value, country);\n else if (api === 'citystate') return melissaCityState(value);\n};\n\nexport {\n melissaVerify,\n melissaLookup,\n};\n","export function addressFieldDisplay(country) {\n let state_string = 'Administrative Area';\n let zip_string = 'Postal Code';\n let city_string = 'Locality';\n let address_string = 'Street';\n let apartment_string = 'Apartment';\n if (country === 'AU') {\n state_string = 'State';\n city_string = 'City';\n zip_string = 'Post Code';\n apartment_string = 'Unit/Apt';\n }\n return {state_string, city_string, zip_string, address_string, apartment_string};\n};\n","import React from 'react';\nimport styles from './events/CustomModal.module.css'\nimport {Modal, Backdrop, Fade} from '@material-ui/core';\nimport {withStyles} from '@material-ui/core/styles';\nimport XIcon from './svgs/XIcon';\n\nconst _styles = {\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n paper: {\n backgroundColor: 'var(--white)',\n boxShadow: null,\n padding: '50px',\n maxHeight: '90%',\n overflowY: 'scroll',\n position: 'relative',\n },\n};\n/*\n This is an alternate to \"CustomModal\" which web currently uses\n This alternative exists as this is a parent wrapper and it allows the clickable\n and handlers to be set where needed with whatever data format is desired.\n CustomModal is used for events and tweaked/copied elsewhere.\n Ideally, other web modals get replaced with this.\n*/\nconst ParentModal = ({\n classes,\n title,\n isOpen,\n modalHandler,\n children\n}) => (\n <>\n \n \n
    \n
    \n

    {title}

    \n
    \n
    \n \n
    \n {children}\n
    \n
    \n \n \n);\n\nexport default withStyles(_styles)(ParentModal);\n","import React, {Component} from 'react';\nimport styles from './ProfilePersonalInfo.module.css';\nimport {\n Paper,\n Toolbar,\n IconButton,\n Typography,\n withStyles,\n} from '@material-ui/core';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport TextInput from '../TextInput';\nimport RadioForm from '../RadioForm';\nimport {PERSONAL_INFO_PROPS} from '../../../../shared/constants/RadioProps';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {withRouter} from 'react-router-dom';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {\n getRadioIndexForValue,\n isNullOrEmpty,\n isPhoneNumber,\n debounce,\n validURL,\n} from '../../../../shared/utils/Helpers';\nimport {COUNTRY_OPTIONS} from '../../../../shared/constants/Countries';\nimport Loading from '../Loading';\nimport CountryModal from './CountryModal';\nimport AddressesList from './AddressesList';\nimport ScrollableListModal from './ScrollableListModal';\nimport {logUpdatePersonalInformation} from '../../../../shared/models/Analytics';\nimport {\n melissaLookup,\n melissaVerify,\n} from '../../../../shared/utils/MelissaHelper';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { addressFieldDisplay } from '../../../../shared/utils/configFormatter';\nimport ParentModal from '../ParentModal.react';\n\nconst {gender_radio_props, address_type_radio_props} = PERSONAL_INFO_PROPS;\nconst DEBOUNCE_MS = 500;\n\nconst useStyles = {\n root: {\n flexGrow: 1,\n },\n menuButton: {\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontFamily: 'OpenSans-Bold',\n textAlign: 'center',\n // title should always center, regardless of length of siblings\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n },\n toolbar: {\n position: 'relative',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n },\n save: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontWeight: 'bold',\n },\n};\n\nclass ProfilePersonalInfo extends Component {\n constructor(props) {\n super(props);\n\n const userData = userProfile.getUserProfile();\n const {first_name, last_name, email, phone, gender,gender_description} = userData;\n const {\n address_type,\n country,\n address,\n address_2,\n address_state,\n city,\n zip,\n } = userData.location;\n\n // These must be initialized and assigned before render() `returns` for the first time.\n // Re-rendering after componentDidMount() will not update LinedRadioForm's initial value.\n this.address_type_index = getRadioIndexForValue(\n address_type_radio_props,\n address_type,\n -1,\n );\n this.gender_index = getRadioIndexForValue(gender_radio_props, gender, 2);\n\n this.state = {\n needsToSave: false,\n showCountryModal: false,\n countrySlug: 'US',\n first_name,\n last_name,\n email,\n manual_address_entry: false,\n address_type,\n country,\n address,\n apartment: address_2,\n showApartmentModal: false,\n apartmentList: [],\n city,\n address_state,\n zip,\n phone,\n gender,\n fullAddress: '',\n addressSuggestions: [],\n first_name_error: '',\n last_name_error: '',\n email_error: '',\n phone_error: '',\n gender_error: '',\n isLoading: false,\n fullAddressInternational: '',\n stateDropdownVisible: false,\n gender_description,\n gender_description_error:\"\"\n };\n }\n\n clearErrorWarnings() {\n this.setState({\n address_error: '',\n phone_error: '',\n gender_error: '',\n });\n }\n\n verifyAddress(complete_callback) {\n const {\n address,\n apartment,\n city,\n address_state,\n zip,\n address_type,\n fullAddressInternational,\n } = this.state;\n var country = this.state.country;\n if (!country) {\n this.setState({country_error: 'Please select a country'});\n } else {\n this.setState({country_error: undefined});\n }\n country =\n address_type === 'domestic' ? 'United States' : this.state.country;\n const addressWithApartment = `${fullAddressInternational} ${apartment}`;\n if (!isNullOrEmpty(addressWithApartment) && country.length) {\n melissaVerify(country, addressWithApartment, complete_callback).then(\n (result) => {\n this.setState({\n address: result.address_street,\n city: result.city,\n address_state: result.address_state,\n zip: result.zip,\n address_not_verified: result.address_not_verified,\n error_string: result.error_string,\n });\n },\n );\n }\n }\n\n savePressed() {\n if (\n this.state.address_type === 'international' &&\n !this.state.manual_address_entry &&\n projectConfig.melissaVerify\n ) {\n this.verifyAddress(() => {\n this.doSave();\n });\n } else {\n this.doSave();\n }\n }\n doSave() {\n const {\n first_name,\n last_name,\n email,\n address_type,\n country,\n address,\n apartment,\n city,\n address_state,\n zip,\n phone,\n gender,\n address_not_verified,\n gender_description\n } = this.state;\n var {manual_address_entry} = this.state;\n logUpdatePersonalInformation();\n // Do validity checking on phone number with all formatting stripped out\n // (555) 555-1212 -> 5555551212\n let strippedPhone;\n if (phone) {\n strippedPhone = phone.replace(/\\D/g, ``);\n }\n this.clearErrorWarnings();\n\n let field_is_required_string = 'THIS FIELD IS REQUIRED';\n const zipTest = /^\\d\\d\\d\\d\\d$|^\\d\\d\\d\\d\\d-\\d\\d\\d\\d$/;\n let hasError = false;\n\n if (isNullOrEmpty(first_name)) {\n this.setState({first_name_error: field_is_required_string});\n hasError = true;\n }\n if (isNullOrEmpty(last_name)) {\n this.setState({last_name_error: field_is_required_string});\n hasError = true;\n }\n if (isNullOrEmpty(email)) {\n this.setState({email_error: field_is_required_string});\n hasError = true;\n }\n if (projectConfig.limitedEmail && email.endsWith(projectConfig.limitedEmail)) {\n this.setState({email_error_text: `PLEASE USE A NON-${projectConfig.name} EMAIL`});\n hasError = true;\n }\n // country can be ignored when the address_type is not international\n if (isNullOrEmpty(address)) {\n this.setState({address_error: field_is_required_string});\n hasError = true;\n }\n if (isNullOrEmpty(city)) {\n this.setState({city_error: field_is_required_string});\n hasError = true;\n }\n if (isNullOrEmpty(address_state)) {\n this.setState({state_error: field_is_required_string});\n hasError = true;\n }\n if (projectConfig.allowsOtherCountries && address_type === 'international' && !country.length) {\n hasError = true;\n }\n if (\n !manual_address_entry &&\n address_type === 'international' &&\n address_not_verified\n ) {\n hasError = true;\n }\n // Optional field despite the \"optional\" text being removed\n if (isNullOrEmpty(phone) && projectConfig.phoneRequired) {\n if (!isPhoneNumber(strippedPhone)) {\n this.setState({phone_error: 'PLEASE ENTER ONLY NUMBERS'});\n hasError = true;\n }\n if (strippedPhone.length !== 10) {\n this.setState({phone_error: 'PLEASE ENTER A 10-DIGIT PHONE NUMBER'});\n hasError = true;\n }\n }\n if (!gender && projectConfig.genderRequested) {\n this.setState({gender_error: 'PLEASE SELECT AN OPTION'});\n hasError = true;\n }\n if (gender == 'Custom' && !gender_description) {\n this.setState({gender_description_error: 'IF CUSTOM GENDER IS SELECTED, THIS CANNOT BE BLANK'});\n hasError = true;\n }\n // check all fields for errors, then return.\n if (hasError) {\n return;\n }\n const value = {\n first_name,\n last_name,\n email,\n address_type,\n phone: strippedPhone ? strippedPhone : null,\n gender,\n gender_description,\n country: address_type === 'domestic' ? 'United States' : country,\n street: address,\n street_2: apartment || null,\n city,\n state: address_state,\n zipcode: zip,\n };\n if (address_type === 'domestic') {\n value.address_verified = !manual_address_entry;\n } else if (address_type === 'international') {\n value.international_address_verified = !manual_address_entry;\n }\n this.updateUser(value);\n }\n\n updateUser(user_data) {\n this.setState({isLoading: true});\n\n let data = JSON.stringify(user_data);\n\n rwbApi\n .putUser(data)\n .then((response) => {\n this.setState({isLoading: false});\n this.props.history.goBack();\n })\n .catch((error) => {\n alert(\n 'There was a problem updating your personal info. Please try again later.',\n );\n this.setState({isLoading: false});\n });\n }\n\n selectAddressHandler = (response) => {\n if (response) {\n const {city, state, zip, street, fullAddress} = response;\n // empty suite lists have empty strings as the first index\n if (response?.suiteList?.length > 1)\n this.setState({\n showApartmentModal: true,\n apartmentList: response.suiteList,\n });\n else this.setState({apartment: ''});\n this.setState({\n city,\n address_state: state,\n zip,\n address: street,\n fullAddressInternational: `${street}, ${city} ${state} ${zip}`,\n fullAddress: '',\n addressSuggestions: [],\n });\n }\n };\n\n onCountrySelect = (slug) => {\n this.setState(\n {\n showCountryModal: false,\n countrySlug: slug,\n country: COUNTRY_OPTIONS[slug].display,\n },\n () => {\n this.verifyAddress();\n },\n );\n };\n\n onApartmentSelect = (item) => {\n this.setState(\n {\n showApartmentModal: false,\n apartment: item,\n },\n () => {\n this.verifyAddress();\n },\n );\n };\n\n fetchOptions = (value) => {\n let {country, address_type} = this.state;\n const api = address_type === 'domestic' ? 'freeform' : 'globalfreeform';\n return melissaLookup(api, value, country);\n };\n\n updateOptionsSingular = (value) => {\n const thisFetchOptions = this.fetchOptions(value)\n .then((data) => {\n const options = data.map((option) => ({key: option}));\n this.setState({\n addressSuggestions: options,\n });\n })\n .catch((err) =>\n this.setState({error_string: 'Could not get the address.'}),\n );\n };\n\n updateOptions = debounce(this.updateOptionsSingular, DEBOUNCE_MS);\n\n render() {\n const {classes, history} = this.props;\n\n const {\n email,\n address_type,\n country,\n gender,\n address,\n apartment,\n showApartmentModal,\n address_state,\n city,\n zip,\n phone,\n fullAddress,\n isLoading,\n addressSuggestions,\n countrySlug,\n showCountryModal,\n gender_description,\n gender_description_error\n } = this.state;\n const {\n email_error,\n address_error,\n city_error,\n state_error,\n phone_error,\n zip_error,\n gender_error,\n error_string,\n } = this.state;\n\n var manual_address_entry = this.state.manual_address_entry;\n var address_string = 'STREET';\n var apartment_string = 'APARTMENT';\n var state_string = 'STATE';\n var zip_string = 'ZIP';\n var city_string = 'CITY';\n if (this.state.address_type === 'international') {\n let fields = addressFieldDisplay(this.state.country);\n state_string = fields.state_string.toUpperCase();\n zip_string = fields.zip_string.toUpperCase();\n city_string = fields.city_string.toUpperCase();\n address_string = fields.address_string.toUpperCase();\n }\n\n const hasSpecificStateOptions = projectConfig.profileLocationStateOptions;\n\n return (\n
    \n \n \n \n history.goBack()}>\n \n \n \n Personal Information\n \n this.savePressed()}>\n \n Save\n \n \n \n \n\n
    \n \n this.setState((state) => ({\n showCountryModal: !state.showCountryModal,\n }))\n }\n onSelect={this.onCountrySelect}\n />\n
    \n\n
    \n \n this.setState((state) => ({\n showApartmentModal: !state.showApartmentModal,\n }))\n }\n onSelect={this.onApartmentSelect}\n />\n
    \n\n
    \n
    \n {\n this.setState({\n email: text.target.value,\n needsToSave: true,\n });\n }}\n />\n

    \n Please use a civilian or non-government email address. (Note:\n Eagle Leaders, please do not user you @teamrwb.org email address)\n

    \n {projectConfig.allowsOtherCountries && \n {\n this.setState(\n {\n manual_address_entry: false,\n address_type: value,\n needsToSave: true,\n },\n () => {\n this.verifyAddress();\n },\n );\n }}\n />}\n
    \n {!manual_address_entry ? (\n <>\n {address_type === 'international' && (\n {\n e.stopPropagation();\n this.setState({showCountryModal: true});\n }}>\n {}}\n />\n
    \n )}\n {\n const {value} = text.target;\n this.setState({fullAddress: value});\n value.trim().length > 3 && this.updateOptions(value);\n }}\n />\n {fullAddress.length > 0 && (\n \n )}\n

    \n Type the first few characters of you address in the box and\n then select from the list of matching addresses, or{' '}\n \n this.setState({manual_address_entry: true})\n }>\n manually enter your address.\n \n

    \n \n ) : (\n
    \n {address_type === 'international' && (\n {\n e.stopPropagation();\n this.setState({showCountryModal: true});\n }}>\n {}}\n />\n
    \n )}\n\n {\n this.setState({\n address: text.target.value,\n needsToSave: true,\n });\n }}\n />\n {\n this.setState({\n apartment: text.target.value,\n needsToSave: false,\n });\n }}\n />\n {\n this.setState({\n city: text.target.value,\n needsToSave: true,\n });\n }}\n />\n this.setState({stateDropdownVisible: false})}\n placeholder={null}\n \n >\n {projectConfig.profileLocationStateOptions.map((opt, index) => {\n return (\n
    {\n this.setState({\n address_state: opt,\n stateDropdownVisible: false,\n needsToSave: true, // needs to save is not implemented on web for this view\n });\n }}>\n

    {opt}

    \n
    \n )\n })}\n
    \n {/* State Manual Entry */}\n {hasSpecificStateOptions\n ?
    this.setState({stateDropdownVisible: true})}>\n {\n this.setState({stateDropdownVisible: true})\n }}\n /> \n
    \n : {\n this.setState({\n address_state: text.target.value,\n needsToSave: true,\n });\n }}\n />\n }\n {\n this.setState({\n zip: text.target.value,\n needsToSave: true,\n });\n }}\n />\n
    \n )}\n
    \n

    {address_string}:

    \n

    {address}

    \n
    \n {(!isNullOrEmpty(apartment) || manual_address_entry) && (\n
    \n

    {apartment_string}:

    \n

    {apartment}

    \n
    \n )}\n
    \n

    {city_string}:

    \n

    {city}

    \n
    \n
    \n

    {state_string}:

    \n

    {address_state}

    \n
    \n
    \n

    {zip_string}:

    \n

    {zip}

    \n
    \n
    \n
    \n {manual_address_entry && (\n this.setState({manual_address_entry: false})}>\n Use Auto Complete\n \n )}\n\n {projectConfig.phoneRequested && {\n this.setState({phone: text.target.value, needsToSave: true});\n }}\n />}\n {projectConfig.genderRequested && {\n this.setState({\n gender: value,\n needsToSave: true,\n });\n }}\n />}\n\n {this.state.gender == 'Custom' && (\n {\n this.setState({ gender_description: text.target.value, });\n }}\n />\n )}\n
    \n \n \n );\n }\n}\n\nexport default withRouter(withStyles(useStyles)(ProfilePersonalInfo));\n","import React, {useReducer, useState} from 'react';\nimport styles from './PasswordUpdate.module.css';\nimport {\n Paper,\n Toolbar,\n IconButton,\n Typography,\n withStyles,\n} from '@material-ui/core';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport {rwbApi} from '../../../../shared/apis/api';\n\nimport {withRouter, useHistory} from 'react-router-dom';\nimport Loading from '../Loading';\nimport TextInput from '../TextInput';\nimport {isNullOrEmpty} from '../../../../shared/utils/Helpers';\nimport {logUpdatePassword} from '../../../../shared/models/Analytics';\n\nconst useStyles = {\n root: {\n flexGrow: 1,\n },\n menuButton: {\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontFamily: 'OpenSans-Bold',\n textAlign: 'center',\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n },\n toolbar: {\n position: 'relative',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n },\n save: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontWeight: 'bold',\n },\n};\n\nconst PasswordUpdate = ({classes}) => {\n const history = useHistory();\n const initialState = {\n newPassword: '',\n newPasswordConfirm: '',\n };\n\n const reducer = (state, action) => {\n const {name, value} = action;\n return {...state, [name]: value};\n };\n\n const [password, setPassword] = useReducer(reducer, initialState);\n const [newPasswordError, setNewPasswordError] = useState('');\n const [newPasswordConfirmError, setNewPasswordConfirmError] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n const clearErrors = () => {\n setNewPasswordError('');\n setNewPasswordConfirmError('');\n };\n\n const onSave = () => {\n clearErrors();\n\n const {newPassword, newPasswordConfirm} = password;\n\n let hasError = false;\n\n if (isNullOrEmpty(newPassword)) {\n setNewPasswordError('THIS FIELD IS REQUIRED');\n hasError = true;\n }\n if (!isNullOrEmpty(newPassword) && newPassword.length < 8) {\n setNewPasswordError('PASSWORD MUST BE AT LEAST 8 CHARACTERS LONG');\n hasError = true;\n }\n if (isNullOrEmpty(newPasswordConfirm)) {\n setNewPasswordConfirmError('THIS FIELD IS REQUIRED');\n hasError = true;\n }\n if (\n !isNullOrEmpty(newPasswordConfirm) &&\n newPassword !== newPasswordConfirm\n ) {\n setNewPasswordConfirmError('PASSWORD DOES NOT MATCH');\n hasError = true;\n }\n\n if (hasError) return;\n else {\n updatePassword(newPassword);\n }\n };\n\n const updatePassword = (new_password) => {\n logUpdatePassword();\n setIsLoading(true);\n const payload = JSON.stringify({\n password: new_password,\n });\n rwbApi.putUser(payload).then((res) => {\n setIsLoading(false);\n history.goBack();\n });\n };\n\n return (\n
    \n \n \n \n history.goBack()}>\n \n \n \n Update Password\n \n \n \n Save\n \n \n \n \n
    \n setPassword(e.target)}\n />\n setPassword(e.target)}\n />\n
    \n
    \n );\n};\n\nexport default withRouter(withStyles(useStyles)(PasswordUpdate));\n","import React, {useState} from 'react';\nimport styles from './PasswordUpdate.module.css';\nimport {\n Paper,\n Toolbar,\n IconButton,\n Typography,\n withStyles,\n Divider,\n} from '@material-ui/core';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport {withRouter, useHistory} from 'react-router-dom';\nimport Radio from '@material-ui/core/Radio';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport FormControl from '@material-ui/core/FormControl';\nimport FormLabel from '@material-ui/core/FormLabel';\nimport {ANON_PROPS} from '../../../../shared/constants/RadioProps';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport Loading from '../Loading';\nimport {logUpdatePrivacySettings} from '../../../../shared/models/Analytics';\nimport {errorAlert} from '../../../../shared/utils/ErrorAlert';\nimport {GENERIC_ERROR} from '../../../../shared/constants/ErrorMessages';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\n\nconst {anon_radio_props} = ANON_PROPS;\n\nconst useStyles = {\n root: {\n flexGrow: 1,\n },\n menuButton: {\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontFamily: 'OpenSans-Bold',\n textAlign: 'center',\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n },\n toolbar: {\n position: 'relative',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n },\n save: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontWeight: 'bold',\n },\n radioGroup: {\n margin: '20px 0',\n },\n radioItem: {\n position: 'relative',\n margin: '10px 0',\n },\n privacyPolicyLabel: {\n margin: '0 auto',\n color: 'var(--primary)',\n cursor: 'pointer',\n },\n};\n\nconst PrivacySettings = ({classes}) => {\n const history = useHistory();\n const [anonymousProfile, setAnonymousProfile] = useState(\n userProfile.getUserProfile().anonymous_profile.toString(),\n );\n const [isLoading, setIsLoading] = useState(false);\n const [isPrivacyModal, setIsPrivacyModal] = useState(false);\n\n const handleChange = (e) => setAnonymousProfile(e.target.value);\n\n const privacyModalHandler = (state) => setIsPrivacyModal(state);\n\n const onSave = () => updateUser(anonymousProfile);\n\n const updateUser = (anonymous_profile) => {\n setIsLoading(true);\n\n let data = JSON.stringify({\n anonymous_profile,\n });\n\n return rwbApi\n .putUser(data)\n .then(() => {\n logUpdatePrivacySettings();\n setIsLoading(false);\n history.goBack();\n })\n .catch(() => {\n setIsLoading(false);\n errorAlert(GENERIC_ERROR);\n });\n };\n\n return (\n
    \n \n \n \n history.goBack()}>\n \n \n \n Privacy Settings\n \n \n \n Save\n \n \n \n \n
    \n \n Profile privacy settings\n \n {anon_radio_props &&\n anon_radio_props.map((item, key) => (\n <>\n }\n label={item.label}\n className={classes.radioItem}\n />\n \n \n ))}\n \n \n \n
    \n
    \n );\n};\n\nexport default withRouter(withStyles(useStyles)(PrivacySettings));\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class DangerIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nDangerIcon.defaultProps = {\n width: 56,\n height: 56,\n tintColor: 'none',\n};\n\nDangerIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React, {useReducer, useState} from 'react';\nimport styles from './DeleteAccount.module.css';\nimport {\n Paper,\n Toolbar,\n IconButton,\n Typography,\n withStyles,\n} from '@material-ui/core';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport {withRouter, useHistory} from 'react-router-dom';\nimport Loading from '../Loading';\nimport TextInput from '../TextInput';\nimport CustomButton from '../CustomButton';\nimport DangerIcon from '../svgs/DangerIcon';\nimport {userLocation} from '../../../../shared/models/UserLocation';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {filters} from '../../models/Filters';\nimport {INVALID_PASSWORD_ERROR} from '../../../../shared/constants/ErrorMessages';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\n\nconst DeleteAccount = () => {\n const history = useHistory();\n const [isLoading, setIsLoading] = useState(false);\n const [passwordError, setPasswordError] = useState(null);\n\n const reducer = (state, action) => {\n const {name, value} = action;\n return {...state, [name]: value};\n };\n const initialState = {\n password: '',\n };\n\n const [password, setPassword] = useReducer(reducer, initialState);\n\n const logout = () => {\n userLocation.deleteUserLocation();\n userProfile.deleteUserProfile();\n history.replace('/login');\n filters.deleteFilters();\n };\n\n const deleteAccountPressed = () => {\n setIsLoading(true);\n const payload = JSON.stringify({\n id: userProfile.getUserProfile().id,\n password: password.password,\n });\n rwbApi\n .deleteAccount(payload)\n .then((result) => {\n if (result) {\n logout();\n } else {\n setPasswordError(INVALID_PASSWORD_ERROR.toUpperCase());\n errorAlert(INVALID_PASSWORD_ERROR);\n }\n })\n .catch((error) => {\n errorAlert('There was an error deleting your account. Please try again later.');\n })\n .finally(() => {\n setIsLoading(false);\n });\n };\n\n return (\n
    \n \n \n \n history.goBack()}>\n \n \n \n Delete Account\n \n \n \n
    \n
    \n \n
    \n
    \n This will permanently delete your app account and all data associated\n with it.{' '}\n \n Please note that there is no option to restore the account or its\n data once it is deleted.\n \n
    \n
    To continue please enter your password bellow.
    \n\n
    \n setPassword(e.target)}\n />\n
    \n deleteAccountPressed()}\n buttonStyle={\n password.password.length >= 8 ? 'primary' : 'primaryDisabled'\n }\n />\n \n
    \n
    \n );\n};\n\nexport default withRouter(DeleteAccount);\n","import React from 'react';\nimport styles from './BlockedUser.module.css';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport AdminIcon from '../svgs/AdminIcon';\nimport CustomButton from '../CustomButton';\nimport {rwbApi} from '../../../../shared/apis/api';\n\nconst BlockedUser = ({item, sponsorAdmin, setNewData}) => {\n const {profile_photo_url, first_name, last_name, id} = item;\n\n const unblockUser = () => {\n if (window.confirm(`Would you like to unblock this user?`)) {\n rwbApi\n .unblockUser(id)\n .then(() => {\n rwbApi\n .getListOfBlockedUsers()\n .then((res) => {\n setNewData(res.data);\n })\n .catch((err) => console.warn(err));\n })\n .catch((err) => {\n console.warn('error', err);\n });\n }\n };\n\n return (\n
    \n
    \n
    \n \n {sponsorAdmin && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n

    {`${first_name} ${last_name}`}

    \n
    \n
    \n
    \n
    \n unblockUser()}\n />\n
    \n
    \n );\n};\n\nexport default BlockedUser;\n","import React from 'react';\nimport BlockedUser from './BlockedUser';\n\nconst BlockedUsersList = ({data, setNewData}) => (\n <>\n {data.map((item, i) => (\n \n ))}\n \n);\n\nexport default BlockedUsersList;\n","import {IconButton, Paper, Toolbar, Typography} from '@material-ui/core';\nimport React, {useEffect, useState} from 'react';\nimport {useHistory} from 'react-router-dom';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {NO_BLOCKED_USERS} from '../../../../shared/constants/OtherMessages';\nimport Loading from '../Loading';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport styles from './BlockedUsers.module.css';\nimport BlockedUsersList from './BlockedUsersList';\n\nconst BlockedUsers = () => {\n const [data, setData] = useState([]);\n const [newData, setNewData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n setIsLoading(true);\n rwbApi\n .getListOfBlockedUsers()\n .then((res) => {\n setData(res.data);\n setIsLoading(false);\n })\n .catch((error) => {\n setIsLoading(false);\n console.warn(error);\n });\n }, [newData]);\n const history = useHistory();\n return (\n
    \n \n \n \n history.goBack()}>\n \n \n \n Blocked Users\n \n \n \n
    \n {data.length > 0 ? (\n \n ) : (\n NO_BLOCKED_USERS\n )}\n
    \n
    \n
    \n );\n};\n\nexport default BlockedUsers;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './RadioFormOption.module.css';\n\nexport default class RadioFormOptions extends Component { \n render() {\n let discount = this.props.discount;\n let discountRate = this.props.discountRate\n const listRadioItems = this.props.radioProps.map((i, index) => (\n \n this.props.onValueChange(val.target.id,index)}\n />\n \n
    {discountRate && (this.props.isCurrentMembershipTier !== i.id ) &&{-discountRate}%}{this.props.isCurrentMembershipTier === i.id ? \"Current\":`$${(i.value)?.toFixed(2)}`}
    \n
    \n \n ));\n return (\n
    \n

    {this.props.label}

    \n

    {this.props.desc}

    \n {listRadioItems}\n

    {this.props.error}

    \n
    \n );\n }\n}\n\nRadioFormOptions.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n name: PropTypes.string.isRequired,\n radioProps: PropTypes.array,\n label: PropTypes.string.isRequired,\n desc: PropTypes.string,\n error: PropTypes.string,\n};","import React, { Component } from 'react'\nimport styles from './MembershipOptionView.module.css'\nimport { paymentConfig } from '../../../../shared/project-info/paymentConfig';\nimport CustomButton from '../CustomButton';\nimport { rwbApi } from '../../../../shared/apis/api';\nimport { userProfile } from '../../../../shared/models/UserProfile';\nimport RadioFormOptions from '../RadioFormOption';\nimport { withRouter } from 'react-router-dom';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { IconButton } from '@material-ui/core';\nimport XIcon from '../svgs/XIcon';\nexport class MembershipOptionView extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true,\n optionIndex: null,\n optionData: [],\n discountRate: null,\n optionChanged: false,\n selectedOption:{},\n newAccount: this.props.location.state?.newAccount,\n optionError:\"\"\n };\n this.user = userProfile.getUserProfile();\n this.userAmountPaid = this.user?.latest_purchase?.amount_paid / 100 || 0;\n }\n\n\ncomponentDidMount = async() =>{\n await rwbApi\n .getSubscriptionOptions()\n .then((res) => {\n this.setState({\n optionData: this.reformatOptions(res),\n isLoading: false,\n });\n\n })\n .catch((err) => {\n this.setState({isLoading: false});\n console.warn(err);\n // errorAlert(paymentConfig.membershipOptionsError);\n // this.closePressed();\n });\n if (projectConfig.membershipDiscount) {\n rwbApi\n .getDiscountRate()\n .then((res) => {\n this.setState({\n discountRate: res.rate,\n isLoading: false,\n });\n })\n .catch((err) => {\n this.setState({isLoading: false});\n console.warn(err);\n alert(paymentConfig.membershipOptionsError);\n this.closePressed();\n }); \n }\n}\n\nreformatOptions = (options) => {\n return options.data.map((option) => {\n let newObj = {};\n newObj['id'] = option.id\n newObj['label'] = option.description;\n newObj['value'] = option.price / 100;\n newObj['icon'] = option.logo;\n return newObj;\n });\n}\nclearErrorWarnings=()=>{\n this.setState({optionError:\"\"})\n};\n\nvalidateInput = () =>{\n const { optionData, optionIndex } = this.state\n this.clearErrorWarnings()\n if(optionIndex === null)\n {\n this.setState({optionError:\"Please select an option\"})\n return\n }\n const data = { \n id: optionData[optionIndex]?.id,\n title: optionData[optionIndex]?.label,\n price: optionData[optionIndex]?.value,\n icon: optionData[optionIndex]?.icon,\n }; \n this.props.history.push({\n pathname: '/paymentview',\n state: data, // Pass data via state\n });\n}\nnavigateToFeed = () =>{\n this.props.history.push({\n pathname: '/feed',\n });\n}\nhandleBack = () =>{\n this.props.history.goBack()\n}\n\n render() {\n const now = new Date();\n const today = new Date(now.toISOString());\n const expirationDate = new Date(this.user.latest_purchase?.expiration_date);\n const isExpiredPurchase = expirationDate < today;\n const {newAccount} = this.state\n return (\n
    \n
    \n { !this.state.newAccount && this.handleBack()()}\n className={styles.menuButton}\n color=\"inherit\">\n \n }\n

    {paymentConfig.appSettingsMembershipLabel}

    \n
    \n
    \n
    \n

    \n {paymentConfig.joinMembershipText}\n \n \n {\n this.setState({\n selectedOption:value,\n optionIndex:index\n })\n }}\n />\n \n

    \n
    \n
    \n

    \n {paymentConfig.supportingBrandsText[0].text}\n \n {paymentConfig.supportingBrandsLinkText}\n \n \n

    \n
    \n
    \n this.validateInput()}\n label=\"Next\"\n buttonStyle=\"primary\"\n />\n {newAccount && this.navigateToFeed()}\n label={paymentConfig.closeButtonText}\n buttonStyle=\"secondary\"\n /> } \n
    \n
    \n
    \n )\n }\n}\n\nexport default withRouter(MembershipOptionView)","import React from 'react';\nimport {\n primaryOptions,\n subOptions,\n subOptionTitle,\n} from './serviceInfo';\nimport {getRadioIndexForValue, hasOptions, isMilitaryUser} from '../utils/Helpers';\nimport {MILITARY_PROPS} from '../../shared/constants/RadioProps';\nimport RadioButtons from '../../social-stack-web/src/components/profile/RadioButtons';\nimport CustomButton from '../../social-stack-web/src/components/CustomButton';\nimport RadioForm from '../../social-stack-web/src/components/RadioForm';\nimport styles from '../../social-stack-web/src/components/registration/Registration.module.css'\nconst {\n status_radio_props,\n branch_radio_props,\n disability_radio_props,\n zone_radio_props,\n deployment_radio_props,\n } = MILITARY_PROPS;\n// import { formatRegisterServiceInfo, hasOptions } from '../../shared/utils/Helpers';\n import { projectConfig } from '../../shared/project-info/projectConfig';\n\nexport const InfoForm =({data})=>{\n const { \n service_info,\n military_status,\n military_branch,\n combat_zone,\n military_status_error,\n military_branch_error,\n has_disability_error,\n setServiceCheck,\n onPressStatus,\n onPressServiceType\n } = data;\n let militaryStatusForm;\n console.log(data);\n // disabilityHandler = (value) => this.setState({has_disability: value});\n\n // combatZoneHandler = (value) => this.setState({combat_zone: value});\n return (\n
    \n
    \n {/* //ye comment kiya he\n \n {\n console.log(\"d vkjn vjdf j dfjb djn b\",value);\n onPressStatus(value)\n }\n \n // this.setState({\n // military_status: value,\n // })\n }\n /> */}\n {/* //ye comment kiya he\n {military_status &&\n hasOptions(military_status, primaryOptions) && (\n this.militaryBranchHandler(value)}\n />\n )} */}\n {/* {military_status === MILITARY_STATUSES.veteran && (\n <>\n

    Expiration Term of Service Date

    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n

    {etsd_error}

    \n \n )} */}\n {/* {military_branch && military_status !== MILITARY_STATUSES.civilian && (\n
    \n \n

    {military_rank_error}

    \n
    \n )} */}\n {/* {military_status && military_status !== MILITARY_STATUSES.civilian && ( */}\n {/* //ye comment kiya he\n
    \n {}}\n userProp={\"has_disability\"}\n />\n

    {\"disability_error\"}

    */}\n {/* \n

    {combat_zone_error}

    */}\n {/* {combat_zone && (\n
    \n \n

    \n {combat_deployment_operation_error}\n

    \n
    \n )} */}\n {/* // ye comment kkiya he\n
    */}\n {/* )} */}\n {/* {military_status === MILITARY_STATUSES.civilian && (\n <>\n

    \n Are you a Military Family Member? (Military family members are\n related by blood, marriage, or adoption to an actively serving\n member or veteran of the U.S. armed forces, including one who\n is deceased.)\n

    \n \n \n )} */}\n\nonPressStatus(value)}\n />\n {isMilitaryUser(military_status) && (\n onPressServiceType(value)}\n \n />\n )}\n\n {}}\n />\n\n
    \n
    \n )\n}","import React, { Component, PureComponent } from 'react'\nimport {\n Paper,\n Toolbar,\n IconButton,\n Typography,\n withStyles,\n } from '@material-ui/core';\nimport ChevronBackIcon from '../svgs/ChevronBackIcon';\nimport { withRouter } from 'react-router-dom';\nimport {MILITARY_PROPS} from '../../../../shared/constants/RadioProps';\nimport { hasOptions, isNullOrEmpty } from '../../../../shared/utils/Helpers';\nimport { rwbApi } from '../../../../shared/apis/api'; \nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport moment from 'moment';\nimport styles from '../../../../social-stack-web/src/components/registration/Registration.module.css'\nimport CustomButton from '../CustomButton';\n\nimport {\n primaryOptions,\n subOptions,\n subOptionTitle,\n} from '../../../../shared/project-info/serviceInfo';\nimport { logUpdateMilitaryService } from '../../../../shared/models/Analytics';\nimport { InfoForm } from '../../../../shared/project-info/ProfileEditInfoForm';\nimport { GENERIC_ERROR } from '../../../../shared/constants/ErrorMessages';\n\nconst {\n status_radio_props,\n branch_radio_props,\n zone_radio_props,\n deployment_radio_props,\n disability_radio_props,\n} = MILITARY_PROPS;\n\n\n const useStyles = {\n root: {\n flexGrow: 1,\n },\n menuButton: {\n color: 'var(--white)',\n },\n title: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontFamily: 'OpenSans-Bold',\n textAlign: 'center',\n // title should always center, regardless of length of siblings\n position: 'absolute',\n left: '50%',\n transform: 'translateX(-50%)',\n },\n toolbar: {\n position: 'relative',\n justifyContent: 'space-between',\n backgroundColor: 'var(--primary)',\n },\n button: {\n color: 'white',\n textTransform: 'capitalize',\n },\n save: {\n color: 'var(--white)',\n textTransform: 'capitalize',\n fontWeight: 'bold',\n },\n };\nexport class ProfileExtraInfoUpdate extends PureComponent {\n constructor(props) {\n super(props);\n\n const {navigation,location} = this.props;\n\n const value = location.state.value\n console.log(\"fmkamksdmnvkmnsdlkvnjklvn\",this.props);\n \n if (value === null)\n throw new Error('ProfileExtraInfoUpdate must be given navigation value.');\n const {\n military_status,\n military_family_member,\n military_branch,\n industry,\n years_in_industry,\n military_specialty,\n military_rank,\n military_ets,\n has_disability,\n combat_zone,\n combat_deployment_operations,\n service_info,\n extra_info\n } = value;\n const etsDate = moment(military_ets);\n const ets_date_valid = etsDate.isValid();\n\n this.state = {\n military_status: service_info?.status,\n military_family_member,\n military_branch: service_info?.service_type,\n\n etsd_month: ets_date_valid ? etsDate.format('MMMM') : '',\n etsd_day: ets_date_valid ? etsDate.format('DD') : '',\n etsd_year: ets_date_valid ? etsDate.format('YYYY') : '',\n military_specialty,\n military_rank,\n has_disability: has_disability ? true : false,\n combat_zone,\n combat_deployment_operations,\n service_info,\n industry: '',\n years: '',\n extra_info,\n\n military_status_error: '',\n military_branch_error: '',\n etsd_error: '',\n military_specialty_error: '',\n military_rank_error: '',\n has_disability_error: '',\n combat_deployment_operations_error: '',\n industry_error: '',\n years_error: '',\n\n specialtyVisible: false,\n rankVisible: false,\n monthVisible: false,\n dayVisible: false,\n yearVisible: false,\n\n isLoading: false,\n needsToSave: false,\n };\n\n // this.backPressed = this.backPressed.bind(this);\n // this.savePressed = this.savePressed.bind(this);\n // this.handleBackPress = this.handleBackPress.bind(this);\n // this.onMonthSelect = this.onMonthSelect.bind(this);\n // this.onDaySelect = this.onDaySelect.bind(this);\n // this.onYearSelect = this.onYearSelect.bind(this);\n }\n\n clearErrorWarnings = () => {\n this.setState({\n military_status_error: '',\n military_branch_error: '',\n etsd_error: '',\n military_specialty_error: '',\n military_rank_error: '',\n has_disability_error: '',\n combat_deployment_operations_error: '',\n industry_error: '',\n years_error: '',\n });\n };\n\n validateProfile = () => {\n const {\n military_status,\n military_branch,\n military_specialty,\n military_rank,\n combat_zone,\n combat_deployment_operations,\n has_disability,\n etsd_month,\n etsd_day,\n etsd_year,\n } = this.state;\n const REQUIRED_FIELD = 'THIS FIELD IS REQUIRED';\n const INVALID_YEAR = 'INVALID NUMBER OF YEARS';\n const INVALID_DATE = 'INVALID DATE';\n let hasError = false;\n\n if (this.state.extra_info?.industry) {\n const {\n industry,\n years\n } = this.state;\n \n if (isNullOrEmpty(industry)) {\n this.setState({industry_error: REQUIRED_FIELD});\n hasError = true;\n }\n /*\n Years is not currently used, but it might be something we add back in\n hence the commented code.\n if (!years) {\n this.setState({years_error: REQUIRED_FIELD});\n hasError = true;\n }\n if (years > 100) {\n this.setState({years_error: INVALID_YEAR});\n hasError = true;\n }*/\n if (hasError) return;\n let {history,location} = this.props;\n let value = location.state.value\n \n value = Object.assign(\n value,\n {\n extra_info:{\n industry: industry,\n years_in_industry: years\n }\n }\n ); \n }\n\n if (this.state.service_info?.status) {\n let etsdDate = '';\n if (military_status === null) {\n this.setState({military_status_error: REQUIRED_FIELD});\n hasError = true;\n }\n \n if (hasOptions(military_status, primaryOptions)) {\n // server returns n\\a and empty strings, so being extra safe\n if (\n military_branch === null ||\n military_branch === '' ||\n military_branch === 'n/a'\n ) {\n this.setState({military_branch_error: REQUIRED_FIELD});\n hasError = true;\n }\n // if (military_specialty === null || military_specialty === '') {\n // this.setState({ military_specialty_error: REQUIRED_FIELD });\n // hasError = true;\n // }\n // if (military_rank === null || military_rank === '') {\n // this.setState({military_rank_error: REQUIRED_FIELD});\n // hasError = true;\n // }\n if (\n combat_zone === true &&\n (combat_deployment_operations === null ||\n combat_deployment_operations === '' ||\n combat_deployment_operations === 'n/a')\n ) {\n this.setState({combat_deployment_operations_error: REQUIRED_FIELD});\n hasError = true;\n }\n if (has_disability === null) {\n this.setState({has_disability_error: REQUIRED_FIELD});\n hasError = true;\n }\n // if (military_status === MILITARY_STATUSES.veteran) {\n // if (etsd_month || etsd_day || etsd_year) {\n // etsdDate = moment(\n // `${etsd_month} ${etsd_day} ${etsd_year}`,\n // 'MMMM DD YYYY',\n // );\n // if (!etsdDate.isValid()) {\n // this.setState({etsd_error: INVALID_DATE});\n // hasError = true;\n // }\n // } else {\n // this.setState({etsd_error: INVALID_DATE});\n // hasError = true;\n // }\n // }\n }\n }\n\n return !hasError;\n };\n\n savePressed = () => {\n this.clearErrorWarnings();\n if (this.validateProfile()) {\n this.makePayload();\n }\n };\n\n makePayload() {\n const {\n military_status,\n military_family_member,\n military_branch,\n combat_zone,\n combat_deployment_operations,\n has_disability,\n etsd_month,\n etsd_day,\n etsd_year,\n military_specialty,\n military_rank,\n industry,\n years,\n extra_info\n } = this.state;\n const etsdDate = moment(\n `${etsd_month} ${etsd_day} ${etsd_year}`,\n 'MMMM DD YYYY',\n );\n let payload;\n if (this.state.extra_info?.industry) {\n payload = Object.assign(\n !hasOptions(industry, years)\n ? {\n extra_info: {\n industry: industry,\n years_in_industry: years,\n },\n }\n : {\n extra_info: {\n industry: null,\n years_in_industry: null,\n },\n },\n )\n }\n if (this.state.service_info?.status) {\n payload = Object.assign(\n {\n combat_zone:\n combat_zone && hasOptions(military_status, primaryOptions)\n ? combat_zone\n : null,\n military_specialty:\n military_specialty && hasOptions(military_status, primaryOptions)\n ? military_specialty\n : null,\n military_rank:\n military_rank && hasOptions(military_status, primaryOptions)\n ? military_rank\n : null,\n },\n !hasOptions(military_status, primaryOptions)\n ? {\n service_info: {\n status: military_status,\n culturally_and_linguistically_diverse: has_disability,\n },\n }\n : {\n service_info: {\n status: military_status,\n service_type: military_branch,\n culturally_and_linguistically_diverse: has_disability,\n },\n },\n // hasOptions(military_status, primaryOptions)\n // ? {\n // military_ets: etsdDate.toISOString().slice(0, 10),\n // }\n // : {},\n ); \n }\n this.updateUser(payload);\n }\n\n updateUser(payload) {\n const { history ,location} = this.props\n \n this.setState({isLoading: true});\n\n let data = JSON.stringify(payload);\n\n return rwbApi\n .putUser(data)\n .then((response) => {\n logUpdateMilitaryService();\n this.setState({\n isLoading: false,\n });\n\n // this.props.navigation.state.params.getUpdatedProfile();\n\n history.goBack()\n // location.state.updateProfile()\n // NavigationService.back();\n })\n .catch((error) => {\n console.error(error);\n this.setState({\n isLoading: false,\n });\n // errorAlert(\"GENERIC_ERROR\");\n alert(GENERIC_ERROR)\n });\n }\n\n onSpecialtySelect = (specialty) => {\n if (specialty) {\n this.setState({military_specialty: specialty});\n }\n this.setState({specialtyVisible: false, military_specialty_error: false});\n };\n\n onRankSelect = (rank) => {\n if (rank) {\n this.setState({military_rank: rank});\n }\n this.setState({rankVisible: false, military_rank_error: false});\n };\n\n onMonthSelect(month) {\n if (month) this.setState({etsd_month: month, monthVisible: false});\n else this.setState({monthVisible: false});\n }\n\n onDaySelect(day) {\n if (day) this.setState({etsd_day: day, dayVisible: false});\n else this.setState({dayVisible: false});\n }\n\n onYearSelect(year) {\n if (year) this.setState({etsd_year: year, yearVisible: false});\n else this.setState({yearVisible: false});\n }\n\n setServiceCheck = (value) => {\n this.setState({\n has_disability: value,\n has_disability_error: '',\n });\n };\n\n\n render() {\n \n const {navigation} = this.props;\n const {classes, history} = this.props;\n \n const {\n isLoading,\n\n military_status,\n military_family_member,\n military_branch,\n industry,\n years_in_industry,\n military_specialty,\n military_rank,\n has_disability,\n combat_zone,\n combat_deployment_operations,\n etsd_month,\n etsd_day,\n etsd_year,\n service_info,\n extra_info,\n\n military_status_error,\n military_branch_error,\n military_specialty_error,\n military_rank_error,\n has_disability_error,\n combat_deployment_operations_error,\n etsd_error,\n } = this.state;\n let data = {}\n if (extra_info?.industry) {\n data = \n {\n extra_info: extra_info,\n industry_error: this.state.industry_error,\n years_error: this.state.years_error,\n OnchangeIndustry: (text) => {\n console.log(\"vkjvkjdfjkfgjd\",text);\n this.setState({industry: text});\n },\n OnchangeYears: (text) => {\n console.log(\"nvojnjvnkdjfb kdfjb jkd\",text);\n this.setState({years: parseInt(text)});\n }\n }\n }\n if (service_info?.status) {\n data = \n {\n service_info: service_info,\n military_status: military_status,\n military_branch: military_branch,\n combat_zone: combat_zone,\n military_status_error: military_status_error,\n military_branch_error: military_branch_error,\n has_disability_error: has_disability_error,\n setServiceCheck: this.setServiceCheck,\n onPressStatus: (value) => {\n console.log(\"vale of militatury status\",value);\n this.setState({\n military_status: value,\n military_status_error: '',\n needsToSave: true,\n });\n },\n onPressServiceType: (value) => {\n this.setState({\n military_branch: value,\n military_branch_error: '',\n military_specialty: '',\n military_rank: '',\n needsToSave: true,\n });\n }\n }\n }\n\n return (\n \n
    \n\n\n \n history.goBack()}>\n \n \n \n {projectConfig.profileInfoTitle}\n \n this.savePressed()}>\n \n Save\n \n \n \n \n\n \n
    \nthis.savePressed()}\n label={'Save'}\n buttonStyle={'primary'}\n />\n
    \n
    \n )\n }\n}\nexport default withRouter(withStyles(useStyles)(ProfileExtraInfoUpdate));\n","import React from 'react';\nimport {Switch, Link, Route, useRouteMatch} from 'react-router-dom';\nimport ProfileDetail from './ProfileDetail';\nimport MyProfileDetail from './MyProfileDetail';\nimport MyAppSettings from './MyAppSettings';\nimport styles from './Profile.module.css';\nimport PrivateRoute from '../PrivateRoute';\nimport ProfileFollowers from './ProfileFollowers';\nimport EditMyProfile from './EditMyProfile';\nimport ProfilePersonalInfo from './ProfilePersonalInfo';\nimport PasswordUpdate from './PasswordUpdate';\nimport PrivacySettings from './PrivacySettings';\nimport DeleteAccount from './DeleteAccount';\nimport BlockedUsers from './BlockedUsers';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport MembershipOptionView from './MembershipOptionView';\nimport ProfileExtraInfoUpdate from './ProfileExtraInfoUpdate';\n\nexport default function Profile() {\n let match = useRouteMatch();\n return (\n
    \n \n \n {/* My Profile */}\n {/* Test: go to profile with id 13. */}\n \n \n \n \n \n {projectConfig.hasPayment && \n \n }\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {/* Designer-coded route in order to make and view a template */}\n \n {/* Used for My Profile Followers/Following and for other profiles. */}\n \n \n \n \n {/* Someone else's profile */}\n \n \n\n \n {/* My Profile */}\n {/* Test: go to profile with id 13. */}\n \n \n \n
    \n );\n}\n","var _defs, _g;\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\n\nconst SvgAppLogo = (_ref) => {\n let {\n svgRef,\n title,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 312.82 66.67\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \".cls-1{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{fill:#006e83;}\"), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip-path\",\n transform: \"translate(-29.43 -29.17)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n className: \"cls-1\",\n width: 375,\n height: 124\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_1185\",\n \"data-name\": \"Group 1185\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n className: \"cls-2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group_1184\",\n \"data-name\": \"Group 1184\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_354\",\n \"data-name\": \"Path 354\",\n d: \"M91.09,74.21c-1.06,0-1.92-.4-1.72-2l5-41c.2-1.39.79-2,2.18-2h12.1c11.11,0,15.87,4.3,15.87,9.52,0,.55-.06,1.11-.13,1.66l-.4,3.1c-.46,3.5-2.18,5.43-5.36,7.08,3.57,1.45,5.89,4.56,5.89,7.54,0,.26-.07.79-.14,1.32l-.52,4.3c-.73,5.69-5.1,10.45-17.86,10.45Zm11.24-18.79-1.19,10.19h5.62c3.24,0,6.15-.8,6.55-3.84l.2-1.65a6.59,6.59,0,0,0,.07-1c0-2.25-1.86-3.7-5.43-3.7Zm2.19-17.59-1.2,9.53h3.44c3,0,6.22-.93,6.55-4l.13-1.25c.07-.8.07-1,.07-1.13,0-2.44-2.31-3.11-5.36-3.11Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_355\",\n \"data-name\": \"Path 355\",\n d: \"M138.38,59.92a15.91,15.91,0,0,0-.2,2.18c0,2.65,2.51,3.7,5.55,3.7,3.24,0,6-1.25,6.41-4.3l3.77-30.28c.2-1.39.73-2,2.12-2h7.14c1,0,1.86.47,1.66,2l-4,32.2c-.73,5.69-4.9,11.31-17.79,11.31-11,0-16.07-5-16.07-10.25,0-.46.13-1.45.2-2.05L131,31.22c.2-1.39.72-2,2.11-2h7.14c1,0,1.85.47,1.66,2Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_356\",\n \"data-name\": \"Path 356\",\n d: \"M166.22,74.21c-1,0-1.66-.6-1.46-2l5-41c.2-1.39.79-2,2.18-2h14.42c11.51,0,16.13,5,16.13,10.25,0,.33-.13,1.65-.2,2.11l-2.58,21.31c-.66,5.68-4.82,11.3-17.72,11.3Zm13.69-36-3.38,27.11h6.09c3.24,0,6-1.26,6.41-4.3l2.19-17.59c.07-.53.11-1.06.13-1.59,0-2.58-2.12-3.64-5.49-3.64Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_357\",\n \"data-name\": \"Path 357\",\n d: \"M204.64,74.21c-1,0-1.65-.6-1.45-2l5-41c.2-1.39.8-2,2.19-2h14.41c11.51,0,16.14,5,16.14,10.25,0,.33-.13,1.65-.2,2.11l-2.58,21.31c-.66,5.68-4.83,11.3-17.72,11.3Zm13.69-36L215,65.28H221c3.24,0,6-1.26,6.42-4.3l2.18-17.59c.07-.53.11-1.06.13-1.59,0-2.58-2.12-3.64-5.49-3.64Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_358\",\n \"data-name\": \"Path 358\",\n d: \"M258.28,44.38c.33,1.46.6,3.77.66,4,.06-.13,1.05-2.64,1.78-4l7.14-13.16c.6-1.12,1.2-2,2.58-2h7.15c1.38,0,1.91.73,1.19,2L263.43,57.54l-1.85,14.68c-.2,1.39-.66,2-2.05,2h-7.14c-1.39,0-1.92-.6-1.72-2l1.65-13.35-8.86-27.65c-.4-1.19.27-2,1.66-2h7.93c1.39,0,1.85.79,2.12,2Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_359\",\n \"data-name\": \"Path 359\",\n d: \"M94.47,82c.34,0,.48.16.54.5l2.21,12.65c.06.32-.06.5-.42.5H95c-.36,0-.48-.18-.54-.5l-.4-2.45H90.36l-1,2.45a.63.63,0,0,1-.64.5H87.05c-.34,0-.46-.18-.32-.5L92,82.53a.69.69,0,0,1,.68-.5Zm-1.08,6.32a30,30,0,0,1-.16-3.67,37.26,37.26,0,0,1-1,3.65l-1,2.25h2.55Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_360\",\n \"data-name\": \"Path 360\",\n d: \"M108,91.71q0,.3-.06.6c0,.86.76,1.28,2,1.28s2.21-.5,2.33-1.5l1.2-9.54c0-.36.18-.52.52-.52h1.75c.26,0,.48.12.44.52l-1.25,10c-.2,1.68-1.4,3.27-5.16,3.27-3.23,0-4.61-1.38-4.61-3,0-.14,0-.4.06-.56l1.2-9.78c0-.36.18-.52.52-.52h1.77c.24,0,.46.12.42.52Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_361\",\n \"data-name\": \"Path 361\",\n d: \"M131,85.5a1.23,1.23,0,0,0,0-.2c0-.84-.62-1.26-1.83-1.26s-2,.48-2.11,1.47l0,.2c0,.1,0,.21,0,.32a.87.87,0,0,0,.69.84l3.31,1.24a2.8,2.8,0,0,1,2.07,2.61c0,.1,0,.3,0,.48L133,92.57c-.18,1.69-1.42,3.27-5.1,3.27-3.27,0-4.51-1.38-4.51-2.93a2.59,2.59,0,0,1,0-.48l.14-1.12c0-.36.2-.53.54-.53h1.69c.36,0,.46.18.42.53l-.1.76a1.62,1.62,0,0,0,0,.38c0,.84.7,1.23,2,1.23s2.13-.47,2.27-1.47l.08-.56a1.37,1.37,0,0,0,0-.28c0-.67-.8-1-1.52-1.29L126.1,89a2.56,2.56,0,0,1-1.73-2.35c0-.1,0-.28,0-.48l.12-1c.2-1.68,1.25-3.27,4.88-3.27,3.23,0,4.34,1.38,4.34,2.87a2.69,2.69,0,0,1,0,.4l-.07.82a.51.51,0,0,1-.5.51H131.4c-.32,0-.46-.12-.42-.5Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_362\",\n \"data-name\": \"Path 362\",\n d: \"M150.4,82c.36,0,.5.12.46.48l-.16,1.27c0,.36-.2.5-.54.5h-2.87L146,95.16c0,.36-.16.52-.52.52h-1.75c-.36,0-.48-.16-.44-.52l1.34-10.88h-2.85c-.36,0-.5-.14-.46-.5l.16-1.27c0-.36.2-.48.56-.48Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_363\",\n \"data-name\": \"Path 363\",\n d: \"M160.34,90.48l-.57,4.68c0,.36-.18.52-.54.52h-1.74c-.28,0-.5-.1-.45-.52l1.57-12.61c0-.36.2-.52.54-.52h4.08c3.29,0,4.6,1.43,4.6,3.07,0,.16,0,.31,0,.47l-.2,1.74a3.25,3.25,0,0,1-2.53,2.83l1.5,5c.1.32-.18.52-.52.52h-1.72c-.33,0-.39-.24-.47-.52l-1.4-4.68Zm.78-6.2-.5,4h2c1.38,0,2.2-.4,2.34-1.4l.12-.83a1.45,1.45,0,0,0,0-.36c0-.88-.6-1.36-1.94-1.36Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_364\",\n \"data-name\": \"Path 364\",\n d: \"M181.83,82c.34,0,.48.16.54.5l2.21,12.65c.06.32-.06.5-.42.5h-1.77c-.36,0-.48-.18-.54-.5l-.4-2.45h-3.73l-1,2.45a.64.64,0,0,1-.65.5h-1.66c-.34,0-.46-.18-.32-.5l5.3-12.65a.68.68,0,0,1,.68-.5Zm-1.09,6.32a32.09,32.09,0,0,1-.16-3.67,34.64,34.64,0,0,1-1,3.65l-1,2.25h2.55Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_365\",\n \"data-name\": \"Path 365\",\n d: \"M195.32,93.43h4.47c.35,0,.53.12.47.48l-.19,1.27c-.06.36-.18.5-.54.5h-6.76c-.3,0-.42-.18-.38-.52L194,82.55c0-.36.2-.52.54-.52h1.75c.36,0,.46.16.42.52Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_366\",\n \"data-name\": \"Path 366\",\n d: \"M210.79,95.16c0,.36-.18.52-.54.52H208.5c-.34,0-.48-.16-.44-.52l1.56-12.61c0-.36.2-.52.55-.52h1.74c.36,0,.46.16.42.52Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_367\",\n \"data-name\": \"Path 367\",\n d: \"M226.3,82c.34,0,.48.16.54.5l2.21,12.65c.06.32-.06.5-.42.5h-1.77c-.36,0-.48-.18-.54-.5l-.4-2.45h-3.73l-1,2.45a.63.63,0,0,1-.64.5h-1.67c-.34,0-.46-.18-.32-.5l5.3-12.65a.69.69,0,0,1,.68-.5Zm-1.08,6.32a30,30,0,0,1-.16-3.67A37.26,37.26,0,0,1,224,88.33l-1,2.25h2.55Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_368\",\n \"data-name\": \"Path 368\",\n d: \"M283.25,64.69a13.19,13.19,0,0,0-.13,1.41c0,3.32,2.43,5.56,9.2,5.56,7.54,0,10.29-2.69,10.8-6.59l4.15-33.68c.07-.51.26-.77.77-.77H310a.64.64,0,0,1,.71.55.81.81,0,0,1,0,.22l-4.22,34.2c-.58,5-3.9,9-14.38,9-9.14,0-12.4-3.39-12.4-7.8a10.42,10.42,0,0,1,.13-1.47l4.15-33.94c.07-.51.26-.77.83-.77h1.92c.39,0,.7.2.64.77Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_369\",\n \"data-name\": \"Path 369\",\n d: \"M317,56.89l-2,16.42c-.06.52-.19.77-.77.77h-1.91c-.52,0-.77-.25-.7-.77l5.17-41.93a.76.76,0,0,1,.74-.77h12.43c9.2,0,12.34,3.58,12.34,8.05a12.06,12.06,0,0,1-.07,1.47l-1,8c-.64,5.18-4,8.76-14.38,8.76Zm2.88-23.33L317.38,54h9.78c7.54,0,10.22-2.43,10.74-6.33l.9-7.1a8.18,8.18,0,0,0,.06-1.21c0-3.45-2.24-5.75-9.14-5.75Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_370\",\n \"data-name\": \"Path 370\",\n className: \"cls-3\",\n d: \"M85.29,29.17H29.43c0,6.46,4.09,11,8.6,14a31.12,31.12,0,0,0,17.31,5.11H82.92Z\",\n transform: \"translate(-29.43 -29.17)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_371\",\n \"data-name\": \"Path 371\",\n className: \"cls-3\",\n d: \"M82.31,53.86H52.83c0,6.46,4.09,11,8.6,14A31,31,0,0,0,78.74,73h1.2Z\",\n transform: \"translate(-29.43 -29.17)\"\n }))))))));\n};\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(SvgAppLogo, _extends({\n svgRef: ref\n}, props)));\nexport default __webpack_public_path__ + \"static/media/AppLogo.5c062adc.svg\";\nexport { ForwardRef as ReactComponent };","import React, {Component} from 'react';\nimport {DOMAIN, ENVIRONMENT} from '../../../shared/constants/URLs';\nimport { projectConfig } from '../../../shared/project-info/projectConfig';\n\nexport default class ApiInfo extends Component {\n render() {\n return (\n <>\n {window.location.host !== projectConfig.prodHost && (\n
    \n

    Current API Server: {DOMAIN}

    \n

    Environment: {ENVIRONMENT}

    \n

    Note: This info is not rendered on production.

    \n
    \n )}\n \n );\n }\n}\n","// Profile Registration Helpers\n\n// Help determine flow that's entered AFTER email/workspace verification\n// ProjectConfig.registrationProfileFlow sets the screens and order.\n\nimport { projectConfig } from \"../project-info/projectConfig\";\nimport { authentication } from '../models/Authentication';\n\n// the number of steps before profile flow starts:\nconst standardAccountSteps = 2; // standard flow has two steps: create account, verify email (workspace code is not counted, and has no step text).\nconst ssoAccountSteps = 1; // sso flow has one step\nconst userCreationSteps = authentication.okta ? ssoAccountSteps : standardAccountSteps;\nconst profileSteps = projectConfig.registerProfileSteps;\n\n// Get the index of a step by screen or path\nconst getStepIndex = (curentStep) => {\n return profileSteps.findIndex(step => step.screen === curentStep || step.path === curentStep);\n};\n\n\n// These getScreen functions returns an index of projectConfig.registerProfileSteps with .screen and .path values.\n// Mobile app uses .screen with react-navigation, web uses .path with react-router.\n// currentScreen can either be .screen or .path\nfunction getFirstScreen() {\n if (profileSteps.length > 0) {\n return profileSteps[0];\n }\n} \n \nfunction getNextScreen(currentScreen) {\n const currentIndex = getStepIndex(currentScreen);\n const nextIndex = currentIndex + 1;\n return profileSteps[nextIndex]; // Returns undefined if no next screen exists\n}\n \nfunction getPreviousScreen(currentScreen) {\n const currentIndex = getStepIndex(currentScreen);\n const prevIndex = currentIndex - 1;\n return profileSteps[prevIndex]; // Returns undefined if no previous screen exists\n}\n \n// offset the step count by userCreationSteps (profileFlow is entered after user creation steps which could be different depending on SSO.)\nfunction getStepText(currentScreen) {\n const totalSteps = getTotalSteps();\n const currentStepIndex = getStepIndex(currentScreen) + 1 + userCreationSteps;\n return `STEP ${currentStepIndex} OF ${totalSteps}`;\n}\n \nfunction getTotalSteps() {\n return profileSteps.length + userCreationSteps;\n}\n \nexport default {\n getFirstScreen,\n getNextScreen,\n getPreviousScreen, \n getStepText,\n getTotalSteps\n};\n","import React, {Component} from 'react';\nimport TextInput from '../TextInput';\nimport CustomButton from '../CustomButton';\nimport styles from './Login.module.css';\nimport {SITE} from '../../../../shared/constants/URLs';\n\n// SVGs\nimport { ReactComponent as AppLogo } from '../../../../shared/project-info/svgs-web/AppLogo.svg';\n\nimport {isNullOrEmpty, validateEmail} from '../../../../shared/utils/Helpers';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport {logForgotPassword, logLogin} from '../../../../shared/models/Analytics';\nimport {INVALID_LOGIN_ERROR} from '../../../../shared/constants/ErrorMessages';\nimport ApiInfo from '../ApiInfo';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { OktaAuth } from '@okta/okta-auth-js';\nimport { authentication } from '../../../../shared/models/Authentication';\nimport { userProfile } from '../../../../shared/models/UserProfile';\nimport registerProfileFlow from '../../../../shared/utils/RegisterProfileFlow';\nexport default withOktaAuth(class Login extends Component {\n \n state = {\n value: 0,\n email: '',\n password: '',\n email_error_text: null,\n password_error_text: null,\n isLoading: false,\n oktaSignIn:false\n };\n \n async componentDidMount() { \n const { history } = this.props; \n // here okta call back handling is done when redirected from okta login page\n if(projectConfig.hasOktaAuthentication)\n {\n let okta_config = window.localStorage.getItem(\"oktaConfig\")\n if(okta_config)\n {\n this.setState({isLoading:true})\n let parsedOktaValue = JSON.parse(okta_config)\n let newOktaObj = {\n issuer: parsedOktaValue.discoveryUri,\n clientId: parsedOktaValue.clientId,\n redirectUri: window.location.origin + '/login/callback',\n }\n var authClient = new OktaAuth(newOktaObj);\n \n authClient.authStateManager.subscribe(function(authState) {\n // Logic based on authState is done here.\n if (!authState.isAuthenticated) {\n // render unathenticated view\n return;\n }\n authentication.okta = true;\n \n authentication.setAuthentication({access:authState?.accessToken?.accessToken,refresh:authState?.refreshToken?.refreshToken });\n rwbApi.getAuthenticatedUser().then((user)=> {\n history.push('/feed')\n })\n // Render authenticated view\n });\n \n // Handle callback\n if (authClient.token.isLoginRedirect()) {\n const { tokens } = await authClient.token.parseFromUrl(); // remember to \"await\" this async call\n authClient.tokenManager.setTokens(tokens);\n }\n // normal app startup\n authClient.start();\n }\n }\n }\n\n valueChangeHandler = (event, field) => {\n this.setState({[field]: event.target.value});\n };\n\n clearErrors() {\n this.setState({\n email_error_text: '',\n password_error_text: '',\n });\n }\n\n loginHandler = () => {\n authentication.okta = this.state.oktaSignIn;\n logLogin();\n let {email, password} = this.state;\n const {history} = this.props;\n\n this.clearErrors();\n let hasError = false;\n\n if (isNullOrEmpty(email) || !validateEmail(email)) {\n this.setState({email_error_text: 'PLEASE ENTER A VALID EMAIL'});\n hasError = true;\n }\n if (!hasError && this.state.oktaSignIn) {\n this.setState({isLoading:true});\n rwbApi.getOktaConfig(email).then((result) => { \n let obj= {\n discoveryUri:result.discoveryUri,\n clientId:result.clientId,\n redirectUri: window.location.origin + '/login/callback',\n }\n window.localStorage.setItem(\n \"oktaConfig\",\n JSON.stringify(obj),\n );\n this.setState({\n oktaConfig:obj\n })\n this.props.oktaCallback(obj)\n }).catch((error) => {\n this.setState({isLoading:false,email_error_text:error.message.toUpperCase()});\n return;\n });\n return;\n }\n if (!password || password === null || password === '') {\n this.setState({password_error_text: 'ENTER YOUR PASSWORD'});\n hasError = true;\n }\n\n if (hasError) {\n return;\n }\n\n this.setState({\n email: email.trim(),\n isLoading: true,\n });\n rwbApi\n .loginUser(email, password)\n .then((json) => {\n this.setState({isLoading: false});\n const {email_verified, profile_completed, workspace} = json;\n if (!email_verified) {\n history.push(`/registration/confirm_email`);\n }\n else if (projectConfig.hasWorkspaces && workspace == null && !userProfile?.isOperator) {\n history.push(`/registration/work_space`);\n }\n else if (email_verified && !profile_completed) {\n const firstScreen = registerProfileFlow.getFirstScreen();\n history.push(`/registration/${firstScreen.path}`);\n } else {\n let referrer = this.props.location?.state?.referrer;\n if (referrer) {\n referrer = referrer.replace(window.location.origin, '');\n referrer = referrer.replace(window.port, '');\n history.replace(referrer);\n } else history.replace('/feed');\n }\n })\n .catch((error) => {\n console.warn(error);\n this.setState({\n password_error_text: INVALID_LOGIN_ERROR.toUpperCase(),\n isLoading: false,\n });\n });\n };\n oktaHandler = () => {\n this.setState({\n oktaSignIn: !this.state.oktaSignIn\n })\n authentication.okta = !authentication.okta;\n }\n\n oktaContactUs = () => {\n window.open(`mailto:${projectConfig.supportEmail}`)\n }\n render() {\n const {\n email,\n password,\n email_error_text,\n password_error_text,\n isLoading,\n } = this.state;\n return (\n <>\n \n
    \n
    \n this.valueChangeHandler(event, 'email')}\n error={email_error_text}\n onEnter={this.loginHandler}\n />\n {!this.state.oktaSignIn && \n this.valueChangeHandler(event, 'password')\n }\n error={password_error_text}\n onEnter={this.loginHandler}\n />\n }\n {!this.state.oktaSignIn ?

    \n Forgot your password?{' '}\n \n Click Here\n \n

    :\n\n

    Enter the email that you use for your organization's SSO. Having trouble? \n Contact us\n

    \n }\n \n {projectConfig.hasOktaAuthentication &&\n <>\n\n {!this.state.oktaSignIn && }\n \n }\n {this.state.oktaSignIn ?\n \n : }\n \n
    \n \n );\n }\n}\n)","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class VerifyEmailIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nVerifyEmailIcon.defaultProps = {\n width: 46,\n height: 38,\n tintColor: 'var(--primary)',\n};\n\nVerifyEmailIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n};\n","import React from 'react';\nimport {withStyles} from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\nimport MuiDialogContent from '@material-ui/core/DialogContent';\nimport MuiDialogActions from '@material-ui/core/DialogActions';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Typography from '@material-ui/core/Typography';\nimport { projectConfig } from '../../../shared/project-info/projectConfig';\n\nconst styles = (theme) => ({\n root: {\n margin: 0,\n padding: theme.spacing(2),\n },\n title: {\n fontWeight: 'bold',\n color: 'black',\n },\n});\n\nconst DialogTitle = withStyles(styles)((props) => {\n const {children, classes, onClose, ...other} = props;\n return (\n \n \n {children}\n \n {onClose ? (\n \n \n \n ) : null}\n \n );\n});\n\nconst DialogContent = withStyles((theme) => ({\n root: {\n padding: theme.spacing(2),\n },\n}))(MuiDialogContent);\n\nconst DialogActions = withStyles((theme) => ({\n root: {\n margin: 0,\n padding: theme.spacing(1),\n color: 'black',\n },\n}))(MuiDialogActions);\n\nconst AlertDialog = ({text, open, handleClose}) => (\n
    \n \n {projectConfig.name}\n \n {text}\n \n \n \n \n \n
    \n);\n\nexport default AlertDialog;\n","import React, { Component } from 'react';\nimport { TEAMRWB } from '../../../../shared/constants/URLs';\nimport CustomButton from '../CustomButton';\nimport styles from './Registration.module.css';\nimport VerifyEmailIcon from '../svgs/VerifyEmailIcon';\nimport { authentication } from '../../../../shared/models/Authentication';\nimport { logVerifyEmail } from '../../../../shared/models/Analytics';\nimport { withRouter } from 'react-router-dom';\nimport { rwbApi } from '../../../../shared/apis/api';\nimport AlertDialog from '../AlertDialog';\nimport Loading from '../Loading';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { GENERIC_ERROR, INVALID_CONFIRMATION_CODE } from '../../../../shared/constants/ErrorMessages';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { userProfile } from '../../../../shared/models/UserProfile';\nimport registerProfileFlow from '../../../../shared/utils/RegisterProfileFlow';\n\nclass RegisterVerifyEmail extends Component {\n constructor() {\n super();\n this.state = {\n isLoading: false,\n showDialog: false,\n confirmationCode: new Array(projectConfig.verificationCodeLength).fill(''),\n errorMessage: '',\n userEmail:\"\"\n };\n }\n\n logout = () => {\n authentication.deleteAuthentication();\n this.props.history.replace('/login');\n };\n\n // may not be needed\n componentDidMount() {\n this.checkVerification();\n this.setState({\n userEmail:userProfile.getUserProfile().email\n })\n }\n\n checkVerification = () => {\n const { history } = this.props;\n this.setState({\n isLoading: true,\n });\n rwbApi\n .getUser()\n .then((response) => {\n const { email_verified, profile_completed } = response;\n if (email_verified === true && profile_completed === false) {\n const firstScreen = registerProfileFlow.getFirstScreen();\n history.push(`/registration/${firstScreen.path}`);\n } else if (email_verified === true && profile_completed === true) {\n this.props.history.replace('/feed');\n } else {\n this.setState({\n // showDialog: true,\n isLoading: false,\n });\n }\n })\n .catch(() => {\n this.setState({\n isLoading: false,\n });\n alert('There was an error contacting the server. Please try again.');\n });\n };\n\n verifyEmail = () => {\n this.setState({errorMessage: ''});\n logVerifyEmail();\n const code = this.state.confirmationCode.join('');\n rwbApi.verifyEmail(code)\n .then((response) => {\n this.setState({ codeError: false });\n return rwbApi.getUser();\n })\n .then((user) => {\n if (projectConfig.hasWorkspaces && user.workspace == null) {\n this.props.history.push('/registration/work_space');\n } else {\n const firstScreen = registerProfileFlow.getFirstScreen();\n this.props.history.push(`/registration/${firstScreen.path}`);\n }\n })\n .catch((err) => {\n if (err.toString() === 'Error: Unable to verify email.') {\n this.setState({errorMessage: INVALID_CONFIRMATION_CODE.toUpperCase()});\n } else {\n errorAlert(GENERIC_ERROR);\n }\n })\n }\n\n updateCode = (index, event) => {\n let code = this.state.confirmationCode;\n let value = event.target.value;\n // the user can press a new number after backspacing, keep the original number and prevent getting double digits\n if (value.length > 1) {\n value = value.charAt(0);\n }\n const currentValue = code[index];\n code[index] = value;\n // focus into next or previous input\n const newIndex = value !== '' ? index + 1 : index - 1;\n if (newIndex >= 0 && newIndex < projectConfig.verificationCodeLength) {\n if ((currentValue === '' && value !== '') || (currentValue === '' && value === ''))\n document.getElementById(`codeInput-${newIndex}`).focus();\n }\n // prevent manual input of more numbers\n if (currentValue === '' && parseInt(value) <= 9) {\n this.setState({ confirmationCode: code });\n }\n }\n\n handleBack = (index, event) => {\n // this function is called on key down and picks up all key events\n // if the key down is a \".\" prevent it from being added\n if (event.keyCode === 190) event.preventDefault();\n // backbutton\n if (event.keyCode === 8) {\n this.setState({errorMessage: ''});\n let code = this.state.confirmationCode;\n const inputValue = this.state.confirmationCode[index];\n if (inputValue === '' && index > 0) {\n document.getElementById(`codeInput-${index - 1}`).focus();\n }\n code[index] = '';\n this.setState({ confirmationCode: code });\n }\n }\n\n render() {\n const { isLoading, showDialog } = this.state;\n const totalSteps = registerProfileFlow.getTotalSteps();\n return (\n
    \n \n
    \n

    {projectConfig.verificationAccountTitle}

    \n

    Step 2 of {totalSteps}

    \n
    \n
    \n
    \n \n
    \n

    \n {this.state.userEmail}\n

    \n

    \n {projectConfig.emailConfirmationText}\n

    \n
    \n

    \n {projectConfig.enterConfirmationCodeText}\n

    \n
    \n
    \n {projectConfig.verificationType === 'code' && (\n // verification code\n
    \n {new Array(projectConfig.verificationCodeLength).fill(0).map((value, index) => {\n return (\n this.updateCode(index, event)} onKeyDown={(event) => this.handleBack(index, event)} />\n )\n })}\n

    {this.state.errorMessage}

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

    \n Didn't receive the email?
    \n Check your spam folder or{' '}\n \n contact us\n {' '}\n for help.\n

    \n \n \n
    \n
    \n this.setState({ showDialog: false })}\n />\n
    \n );\n }\n}\n\nexport default withRouter(RegisterVerifyEmail);\n","import React, {Component} from 'react';\nimport {PERSONAL_INFO_PROPS} from '../../../../shared/constants/RadioProps';\nimport TextInput from '../TextInput';\nimport CustomButton from '../CustomButton';\nimport RadioForm from '../RadioForm';\nimport styles from './Registration.module.css';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {logPersonalInfo} from '../../../../shared/models/Analytics';\nimport {\n isPhoneNumber,\n isNullOrEmpty,\n debounce,\n} from '../../../../shared/utils/Helpers';\nimport {COUNTRY_OPTIONS} from '../../../../shared/constants/Countries';\nimport CountryModal from '../profile/CountryModal';\nimport AddressesList from '../profile/AddressesList';\nimport ScrollableListModal from '../profile/ScrollableListModal';\nimport {withRouter} from 'react-router-dom';\nimport {ADDRESS_VERIFICATION_ERROR} from '../../../../shared/constants/ErrorMessages';\nimport {\n melissaLookup,\n melissaVerify,\n} from '../../../../shared/utils/MelissaHelper';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport registerProfileFlow from '../../../../shared/utils/RegisterProfileFlow';\nimport { addressFieldDisplay } from '../../../../shared/utils/configFormatter';\nimport ParentModal from '../ParentModal.react';\n\nconst {gender_radio_props, address_type_radio_props} = PERSONAL_INFO_PROPS;\nconst DEBOUNCE_MS = 500;\nconst FIELD_IS_REQUIRED_STRING = 'THIS FIELD IS REQUIRED';\n\nclass RegisterPersonalInfo extends Component {\n constructor(props) {\n super(props);\n\n const existing_profile = userProfile.getUserProfile();\n const {gender, registration_started_via_app, gender_description} = existing_profile;\n\n const {\n address_type,\n address,\n apartment,\n city,\n address_state,\n zip,\n country,\n } = existing_profile.location;\n\n const default_state = {\n showAndroidImageSheet: false,\n showCountryModal: false,\n showMelissaModal: false,\n showApartmentModal: false,\n\n address_type: projectConfig.primaryCountryCode === 'US' ? 'domestic' : 'international',\n manual_address_entry: false,\n gender: undefined,\n country: projectConfig.primaryCountryCode,\n address: '',\n apartment: '',\n apartmentList: [],\n city: '',\n address_state: '',\n zip: '',\n fullAddress: '',\n phone: '',\n\n phone_error: '',\n gender_error: '',\n address_error: '',\n country_error: '',\n\n addressSuggestions: [],\n fullAddressInternational: '',\n stateDropdownVisible: false,\n gender_description:\"\"\n };\n const assigned_state = Object.assign(\n {},\n default_state,\n address ? {address} : {},\n apartment ? {apartment} : {},\n city ? {city} : {},\n address_state ? {address_state} : {},\n zip ? {zip} : {},\n country ? {country} : {},\n address_type ? {address_type} : {},\n gender ? {gender} : {},\n gender_description && gender === 'Custom' ? {gender_description} : {},\n registration_started_via_app ? {registration_started_via_app} : {},\n );\n\n this.state = assigned_state;\n }\n\n clearErrorWarnings = () => {\n this.setState({\n city_error: '',\n state_error: '',\n zip_error: '',\n country_error: '',\n address_error: '',\n phone_error: '',\n gender_error: '',\n });\n };\n\n verifyAddress = (complete_callback) => {\n const {fullAddressInternational, apartment} = this.state;\n var country = this.state.country;\n if (!country.length) {\n this.setState({country_error: 'Please select a country'});\n } else {\n this.setState({country_error: undefined});\n }\n if (this.state.address_type === 'domestic') {\n country = 'United States';\n }\n const addressWithApartment = `${fullAddressInternational} ${apartment}`;\n if (!isNullOrEmpty(addressWithApartment) && country.length) {\n return melissaVerify(\n country,\n addressWithApartment,\n complete_callback,\n ).then((result) => {\n this.setState({\n address: result.address_street,\n city: result.city,\n address_state: result.address_state,\n zip: result.zip,\n error_string: result.error_string,\n address_not_verified: result.address_not_verified,\n });\n });\n }\n };\n nextPressed = () => {\n logPersonalInfo();\n this.doNext();\n // if (\n // (this.state.fullAddress || this.state.fullAddressInternational) &&\n // !this.state.manual_address_entry\n // ) {\n // this.verifyAddress(() => {\n // this.doNext();\n // });\n // } else {\n // this.doNext();\n // }\n };\n doNext = () => {\n this.clearErrorWarnings();\n const {\n country,\n address,\n apartment,\n city,\n address_state,\n zip,\n phone,\n gender,\n address_type,\n manual_address_entry,\n registration_started_via_app,\n address_not_verified,\n gender_description\n } = this.state;\n\n let incomplete = false;\n if (this.props.location.state && this.props.location.state.incomplete)\n incomplete = true;\n\n // Do validity checking on phone number with all formatting stripped out\n // (555) 555-1212 -> 5555551212\n let strippedPhone;\n if (phone) {\n strippedPhone = phone.replace(/\\D/g, ``);\n }\n const zipTest = /^\\d\\d\\d\\d\\d$|^\\d\\d\\d\\d\\d-\\d\\d\\d\\d$/;\n\n let hasError = false;\n if (phone) {\n if (!isPhoneNumber(strippedPhone)) {\n this.setState({phone_error: 'PLEASE ENTER ONLY NUMBERS'});\n hasError = true;\n }\n if (strippedPhone.length !== 10) {\n this.setState({phone_error: 'PLEASE ENTER A 10-DIGIT PHONE NUMBER'});\n hasError = true;\n }\n }\n // require a phone number for brand new accounts\n else if (isNullOrEmpty(phone) && !incomplete && projectConfig.phoneRequired) {\n this.setState({phone_error: 'PLEASE ENTER A PHONE NUMBER'});\n hasError = true;\n }\n if (isNullOrEmpty(address)) {\n this.setState({address_error: FIELD_IS_REQUIRED_STRING});\n hasError = true;\n }\n if (isNullOrEmpty(city)) {\n this.setState({city_error: FIELD_IS_REQUIRED_STRING});\n hasError = true;\n }\n if (isNullOrEmpty(address_state)) {\n this.setState({state_error: FIELD_IS_REQUIRED_STRING});\n hasError = true;\n }\n if (isNullOrEmpty(zip)) {\n this.setState({zip_error: FIELD_IS_REQUIRED_STRING});\n hasError = true;\n }\n if (address_type === 'international' && isNullOrEmpty(country)) {\n this.setState({country_error: FIELD_IS_REQUIRED_STRING});\n hasError = true;\n }\n if (!gender && projectConfig.genderRequested) {\n this.setState({gender_error: 'PLEASE SELECT AN OPTION'});\n hasError = true;\n }\n if (gender == 'Custom' && !gender_description ) {\n this.setState({custom_gender_error: 'IF CUSTOM GENDER IS SELECTED, THIS CANNOT BE BLANK'});\n hasError = true;\n }\n if (!manual_address_entry && address_not_verified) {\n hasError = true;\n }\n\n if (hasError) return;\n let value = {\n location: {\n address,\n apartment,\n address_state,\n address_type,\n city,\n country,\n zip,\n },\n gender,\n gender_description,\n phone: strippedPhone,\n registration_started_via_app,\n };\n\n if (address_type === 'domestic') {\n value.address_verified = !manual_address_entry;\n value.location.country = 'United States';\n } else if (address_type === 'international') {\n value.international_address_verified = !manual_address_entry;\n }\n\n const profile = Object.assign({}, userProfile.getUserProfile(), value);\n userProfile.saveToUserProfile(profile);\n\n const nextStep = registerProfileFlow.getNextScreen(this.props.currentPath);\n this.props.history.push({\n pathname: `/registration/${nextStep.path}`,\n state: {incomplete, value},\n });\n };\n\n onCountrySelect = (slug) => {\n this.setState(\n {\n showCountryModal: false,\n countrySlug: slug,\n country: COUNTRY_OPTIONS[slug].display,\n },\n () => {\n this.verifyAddress();\n },\n );\n };\n\n onApartmentSelect = (item) => {\n this.setState(\n {\n showApartmentModal: false,\n apartment: item,\n },\n () => {\n this.verifyAddress();\n },\n );\n };\n\n fetchOptions = (value) => {\n let {country, address_type} = this.state;\n const api = address_type === 'domestic' ? 'freeform' : 'globalfreeform';\n return melissaLookup(api, value, country);\n };\n\n updateOptionsSingular = (value) => {\n const thisFetchOptions = this.fetchOptions(value)\n .then((data) => {\n const options = data.map((option) => ({key: option}));\n this.setState({\n addressSuggestions: options,\n });\n })\n .catch((err) =>\n this.setState({error_string: 'Could not get the address.'}),\n );\n };\n\n updateOptions = debounce(this.updateOptionsSingular, DEBOUNCE_MS);\n\n selectAddressHandler = (response) => {\n if (response) {\n const {city, state, zip, street, fullAddress} = response;\n // empty suite lists have empty strings as the first index\n if (response?.suiteList?.length > 1)\n this.setState({\n showApartmentModal: true,\n apartmentList: response.suiteList,\n });\n else this.setState({apartment: ''});\n this.setState({\n address_not_verified: false,\n city,\n address_state: state,\n zip,\n address: street,\n fullAddressInternational: `${street}, ${city} ${state} ${zip}`,\n fullAddress: '',\n addressSuggestions: [],\n });\n }\n };\n\n render() {\n const {\n address,\n apartment,\n showApartmentModal,\n address_state,\n city,\n zip,\n manual_address_entry,\n showCountryModal,\n countrySlug,\n address_type,\n country,\n fullAddress,\n addressSuggestions,\n phone,\n gender,\n } = this.state;\n\n const {\n address_not_verified,\n email_error,\n address_error,\n city_error,\n state_error,\n phone_error,\n zip_error,\n gender_error,\n error_string,\n country_error,\n gender_description,\n custom_gender_error\n } = this.state;\n\n let addressField;\n var address_string = 'STREET';\n var apartment_string = 'APARTMENT';\n var state_string = 'STATE';\n var zip_string = 'ZIP';\n var city_string = 'CITY';\n if (this.state.address_type === 'international') {\n let fields = addressFieldDisplay(this.state.country);\n state_string = fields.state_string.toUpperCase();\n zip_string = fields.zip_string.toUpperCase();\n city_string = fields.city_string.toUpperCase();\n address_string = fields.address_string.toUpperCase();\n }\n\n const stepText = registerProfileFlow.getStepText(this.props.currentPath);\n const prevStep = registerProfileFlow.getPreviousScreen(this.props.currentPath);\n const hasSpecificStateOptions = projectConfig.profileLocationStateOptions;\n\n return (\n
    \n
    \n

    Personal Information

    \n

    {stepText}

    \n
    \n
    \n
    \n \n this.setState((state) => ({\n showCountryModal: !state.showCountryModal,\n }))\n }\n onSelect={this.onCountrySelect}\n />\n
    \n\n
    \n \n this.setState((state) => ({\n showApartmentModal: !state.showApartmentModal,\n }))\n }\n onSelect={this.onApartmentSelect}\n />\n
    \n\n
    \n {projectConfig.allowsOtherCountries &&\n {\n this.setState(\n {\n manual_address_entry: false,\n address_type: value,\n fullAddress: '',\n addressSuggestions: [],\n },\n () => {\n this.verifyAddress();\n },\n );\n }}\n />}\n\n
    \n {!manual_address_entry ? (\n <>\n {address_type === 'international' && projectConfig.allowsOtherCountries && (\n {\n e.stopPropagation();\n this.setState({showCountryModal: true});\n }}>\n {}}\n error={country_error}\n />\n
    \n )}\n {\n const {value} = text.target;\n if (address_type !== 'domestic' && !country) return;\n this.setState({fullAddress: value});\n if (value.trim().length <= 3) {\n this.setState({addressSuggestions: []});\n return;\n }\n this.updateOptions(value);\n }}\n />\n {address_not_verified && (\n

    \n {ADDRESS_VERIFICATION_ERROR}\n

    \n )}\n {fullAddress.length > 0 && (\n \n )}\n

    \n Type the first few characters of you address in the box and\n then select from the list of matching addresses, or{' '}\n \n this.setState({manual_address_entry: true})\n }>\n manually enter your address.\n \n

    \n \n ) : (\n
    \n {address_type === 'international' && projectConfig.allowsOtherCountries && (\n {\n e.stopPropagation();\n this.setState({showCountryModal: true});\n }}>\n {}}\n />\n
    \n )}\n\n {\n this.setState({\n address: text.target.value,\n });\n }}\n />\n {\n this.setState({\n apartment: text.target.value,\n });\n }}\n />\n {\n this.setState({\n city: text.target.value,\n });\n }}\n />\n this.setState({stateDropdownVisible: false})}\n placeholder={null}\n \n >\n {projectConfig.profileLocationStateOptions.map((opt, index) => {\n return (\n
    {\n this.setState({address_state: opt, stateDropdownVisible: false});\n }}>\n

    {opt}

    \n
    \n )\n })}\n
    \n {/* State Manual Entry */}\n {hasSpecificStateOptions\n ?
    this.setState({stateDropdownVisible: true})}>\n {\n this.setState({stateDropdownVisible: true});\n }}\n /> \n
    \n : {\n this.setState({\n address_state: text.target.value,\n });\n }}\n />\n }\n {\n this.setState({\n zip: text.target.value,\n });\n }}\n />\n
    \n )}\n
    \n

    {address_string}:

    \n

    {address}

    \n
    \n {(!isNullOrEmpty(apartment) || manual_address_entry) && (\n
    \n

    {apartment_string}:

    \n

    {apartment}

    \n
    \n )}\n
    \n

    {city_string}:

    \n

    {city}

    \n
    \n
    \n

    {state_string}:

    \n

    {address_state}

    \n
    \n
    \n

    {zip_string}:

    \n

    {zip}

    \n
    \n
    \n
    \n {manual_address_entry && (\n this.setState({manual_address_entry: false})}>\n Use Auto Complete\n \n )}\n\n {projectConfig.phoneRequested && {\n this.setState({phone: text.target.value});\n }}\n />}\n {projectConfig.genderRequested && {\n this.setState({\n gender: value,\n });\n }}\n />}\n {this.state.gender == 'Custom'&& {\n this.setState({gender_description: text.target.value});\n }}\n />}\n
    \n
    \n \n {\n prevStep && (\n \n )\n } \n
    \n \n \n );\n }\n}\n\nexport default withRouter(RegisterPersonalInfo);\n","import React, {Component} from 'react';\nimport styles from './Registration.module.css';\nimport RWBUserImages from '../RWBUserImages';\nimport TextArea from '../TextArea';\nimport TextInput from '../TextInput';\nimport CustomButton from '../CustomButton';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {isNullOrEmpty} from '../../../../shared/utils/Helpers';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport {withRouter} from 'react-router-dom';\nimport imageHandler from '../ImageHandler';\nimport {logSocialProfile} from '../../../../shared/models/Analytics';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\nimport { UPLOADING_IMAGE_ERROR } from '../../../../shared/constants/ErrorMessages';\nimport { authentication } from '../../../../shared/models/Authentication';\nimport registerProfileFlow from '../../../../shared/utils/RegisterProfileFlow';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nconst FIELD_IS_REQUIRED_STRING = 'THIS FIELD IS REQUIRED';\nconst BIO_LENGTH_ERROR = 'EXCEEDED THE PROFILE BIO LIMIT';\nconst MAX_BIO_CHARS = 250;\n\nclass RegisterSocialProfile extends Component {\n constructor(props) {\n super(props);\n const {\n first_name,\n last_name,\n profile_bio,\n profile_photo_url,\n cover_photo_url,\n } = userProfile.getUserProfile();\n\n const default_state = {\n first_name: '',\n last_name: '',\n profile_bio: '',\n profile_photo_url: '',\n cover_photo_url: '',\n first_name_error: '',\n last_name_error: '',\n profile_bio_error: '',\n isLoading: false,\n };\n\n const assigned_state = Object.assign(\n default_state,\n first_name ? {first_name} : {},\n last_name ? {last_name} : {},\n profile_bio ? {profile_bio} : {},\n profile_photo_url ? {profile_photo_url} : {},\n cover_photo_url ? {cover_photo_url} : {},\n );\n this.state = assigned_state;\n }\n\n addImageHandler = (e, imageStateHandler) => {\n const file = e.target.files[0];\n const type = imageStateHandler.split('_')[0]; //cover or profile\n if (file) {\n // needs support for iOS devices as they are 'image/' type,\n // but are not selectable from the html accept value\n if (!file.type.includes('image/')) {\n window.alert('Invalid file format: please upload an image.');\n } else {\n this.setState({isLoading: true});\n imageHandler(file, type).then((result) => {\n this.setState((prevState) => ({\n ...prevState,\n [imageStateHandler]: result,\n }));\n rwbApi.putUser(JSON.stringify({[imageStateHandler]: result}));\n this.setState({isLoading: false});\n });\n }\n }\n };\n\n uploadProfileImage = async (file) => {\n const profilePhotoPayload = this.formDataMaker(file);\n await rwbApi\n .putUserPhotoWeb(profilePhotoPayload)\n .then((jsonBody) => {\n if (jsonBody.hasOwnProperty('url')) {\n // server returns 200 when upload fails, so double check that it has a url\n this.setState({profile_photo_url: jsonBody.url});\n } else throw new Error();\n })\n .catch((error) => {\n errorAlert(UPLOADING_IMAGE_ERROR);\n });\n };\n\n formDataMaker = (file) => {\n let formData = new FormData();\n formData.append('photo', file);\n return formData;\n };\n\n clearErrorWarnings = () => {\n this.setState({\n first_name_error: '',\n last_name_error: '',\n profile_bio_error: '',\n });\n };\n\n validateProfile = () => {\n const {first_name, last_name, profile_bio} = this.state;\n let hasError = false;\n if (isNullOrEmpty(first_name)) {\n this.setState({\n first_name_error: FIELD_IS_REQUIRED_STRING,\n });\n hasError = true;\n }\n if (!projectConfig.allowBlankLastName && isNullOrEmpty(last_name)) {\n this.setState({\n last_name_error: FIELD_IS_REQUIRED_STRING,\n });\n hasError = true;\n }\n if (profile_bio.length > MAX_BIO_CHARS) {\n this.setState({profile_bio_error: BIO_LENGTH_ERROR});\n hasError = true;\n }\n return !hasError;\n };\n\n nextPressed = () => {\n this.clearErrorWarnings();\n if (this.validateProfile()) this.doNext();\n };\n\n doNext = () => {\n const {\n first_name,\n last_name,\n profile_bio,\n profile_photo_url,\n cover_photo_url,\n } = this.state;\n\n // retrieve information from the previous registration flow to save and pass forward\n let value = this.props.location.state?.value || {};\n\n const newData = {\n first_name,\n last_name,\n profile_bio,\n profile_photo_url,\n cover_photo_url,\n };\n\n value = Object.assign(value, newData);\n\n const profile = Object.assign({}, userProfile.getUserProfile(), value);\n userProfile.saveToUserProfile(profile);\n let incomplete = false;\n if (this.props.location.state && this.props.location.state.incomplete)\n incomplete = true;\n logSocialProfile();\n \n const nextStep = registerProfileFlow.getNextScreen(this.props.currentPath);\n this.props.history.push({\n pathname: `/registration/${nextStep.path}`,\n state: {value: profile, incomplete},\n });\n };\n\n render() {\n const {\n first_name,\n last_name,\n profile_bio,\n profile_photo_url,\n cover_photo_url,\n\n first_name_error,\n last_name_error,\n profile_bio_error,\n\n showAndroidImageSheet,\n editingCoverPhoto,\n editingProfilePhoto,\n isLoading,\n } = this.state;\n\n const stepText = registerProfileFlow.getStepText(this.props.currentPath);\n const prevStep = registerProfileFlow.getPreviousScreen(this.props.currentPath);\n\n return (\n
    \n \n
    \n

    Social Profile

    \n

    {stepText}

    \n
    \n
    \n \n this.addImageHandler(e, 'profile_photo_url')\n }\n onChangeCover={(e) => this.addImageHandler(e, 'cover_photo_url')}\n />\n
    \n
    \n
    \n {\n this.setState({\n first_name: text.target.value,\n });\n }}\n />\n {\n this.setState({\n last_name: text.target.value,\n });\n }}\n />\n this.setState({profile_bio: value})}\n />\n
    \n
    \n \n {\n prevStep && (\n \n )\n } \n
    \n
    \n
    \n );\n }\n}\n\nexport default withRouter(RegisterSocialProfile);\n","import React, {Component} from 'react';\nimport {MILITARY_PROPS} from '../../shared/constants/RadioProps';\nimport CustomButton from '../../social-stack-web/src/components/CustomButton';\nimport RadioForm from '../../social-stack-web/src/components/RadioForm';\nimport styles from '../../social-stack-web/src/components/registration/Registration.module.css'\nimport {userProfile} from '../../shared/models/UserProfile';\nimport RadioButtons from '../../social-stack-web/src/components/profile/RadioButtons';\nimport {\n ARMY_ENLISTED,\n ARMY_WARRANT,\n ARMY_OFFICER,\n MARINES_ENLISTED,\n MARINES_WARRANT,\n MARINES_OFFICER,\n NAVY_ENLISTED,\n NAVY_WARRANT,\n NAVY_OFFICER,\n AIRFORCE_ENLISTED,\n AIRFORCE_OFFICER,\n COASTGUARD_ENLISTED,\n COASTGUARD_WARRANT,\n COASTGUARD_OFFICER,\n} from '../../shared/constants/military/ranks';\nimport {logMilitaryService} from '../models/Analytics';\nimport {withRouter} from 'react-router-dom';\nimport { primaryOptions } from '../../shared/project-info/serviceInfo';\nimport { formatRegisterServiceInfo, hasOptions } from '../../shared/utils/Helpers';\nimport { projectConfig } from '../../shared/project-info/projectConfig';\nimport registerProfileFlow from '../utils/RegisterProfileFlow';\n\nconst {\n status_radio_props,\n branch_radio_props,\n disability_radio_props,\n zone_radio_props,\n deployment_radio_props,\n} = MILITARY_PROPS;\n\nconst airForceRankData = {\n ...AIRFORCE_ENLISTED,\n ...AIRFORCE_OFFICER,\n};\nconst armyRankData = {\n ...ARMY_ENLISTED,\n ...ARMY_WARRANT,\n ...ARMY_OFFICER,\n};\nconst marinesRankData = {\n ...MARINES_ENLISTED,\n ...MARINES_WARRANT,\n ...MARINES_OFFICER,\n};\nconst navyRankData = {\n ...NAVY_ENLISTED,\n ...NAVY_WARRANT,\n ...NAVY_OFFICER,\n};\nconst coastGuardRankData = {\n ...COASTGUARD_ENLISTED,\n ...COASTGUARD_WARRANT,\n ...COASTGUARD_OFFICER,\n};\n\nconst months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nclass RegisterMilitaryService extends Component {\n constructor() {\n super();\n\n this.createDaysArray();\n this.createYearArray();\n const existing_profile = userProfile.getUserProfile();\n const {\n military_status,\n military_family_member,\n military_branch,\n military_ets,\n military_rank,\n has_disability,\n combat_zone,\n combat_deployment_operations,\n profile_completed,\n } = existing_profile;\n\n const default_state = {\n military_status: null,\n military_family_member: Boolean(military_family_member),\n military_branch,\n has_disability: false,\n etsd_month: '',\n etsd_day: '',\n etsd_year: '',\n military_rank,\n combat_zone: combat_zone,\n combat_deployment_operations: null,\n dayModalIsOpen: false,\n monthModalIsOpen: false,\n yearModalIsOpen: false,\n military_status_error: '',\n military_branch_error: '',\n disability_error: '',\n combat_zone_error: '',\n combat_deployment_operation_error: '',\n etsd_error: '',\n military_rank_error: '',\n };\n\n const assigned_state = Object.assign(\n default_state,\n military_status ? {military_status} : {},\n military_family_member ? {military_family_member} : {},\n military_branch ? {military_branch} : {},\n military_ets ? {military_ets} : {},\n military_rank ? {military_rank} : {},\n // until server sets has_disabilty as null by default, we want it to be null when the profile is not completed (registration flow)\n has_disability !== null && profile_completed ? {has_disability} : {},\n combat_zone ? {combat_zone: combat_zone} : {},\n combat_deployment_operations\n ? {combat_deployment_operations: combat_deployment_operations}\n : {},\n );\n\n this.state = assigned_state;\n this.nextPressed = this.nextPressed.bind(this);\n }\n\n getRanks = () => {\n switch (this.state.military_branch) {\n case 'Army':\n return armyRankData;\n case 'Air Force':\n return airForceRankData;\n case 'Marine Corps':\n return marinesRankData;\n case 'Navy':\n return navyRankData;\n case 'Coast Guard':\n return coastGuardRankData;\n default:\n return [];\n }\n };\n\n clearErrorWarnings = () => {\n this.setState({\n military_rank_error: '',\n military_branch_error: '',\n etsd_error: '',\n combat_zone_error: '',\n combat_deployment_operation_error: '',\n disability_error: '',\n military_status_error: '',\n });\n };\n\n nextPressed() {\n logMilitaryService();\n this.clearErrorWarnings();\n const {\n military_status,\n military_family_member,\n military_branch,\n military_rank,\n combat_zone,\n combat_deployment_operations,\n has_disability,\n etsd_month,\n etsd_day,\n etsd_year,\n } = this.state;\n\n const field_is_required_string = 'THIS FIELD IS REQUIRED';\n const invalid_date = 'INVALID DATE';\n\n let hasError = false;\n let etsdDate = '';\n\n if (military_status === null) {\n this.setState({military_status_error: field_is_required_string});\n hasError = true;\n }\n\n if (hasOptions(military_status, primaryOptions)) {\n if (military_branch === null || military_branch === undefined) {\n this.setState({military_branch_error: field_is_required_string});\n hasError = true;\n }\n }\n\n if (has_disability === null) {\n this.setState({disability_error: field_is_required_string});\n hasError = true;\n }\n\n if (hasError) return;\n\n const {location} = this.props;\n let value = location.state?.value || {};\n\n value = formatRegisterServiceInfo(value, combat_zone, military_status, null, military_rank, military_branch, has_disability, primaryOptions);\n const profile = Object.assign({}, userProfile.getUserProfile(), value);\n userProfile.saveToUserProfile(profile);\n let incomplete = false;\n if (location.state && location.state.incomplete) incomplete = true;\n\n const nextStep = registerProfileFlow.getNextScreen(this.props.currentPath);\n this.props.history.push({\n pathname: `/registration/${nextStep.path}`,\n state: {value: profile, incomplete},\n });\n }\n\n createDaysArray = () => {\n let daysArray = [];\n for (let i = 1; i < 32; i++) {\n daysArray.push(i.toString());\n }\n this.days = daysArray;\n };\n\n createYearArray = () => {\n let currentYear = new Date().getFullYear();\n let endYear = currentYear - 81;\n let years = [];\n for (let i = currentYear; i > endYear; i--) {\n years.push(i.toString());\n }\n this.years = years;\n };\n\n disabilityHandler = (value) => this.setState({has_disability: value});\n\n combatZoneHandler = (value) => this.setState({combat_zone: value});\n\n combatDeploymentHandler = (value) =>\n this.setState({combat_deployment_operations: value});\n\n militaryFamilyMemberHandler = () =>\n this.setState({military_family_member: !this.state.military_family_member});\n\n etsMonthHandler = (value) => this.setState({etsd_month: value});\n etsDayHandler = (value) => this.setState({etsd_day: value});\n etsYearHandler = (value) => this.setState({etsd_year: value});\n\n militaryRankHandler = (value) => this.setState({military_rank: value});\n\n militaryBranchHandler = (value) => {\n this.setState({military_branch: value, military_rank: null});\n };\n\n render() {\n const {\n military_branch_error,\n military_status_error,\n disability_error,\n combat_zone_error,\n combat_deployment_operation_error,\n etsd_error,\n military_rank_error,\n military_branch,\n military_status,\n has_disability,\n combat_zone,\n combat_deployment_operations,\n etsd_month,\n etsd_day,\n etsd_year,\n yearModalIsOpen,\n dayModalIsOpen,\n monthModalIsOpen,\n military_rank,\n } = this.state;\n\n const stepText = registerProfileFlow.getStepText(this.props.currentPath);\n const prevStep = registerProfileFlow.getPreviousScreen(this.props.currentPath);\n\n return (\n
    \n
    \n

    Service Information

    \n

    {stepText}

    \n
    \n
    \n
    \n \n this.setState({\n military_status: value,\n })\n }\n />\n {military_status &&\n hasOptions(military_status, primaryOptions) && (\n this.militaryBranchHandler(value)}\n />\n )}\n {/* {military_status === MILITARY_STATUSES.veteran && (\n <>\n

    Expiration Term of Service Date

    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n

    {etsd_error}

    \n \n )} */}\n {/* {military_branch && military_status !== MILITARY_STATUSES.civilian && (\n
    \n \n

    {military_rank_error}

    \n
    \n )} */}\n {/* {military_status && military_status !== MILITARY_STATUSES.civilian && ( */}\n
    \n \n

    {disability_error}

    \n {/* \n

    {combat_zone_error}

    */}\n {/* {combat_zone && (\n
    \n \n

    \n {combat_deployment_operation_error}\n

    \n
    \n )} */}\n
    \n {/* )} */}\n {/* {military_status === MILITARY_STATUSES.civilian && (\n <>\n

    \n Are you a Military Family Member? (Military family members are\n related by blood, marriage, or adoption to an actively serving\n member or veteran of the U.S. armed forces, including one who\n is deceased.)\n

    \n \n \n )} */}\n
    \n
    \n \n {\n prevStep && (\n \n )\n }\n
    \n
    \n
    \n );\n }\n}\n\nexport default withRouter(RegisterMilitaryService);\n","import React, {Component} from 'react';\nimport CustomButton from '../CustomButton';\nimport ToggleSwitch from '../ToggleSwitch';\nimport styles from './Registration.module.css';\nimport RadioButtons from '../profile/RadioButtons';\nimport {ANON_PROPS} from '../../../../shared/constants/RadioProps';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport LegalModal from '../LegalModal';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {MILITARY_STATUSES} from '../../../../shared/constants/MilitaryStatusSlugs';\nimport {logCompleteRegistration} from '../../../../shared/models/Analytics';\nimport Loading from '../Loading';\nimport {withRouter} from 'react-router-dom';\nimport { authentication } from '../../../../shared/models/Authentication';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport registerProfileFlow from '../../../../shared/utils/RegisterProfileFlow';\n\nconst {anon_radio_props} = ANON_PROPS;\n\nclass RegisterPrivacyWaiver extends Component {\n constructor() {\n super();\n // on mobile there is a flow to make users who have stale data update. When that is implemented on web, this will need to be readressed\n // const existing_profile = userProfile.getUserProfile();\n this.state = {\n user: userProfile.getUserProfile(),\n anonymous_profile: false, // despite being set as null initially, the original instance of existing_profile has anonymous_profile as true (Even on the step directly after confirming email)\n legal_waiver: false,\n legal_waiver_error_text: '',\n isLegalWaiver: false,\n isLoading: false,\n };\n }\n\n legalWaiverHandler = (state) => this.setState({isLegalWaiver: state});\n\n legalWaiverStatusHandler = () =>\n this.setState({\n legal_waiver: !this.state.legal_waiver,\n });\n\n anonymousProfileHandler = (value) =>\n this.setState({anonymous_profile: value});\n\n nextPressed = () => {\n logCompleteRegistration();\n const {anonymous_profile, legal_waiver} = this.state;\n\n if (!legal_waiver) {\n this.setState({\n legal_waiver_error_text: 'YOU MUST ACCEPT THE WAIVER TO CONTINUE',\n });\n return;\n } else {\n this.setState({legal_waiver_error_text: ''});\n }\n\n const {location} = this.props;\n let value = location.state?.value || {};\n\n value = Object.assign(value, {\n anonymous_profile,\n legal_waiver_signed: legal_waiver,\n });\n this.setState({isLoading: true});\n\n this.updateUser(value)\n .then((response) => {\n this.setState({\n isLoading: false,\n });\n rwbApi.getUser().then((response) => {\n this.props.history.push({\n pathname: '/feed',\n state: {newAccount: true},\n });\n });\n })\n .catch((error) => {\n alert('There was a problem contacting the server. Please try again.');\n this.setState({\n isLoading: false,\n });\n });\n };\n\n updateUser(value) {\n const {anonymous_profile, legal_waiver} = this.state;\n let payload = {\n //Profile Info\n first_name: value.first_name,\n last_name: value.last_name,\n profile_bio: value.profile_bio || null,\n street: value.location?.address,\n street_2: value.location?.apartment || null, //optional apartment field\n state: value.location?.address_state,\n address_type: value.location?.address_type,\n city: value.location?.city,\n zipcode: value.location?.zip,\n country: value.location?.country,\n address_verified: value.address_verified,\n international_address_verified: value?.international_address_verified,\n phone: value.phone,\n gender: value.gender,\n\n service_info: value.service_info,\n extra_info: value.extra_info,\n\n //Legal Waiver\n anonymous_profile: anonymous_profile,\n legal_waiver_signed: legal_waiver,\n };\n\n if (value.military_status === MILITARY_STATUSES.veteran) {\n payload.military_ets = value.military_ets;\n }\n if (value.military_status !== MILITARY_STATUSES.civilian) {\n payload.military_rank = value.military_rank;\n payload.combat_zone = value.combat_zone;\n payload.has_disability = value.has_disability;\n payload.military_branch = value.military_branch;\n } else payload.military_family_member = value.military_family_member;\n // extra chance to avoid salesforce syncing issues\n if (value.combat_zone)\n payload.combat_deployment_operations = value.combat_deployment_operations;\n return rwbApi.putUser(JSON.stringify(payload));\n }\n navigatePreviousPage = () =>{\n const prevStep = registerProfileFlow.getPreviousScreen(this.props.currentPath); \n this.props.history.push({\n pathname: `/registration/${prevStep.path}`,\n state: {\n value:this.props.location.state?.value\n },\n });\n}\n render() {\n const {\n isLoading,\n isLegalWaiver,\n anonymous_profile,\n legal_waiver,\n legal_waiver_error_text,\n } = this.state;\n const stepText = registerProfileFlow.getStepText(this.props.currentPath);\n return (\n
    \n \n
    \n

    Privacy/Waiver

    \n

    {stepText}

    \n
    \n
    \n
    \n

    Legal Waiver

    \n

    \n this.legalWaiverHandler(true)}>\n Please read our Legal Waiver\n \n . You must accept waiver to complete signup.\n

    \n
    \n \n
    \n {

    {legal_waiver_error_text}

    }\n {/* Privacy waiver buttons */}\n {projectConfig.supportsAnonymousUsers == true && }\n
    \n
    \n \n \n
    \n
    \n {isLegalWaiver && }\n
    \n );\n }\n}\n\nexport default withRouter(RegisterPrivacyWaiver);\n","import React, { Component } from 'react';\nimport CustomButton from '../CustomButton';\nimport styles from './Registration.module.css';\nimport { authentication } from '../../../../shared/models/Authentication';\nimport { logVerifyEmail } from '../../../../shared/models/Analytics';\nimport { withRouter } from 'react-router-dom';\nimport { rwbApi } from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport registerProfileFlow from '../../../../shared/utils/RegisterProfileFlow';\n\n\nclass RegisterWorkspaceAccessCode extends Component {\n constructor() {\n super();\n this.state = {\n isLoading: false,\n showDialog: false,\n confirmationCode: new Array(projectConfig.verificationCodeLength).fill(''),\n errorMessage: '',\n userEmail:\"\"\n };\n }\n\n logout = () => {\n authentication.deleteAuthentication();\n this.props.history.replace('/login');\n };\n\n verifyWorkSpace = () => {\n this.setState({errorMessage: ''});\n logVerifyEmail();\n const code = this.state.confirmationCode.join('');\n rwbApi\n .verifyWorkspaceAccessCode(code)\n .then((response) => {\n this.setState({codeError: false});\n const firstScreen = registerProfileFlow.getFirstScreen();\n this.props.history.push(`/registration/${firstScreen.path}`);\n })\n .catch((err) => {\n this.setState({codeError: true});\n });\n }\n\n updateCode = (index, event) => {\n let code = this.state.confirmationCode;\n let value = event.target.value;\n // the user can press a new number after backspacing, keep the original number and prevent getting double digits\n if (value.length > 1) {\n value = value.charAt(0);\n }\n const currentValue = code[index];\n code[index] = value;\n // focus into next or previous input\n const newIndex = value !== '' ? index + 1 : index - 1;\n if (newIndex >= 0 && newIndex < projectConfig.verificationCodeLength) {\n if ((currentValue === '' && value !== '') || (currentValue === '' && value === ''))\n document.getElementById(`codeInput-${newIndex}`).focus();\n }\n this.setState({ confirmationCode: code });\n }\n\n handleBack = (index, event) => {\n // this function is called on key down and picks up all key events\n // if the key down is a \".\" prevent it from being added\n if (event.keyCode === 190) event.preventDefault();\n // backbutton\n if (event.keyCode === 8) {\n this.setState({errorMessage: ''});\n let code = this.state.confirmationCode;\n const inputValue = this.state.confirmationCode[index];\n if (inputValue === '' && index > 0) {\n document.getElementById(`codeInput-${index - 1}`).focus();\n }\n code[index] = '';\n this.setState({ confirmationCode: code });\n }\n }\n\n render() {\n const { isLoading } = this.state;\n\n return (\n
    \n \n
    \n

    Workspace Access Code

    \n \n
    \n
    \n
    \n \n
    \n \n

    \n Enter your FitPros Access Code.\n

    \n \n
    \n
    \n {projectConfig.verificationType === 'code' && (\n // verification code\n
    \n {new Array(projectConfig.verificationCodeLength).fill(0).map((value, index) => {\n return (\n this.updateCode(index, event)} onKeyDown={(event) => this.handleBack(index, event)} />\n )\n })}\n

    {this.state.errorMessage}

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

    \n Your FitPros Access Code is provided by your employer. If you can't find it, please\n
    \n \n contact us\n {' '}\n for help.\n

    \n \n \n
    \n
    \n \n
    \n );\n }\n}\n\nexport default withRouter(RegisterWorkspaceAccessCode);\n","import React, {useState} from 'react';\nimport {Switch, Route, useRouteMatch, useHistory} from 'react-router-dom';\nimport PrivateRoute from '../PrivateRoute';\nimport RegisterVerifyEmail from './RegisterVerifyEmail';\nimport RegisterPersonalInfo from './RegisterPersonalInfo';\nimport RegisterSocialProfile from './RegisterSocialProfile';\nimport RegisterMilitaryService from '../../../../shared/project-info/RegisterMilitaryService'\nimport RegisterPrivacyWaiver from './RegisterPrivacyWaiver';\nimport RegisterWorkSpaceAccessCode from './RegisterWorkSpaceAccessCode'\nimport TextInput from '../TextInput';\nimport CustomButton from '../CustomButton';\nimport styles from './Registration.module.css';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {isNullOrEmpty} from '../../../../shared/utils/Helpers';\nimport Loading from '../Loading';\nimport {logCreateAccount} from '../../../../shared/models/Analytics';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport registerProfileFlow from '../../../../shared/utils/RegisterProfileFlow';\n\n\nexport default function Registration() {\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n const [email, setEmail] = useState('');\n const [confirmEmail, setConfirmEmail] = useState('');\n const [password, setPassword] = useState('');\n const [confirmPassword, setConfirmPassword] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [firstNameErrorText, setFirstNameErrorText] = useState('');\n const [lastNameErrorText, setLastNameErrorText] = useState('');\n const [emailErrorText, setEmailErrorText] = useState('');\n const [confirmEmailErrorText, setConfirmEmailErrorText] = useState('');\n const [passwordErrorText, setPasswordErrorText] = useState('');\n const [confirmPasswordErrorText, setConfirmPasswordErrorText] = useState('');\n const [serverErrorText, setServerErrorText] = useState('');\n\n const match = useRouteMatch();\n const history = useHistory();\n\n const clearErrorWarnings = () => {\n setFirstNameErrorText('');\n setLastNameErrorText('');\n setEmailErrorText('');\n setConfirmEmailErrorText('');\n setPasswordErrorText('');\n setConfirmPasswordErrorText('');\n setServerErrorText('');\n };\n\n const createAccountPressed = () => {\n clearErrorWarnings();\n\n //Local error checking\n\n let field_is_required_string = 'THIS FIELD IS REQUIRED';\n let hasError = false;\n\n if (isNullOrEmpty(firstName)) {\n setFirstNameErrorText(field_is_required_string);\n hasError = true;\n }\n if (!projectConfig.allowBlankLastName && isNullOrEmpty(lastName)) {\n setLastNameErrorText(field_is_required_string);\n hasError = true;\n }\n if (isNullOrEmpty(email)) {\n setEmailErrorText(field_is_required_string);\n hasError = true;\n }\n if (isNullOrEmpty(confirmEmail)) {\n setConfirmEmailErrorText(field_is_required_string);\n hasError = true;\n }\n if (email !== confirmEmail) {\n setConfirmEmailErrorText('EMAIL DOES NOT MATCH');\n hasError = true;\n }\n if (isNullOrEmpty(password)) {\n setPasswordErrorText(field_is_required_string);\n hasError = true;\n }\n if (!isNullOrEmpty(password) && password.length < 8) {\n setPasswordErrorText('PASSWORD MUST BE AT LEAST 8 CHARACTERS LONG');\n hasError = true;\n }\n if (isNullOrEmpty(confirmPassword)) {\n setConfirmPasswordErrorText(field_is_required_string);\n hasError = true;\n }\n if (password !== confirmPassword) {\n setConfirmPasswordErrorText('PASSWORD DOES NOT MATCH');\n hasError = true;\n }\n\n if (hasError) return;\n logCreateAccount();\n createUser(firstName, lastName, email, password);\n };\n\n const createUser = (firstName, lastName, email, password) => {\n setIsLoading(true);\n return rwbApi\n .createNewUser(\n JSON.stringify({\n grant_type: 'client_credentials',\n first_name: firstName,\n last_name: lastName,\n email: email,\n password: password,\n }),\n )\n .then((response) => {\n if (response.status === 200) {\n response.json().then((jsonBody) => {\n setServerErrorText('');\n userProfile.setUserId(jsonBody.id);\n rwbApi\n .loginUser(email, password)\n .then((response) => {\n rwbApi.putUser(\n JSON.stringify({registration_started_via_app: true}),\n );\n history.push(`${match.path}/confirm_email`);\n })\n .catch((error) => {\n alert(\n 'Server error. Please try again. If the problem persists, please contact support@teamrwb.org',\n );\n setIsLoading(false);\n });\n });\n } else {\n response.json().then((jsonBody) => {\n setIsLoading(false);\n if (jsonBody.code === 'existing_user_login' || jsonBody.email[0].includes('already exists')) {\n setEmailErrorText('AN ACCOUNT WITH THIS EMAIL ALREADY EXISTS');\n } else {\n setServerErrorText(\n 'THERE WAS A PROBLEM WITH THE SERVER. PLEASE TRY AGAIN',\n );\n }\n });\n }\n })\n .catch((err) => {\n console.warn(err); \n setIsLoading(false);\n setServerErrorText(\n 'THERE WAS A PROBLEM WITH THE SERVER, PLEASE TRY AGAIN',\n );\n });\n };\n\n // Maps the screen names at projectConfig.registerProfileSteps to web components.\n const registerProfileComponentMap = {\n PersonalInfo: RegisterPersonalInfo,\n SocialProfile: RegisterSocialProfile,\n MilitaryService: RegisterMilitaryService,\n PrivacyWaiver: RegisterPrivacyWaiver,\n };\n\n const totalSteps = registerProfileFlow.getTotalSteps();\n return (\n
    \n \n \n \n\n {/* Dynamically create the profile registration routes. The order and presense of these next steps are set in projecConfig.registerProfileSteps */}\n {projectConfig.registerProfileSteps.map((step) => (\n React.createElement(registerProfileComponentMap[step.screen], {...props, currentPath: step.path})}\n />\n ))}\n\n {/* Next route is public -- they need to create an account before they can auth! */}\n \n \n
    \n
    \n

    Signup

    \n

    Step 1 of {totalSteps}

    \n
    \n
    \n
    \n setFirstName(text.target.value)}\n onEnter={createAccountPressed}\n autoFillLabel=\"given-name\"\n />\n setLastName(text.target.value)}\n onEnter={createAccountPressed}\n autoFillLabel=\"family-name\"\n />\n setEmail(text.target.value)}\n onEnter={createAccountPressed}\n />\n

    \n {projectConfig.emailAddressMessage}\n

    \n setConfirmEmail(text.target.value)}\n onEnter={createAccountPressed}\n />\n setPassword(text.target.value)}\n onEnter={createAccountPressed}\n />\n \n setConfirmPassword(text.target.value)\n }\n onEnter={createAccountPressed}\n />\n
    \n
    \n

    \n By creating an account, you agree to {`${projectConfig.name}'s `}\n \n Privacy Policy\n \n {/*  and  */}\n {/* \n Community Guidelines\n */}\n

    \n
    \n {serverErrorText != '' && (\n

    \n {serverErrorText}\n

    \n )}\n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n );\n}\n","import React, {useEffect} from 'react';\n\nimport {authentication} from '../../../../shared/models/Authentication';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {useHistory} from 'react-router-dom';\nimport registerProfileFlow from '../../../../shared/utils/RegisterProfileFlow';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { userProfile } from '../../../../shared/models/UserProfile';\n\nconst Home = (props) => {\n let history = useHistory();\n\n useEffect(() => {\n authentication\n .getAccessToken()\n .then((accessToken) => {\n if (accessToken) return accessToken;\n return Promise.reject('Missing Credentials');\n })\n .then(rwbApi.getAuthenticatedUser)\n .then((json) => {\n const {email_verified, profile_completed, workspace} = json;\n if (!email_verified) {\n history.push(`/registration/confirm_email`);\n }\n else if (projectConfig.hasWorkspaces && workspace == null && !userProfile?.isOperator) {\n history.push(`/registration/work_space`);\n }\n else if (email_verified && !profile_completed) {\n const firstScreen = registerProfileFlow.getFirstScreen();\n history.push(`/registration/${firstScreen.path}`);\n } else {\n history.push('/feed');\n }\n })\n .catch(() => {\n history.push('login');\n });\n }, [history]);\n\n return (\n
    \n
    \n
    \n
    \n );\n};\n\nexport default Home;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class HomeIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nHomeIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#828588',\n filledIcon: true,\n};\n\nHomeIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n filledIcon: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class GroupsIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nGroupsIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#828588',\n filledIcon: true,\n};\n\nGroupsIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n filledIcon: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ChallengeTabIcon extends Component {\n render() {\n return (\n \n \n \n );\n }\n}\n\nChallengeTabIcon.defaultProps = {\n width: 24,\n height: 24,\n tintColor: '#828588',\n filledIcon: true,\n};\n\nChallengeTabIcon.propTypes = {\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tintColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n filledIcon: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './NavigationButton.module.css';\nimport HomeIcon from '../svgs/HomeIcon';\nimport GroupsIcon from '../svgs/GroupsIcon';\nimport EventIcon from '../svgs/EventsIcon';\nimport ChallengeIcon from '../svgs/ChallengeTabIcon';\nimport MyProfileIcon from '../svgs/MyProfileIcon';\n\nconst ACTIVE_TAB = 'var(--primary)';\nconst INACTIVE_TAB = '#828588';\n\nexport default class NavigationButton extends Component {\n render() {\n const {pathname} = window.location;\n const {url, exact, label} = this.props;\n return (\n //probably better to create some sort of js event listener? NavLink has isActive as well; could use that\n \n {label === 'Feed' && (\n \n )}\n {label === 'Groups' && (\n \n )}\n {label === 'Events' && (\n \n )}\n {label === 'Challenges' && (\n \n )}\n {label === 'Profile' && (\n \n )}\n

    {label}

    \n \n );\n }\n}\n\nNavigationButton.propTypes = {\n label: PropTypes.string.isRequired,\n url: PropTypes.string,\n};\n","import React from 'react';\nimport {NavLink, useLocation} from 'react-router-dom';\nimport styles from './NavigationColumn.module.css';\nimport NavigationButton from './NavigationButton';\nimport { ReactComponent as AppLogo } from '../../../../shared/project-info/svgs-web/AppLogo.svg';\nimport {\n logAccessFeed,\n logAccessEvents,\n logAccessMyProfile,\n} from '../../../../shared/models/Analytics';\nimport ApiInfo from '../ApiInfo';\nimport {projectConfig} from '../../../../shared/project-info/projectConfig';\nconst pJSON = require('../../../package.json');\n\nexport default function NavigationColumn() {\n const location = useLocation();\n function isNavBarDisplayed(location) {\n const {pathname} = location;\n const allowedPaths = [\n '/feed',\n '/groups',\n '/events',\n '/challenges',\n '/profile',\n '/notifications',\n // '/login',\n // '/registration',\n ];\n for (const allowedPath of allowedPaths) {\n if (pathname.startsWith(allowedPath)) {\n return true;\n }\n }\n return false;\n }\n const showNavBar = isNavBarDisplayed(location);\n return (\n
    \n
    \n
    \n \n
    \n {/* \n \n */}\n \n \n \n {/* onClick={logAccessGroups} */}\n {projectConfig.hasGroups && \n \n }\n \n \n \n {projectConfig.hasChallenges && \n \n }\n\n \n \n \n
    \n\n
    \n
    {projectConfig.orgName}
    \n
    \n \n Privacy Policy\n \n
    \n {projectConfig.userSupportLink && \n
    \n \n Help Center\n \n
    \n }\n
    \n \n Community Guidelines\n \n
    \n
    \n

    Version: {projectConfig.version}

    \n
    \n \n
    \n
    \n );\n}\n","import React from 'react';\nimport styles from './ChallengeCard.module.css';\nimport moment from 'moment';\nimport AppMark from '../../../../shared/project-info/web-project-info/svgs/AppMark';\nimport {\n isUpcomingChallenge,\n howLongUntil,\n} from '../../../../shared/utils/ChallengeHelpers';\n\nconst ChallengeCardHeader = ({title, endTime, ended, startTime, badgeURL}) => {\n return (\n
    \n
    \n

    {title}

    \n {ended ? (\n
    Ended {moment(endTime).format('MMM DD, YYYY')}
    \n ) : (\n
    \n {startTime && isUpcomingChallenge(startTime)\n ? `Starts ${moment(startTime).format('MMM DD, YYYY')}`\n : `${howLongUntil(endTime)} Days Left`}\n
    \n )}{' '}\n
    \n {badgeURL ? (\n \n ) : (\n \n )}\n
    \n );\n};\n\nexport default ChallengeCardHeader;\n","import React, {useEffect, useState} from 'react';\nimport styles from './ChallengeCard.module.css';\nimport AttendeesAndFollowedUsers from '../AttendeesAndFollowedUsers';\nimport ChallengeCardHeader from './ChallengeCardHeader';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {CHALLENGE_ERORRS, JOIN_CHALLENGE_ERROR} from '../../../../shared/constants/ErrorMessages';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\n\nconst UnjoinedChallengeCard = ({\n title,\n endTime,\n description,\n challengeId,\n refreshChallenges,\n startTime,\n badgeURL,\n}) => {\n const [loading, setLoading] = useState(false);\n const [participants, setParticipants] = useState([]);\n const [followingParticipants, setFollowingParticipants] = useState();\n const [participantsCount, setParticipantsCount] = useState(0);\n\n useEffect(() => {\n if (challengeId) {\n Promise.all([getParticipants(), getFollowingParticipants()]).then(\n ([participants, followingParticipants]) => {\n setParticipants(participants.participants);\n setFollowingParticipants(followingParticipants[0].attendees);\n setParticipantsCount(participants.total_count);\n },\n );\n }\n }, []);\n\n const getParticipants = () => {\n return rwbApi.getChallengeParticipants(challengeId).then((res) => {\n return res;\n });\n };\n\n const getFollowingParticipants = () => {\n return rwbApi.getChallengeFollowingParticipants(challengeId).then((res) => {\n return res;\n });\n };\n\n const joinChallenge = (e) => {\n // prevent the link from navigating to the challenge\n // when pressing join\n e.stopPropagation();\n e.preventDefault();\n setLoading(true);\n rwbApi\n .joinChallenge(challengeId)\n .then(() => {\n refreshChallenges();\n })\n .catch((err) => {\n errorAlert(CHALLENGE_ERORRS.JOIN);\n })\n .finally(() => {\n setLoading(false);\n });\n };\n\n return (\n
    \n \n

    {description}

    \n {participants.length > 0 && (\n \n )}\n
    \n Join Challenge\n
    \n
    \n );\n};\n\nexport default UnjoinedChallengeCard;\n","import React from 'react';\nimport {trimProgress} from '../../../../shared/utils/ChallengeHelpers';\nimport {\n capitalizeFirstLetter,\n getPercentage,\n ordinalIndicator,\n} from '../../../../shared/utils/Helpers';\nimport styles from './ChallengeCard.module.css';\n\nconst ChallengeProgressBar = ({progress, place, goal, metric}) => {\n return (\n <>\n
    \n \n {parseFloat(progress) >= parseFloat(goal) && (\n

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

    \n {parseFloat(progress) >= parseFloat(goal)\n ? trimProgress(progress, metric)\n : `${trimProgress(progress || 0, metric)}/${trimProgress(goal, metric)}`}\n {` ${capitalizeFirstLetter(metric)}`}\n

    \n

    \n {place ? ordinalIndicator(place) : null}\n

    \n
    \n \n );\n};\n\nexport default ChallengeProgressBar;\n","import React, {useState, useEffect} from 'react';\nimport styles from './ChallengeCard.module.css';\nimport ChallengeCardHeader from './ChallengeCardHeader';\nimport ChallengeProgressBar from './ChallengeProgressBar';\nimport {capitalizeFirstLetter} from '../../../../shared/utils/Helpers';\nimport {\n isUpcomingChallenge,\n trimProgress,\n} from '../../../../shared/utils/ChallengeHelpers';\nimport DefaultProfileImg from '../../../../shared/project-info/images/DefaultProfileImg.png';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {rwbApi} from '../../../../shared/apis/api';\n\nconst JoinedChallengeCard = ({\n title,\n endTime,\n goal,\n metric,\n ended,\n startTime,\n challengeId,\n badgeURL,\n}) => {\n const [isLoading, setIsLoading] = useState(false);\n const [progress, setProgress] = useState('');\n const [rank, setRank] = useState('');\n\n const getProgress = () => {\n setIsLoading(true);\n rwbApi\n .getLeaderboardRank(challengeId)\n .then((result) => {\n setRank(result.rank);\n setProgress(result.score);\n })\n .catch((err) => {\n // todo figure out how we want to handle errors on this\n })\n .finally(() => {\n setIsLoading(false);\n });\n };\n\n useEffect(() => {\n getProgress();\n }, []);\n\n return (\n
    \n \n {!isUpcomingChallenge(startTime) ? (\n goal && goal > 0 ? (\n \n ) : rank ? (\n
    \n
    \n

    {rank}.

    \n {/* profile_photo_url is different than what the server usually returns. Potentially have the server returning the user's photo. */}\n \n

    You

    \n
    \n

    \n {trimProgress(progress, metric)} {capitalizeFirstLetter(metric)}\n

    \n
    \n ) : null\n ) : null}\n
    \n );\n};\n\nexport default JoinedChallengeCard;\n","import React, {useState, useEffect} from 'react';\nimport {useParams, Link, useHistory} from 'react-router-dom';\nimport {userProfile} from '../../../../shared/models/UserProfile';\nimport {putUserFirst} from '../../../../shared/utils/Helpers';\nimport DetailHeader from '../DetailHeader';\nimport Loading from '../Loading';\nimport styles from './ChallengeDetail.module.css';\nimport AvatarList from '../AvatarList';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport ChallengeProgressBar from './ChallengeProgressBar';\nimport {\n CHALLENGE_ERORRS,\n JOIN_CHALLENGE_ERROR,\n LOAD_CHALLENGE_ERROR,\n} from '../../../../shared/constants/ErrorMessages';\nimport {isDev} from '../../../../shared/utils/IsDev';\nimport RankingRow from './RankingRow';\nimport FeedList from '../feed/FeedList';\nimport CreatePostButton from '../feed/CreatePostButton';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport {\n earnedBadge,\n getChallengeStatusText,\n} from '../../../../shared/utils/ChallengeHelpers';\nimport {errorAlert} from '../../../../shared/utils/ErrorAlert';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport moment from 'moment';\nimport {GROUP_EVENT_OPTIONS} from '../../../../shared/constants/EventFilters';\nimport EventsIcon from '../svgs/EventsIcon';\n\nconst ChallengeDetail = ({updateJoined}) => {\n const {challengeId} = useParams();\n const [isLoading, setIsLoading] = useState(false);\n const [name, setName] = useState();\n const [endTime, setEndTime] = useState();\n const [startTime, setStartTime] = useState();\n const [coverPhoto, setCoverPhoto] = useState();\n const [description, setDescription] = useState();\n const [copyMessage, setCopyMessage] = useState();\n const [eventCount, setEventcount] = useState(0);\n const [changingChallengeStatus, setChangingChallengeStatus] = useState(false);\n const [joinedChallenge, setJoinedChallenge] = useState(false);\n const [totalUsers, setTotalUsers] = useState([]);\n const [totalUsersCount, setTotalUsersCount] = useState(0);\n const [badgeURL, setBadgeUrl] = useState();\n const [hasBadge, setHasBadge] = useState(false);\n const [badgeName, setBadgeName] = useState();\n const [progress, setProgress] = useState(0);\n const [goal, setGoal] = useState(0);\n const [place, setPlace] = useState(0);\n const [checkin_event_category, setCheckinEventCategory] = useState();\n const [metric, setMetric] = useState('');\n const [links, setLinks] = useState();\n const [leaderboard, setLeaderboard] = useState([]);\n const [feed, setFeed] = useState([]);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const [retrievedLastPost, setRetrievedLastPost] = useState(false);\n\n const user = userProfile.getUserProfile();\n const history = useHistory();\n\n const viewEventsForCategory = (checkin_event_category) => {\n const filter_category = checkin_event_category === null ? 'all-activities' : checkin_event_category;\n // NavigationService.navigate('EventsScreen', {localEventCategory: filter_category, virtualEventCategory: filter_category});\n }\n\n const copyChallengeURL = () => {\n // todo, figure out url\n navigator.clipboard.writeText(\n isDev()\n ? `${projectConfig.stagingURL}challenges/${challengeId}`\n : `${projectConfig.prodURL}challenges/${challengeId}`,\n );\n setCopyMessage('Copied!');\n setTimeout(() => {\n setCopyMessage('');\n }, 3000);\n };\n\n const joinChallenge = () => {\n if (!changingChallengeStatus) {\n setChangingChallengeStatus(true);\n userJoined();\n rwbApi\n .joinChallenge(challengeId)\n .then(() => {\n // update the active challenges list on the challenges tab\n if (updateJoined) updateJoined();\n Promise.all([loadChallengeRank(), loadTopParticipants()]).then(\n ([rank, topParticipants]) => {\n setPlace(rank.rank);\n setProgress(rank.score);\n setLeaderboard(topParticipants.data || []);\n setChangingChallengeStatus(false);\n },\n );\n })\n .catch(() => {\n userLeft();\n setJoinedChallenge(false);\n errorAlert(CHALLENGE_ERORRS.JOIN);\n setChangingChallengeStatus(false);\n });\n }\n };\n\n const userJoined = () => {\n setJoinedChallenge(true);\n const user = userProfile.getUserProfile();\n let userList = Array.from(putUserFirst(totalUsers, joinedChallenge));\n userList.unshift(user);\n setTotalUsers(userList);\n setTotalUsersCount(totalUsersCount + 1);\n };\n\n const leaveChallenge = () => {\n if (!changingChallengeStatus) {\n setChangingChallengeStatus(true);\n userLeft();\n rwbApi\n .leaveChallenge(challengeId)\n .then((result) => {\n if (updateJoined) updateJoined();\n loadTopParticipants().then((topParticipants) => {\n setLeaderboard(topParticipants.data || []);\n setChangingChallengeStatus(false);\n });\n })\n .catch((err) => {\n setChangingChallengeStatus(false);\n console.warn(err);\n userJoined();\n errorAlert(CHALLENGE_ERORRS.LEAVE);\n });\n }\n };\n\n const userLeft = () => {\n setJoinedChallenge(false);\n let userList = Array.from(putUserFirst(totalUsers, joinedChallenge));\n userList.shift();\n setTotalUsers(userList);\n setTotalUsersCount(totalUsersCount - 1);\n };\n\n const viewEvents = () => {\n history.push({\n pathname: `${challengeId}/events`,\n state: {\n challengeName: name,\n },\n });\n };\n\n const userJoinedChallenge = () => {\n return rwbApi\n .hasJoinedChallenge(challengeId)\n .then((result) => {\n return result;\n })\n .catch((err) => {\n console.warn(err);\n });\n };\n\n useEffect(() => {\n setIsLoading(true);\n Promise.all([\n loadChallenge(),\n userJoinedChallenge(),\n loadChallengeRank(),\n loadTopParticipants(),\n loadChallengeFeed(),\n getChallengeParticipants(),\n ])\n .then(\n ([challenge, joined, rank, topParticipants, feed, participants]) => {\n setBadgeName(challenge.badge_name);\n setBadgeUrl(challenge.badge_image_url);\n setStartTime(challenge.start_date);\n setEndTime(challenge.end_date);\n setName(challenge.name);\n setDescription(challenge.description);\n setEventcount(challenge.event_count);\n setCoverPhoto(challenge.cover_image_url);\n setGoal(challenge.goal);\n setMetric(challenge.required_unit);\n setCheckinEventCategory(challenge.checkin_event_category);\n setLinks(challenge.links || []);\n setJoinedChallenge(joined);\n setIsLoading(false);\n setPlace(rank.rank);\n setProgress(rank.score);\n setLeaderboard(topParticipants.data || []);\n setFeed([...feed.data?.results]);\n setTotalUsers(participants.participants);\n setTotalUsersCount(participants.count);\n },\n )\n .catch((err) => {\n errorAlert(CHALLENGE_ERORRS.LOAD);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }, []);\n\n const getChallengeParticipants = () => {\n return rwbApi\n .getChallengeParticipants(challengeId)\n .then((result) => {\n return result;\n })\n .catch((err) => {\n console.warn(err);\n });\n };\n\n const loadChallenge = () => {\n return rwbApi\n .getChallenge(challengeId)\n .then((result) => {\n return result;\n })\n .catch((err) => {\n console.warn(err);\n });\n };\n\n const loadChallengeRank = () => {\n return rwbApi\n .getLeaderboardRank(challengeId)\n .then((result) => {\n return result;\n })\n .catch((err) => {\n console.warn(err);\n });\n };\n\n const loadTopParticipants = () => {\n return rwbApi\n .getLeaderboardTop(challengeId)\n .then((result) => {\n return result;\n })\n .catch((err) => {\n console.warn(err);\n });\n };\n\n const loadChallengeFeed = (offset) => {\n setFeed([]);\n return rwbApi\n .getChallengeFeed(challengeId, offset)\n .then((result) => {\n return result;\n })\n .catch((err) => {});\n };\n\n const handleNewPost = () => {\n loadChallengeFeed().then((result) => {\n setFeed([...result.data.results]);\n });\n };\n\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n loadMorePosts();\n }\n };\n\n const loadMorePosts = () => {\n // only try to retrieve more from the feed if it is not already retrieving\n if (!isLoadingMore) {\n const posts = feed;\n const lastPost = posts[posts.length - 1];\n if (!retrievedLastPost && challengeId && lastPost?.id) {\n setIsLoadingMore(true);\n rwbApi.getChallengeFeed(challengeId, lastPost.id).then((result) => {\n if (result.data.results.length > 0) {\n setFeed([...feed, ...result.data.results]);\n setIsLoadingMore(false);\n } else {\n setIsLoadingMore(false);\n setRetrievedLastPost(true);\n }\n });\n } else {\n setIsLoadingMore(false);\n }\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n }, [loadMorePosts]);\n\n const eventCategoryDisplay = GROUP_EVENT_OPTIONS[checkin_event_category]?.display || 'Any'; // 'Any' corresponds to all-activities that's hardcoded throughout.\n\n return (\n <>\n {isLoading ? (\n \n ) : (\n <>\n \n
    \n\n \n \n
    \n\n {joinedChallenge && goal && goal > 0 ? (\n
    \n \n
    \n ) : null}\n
    \n

    {name}

    \n
    {getChallengeStatusText(startTime, endTime)}
    \n
    \n

    {description}

    \n
    \n {joinedChallenge ? ( metric === 'check-ins' ? \n <>\n
    \n {/* TODO: Link to Virtual Events matching checkin challenge type */}\n \n \n \n
    Check in to {eventCategoryDisplay} events to complete this challenge
    \n
    \n {!moment().utc().isAfter(moment.utc(endTime)) && \n Leave\n
    }\n \n : <>\n {!moment().utc().isAfter(moment.utc(endTime)) && \n Leave challenge\n }\n {/* \n {eventCount} {eventCount !== 1 ? 'Events' : 'Event'}\n */}\n \n ) : (\n <>\n \n Join Challenge\n \n {/*
    \n {eventCount} {eventCount !== 1 ? 'Events' : 'Event'}\n
    */}\n \n )}\n \n {totalUsers.length>0 &&
    \n \n \n \n
    }\n \n {parseInt(goal) === 0 && place && place > 5 ? (\n
    \n \n
    \n ) : null}\n {leaderboard.length > 0 && (\n
    \n

    Leaderboard

    \n {leaderboard.slice(0, 5).map((ranking, i) => {\n return (\n \n );\n })}\n
    \n \n

    See More

    \n \n
    \n
    \n )}\n\n {feed.length > 0 && (\n \n )}\n {!user.anonymous_profile &&\n joinedChallenge &&\n !changingChallengeStatus && (\n \n )}\n \n )}\n \n );\n};\n\nexport default ChallengeDetail;\n","import React, {useEffect, useState} from 'react';\nimport Header from '../Header';\nimport RankingRow from './RankingRow';\nimport {useLocation, useHistory} from 'react-router-dom';\nimport styles from './ChallengeLeaderboard.module.css';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\n\nconst ChallengeLeaderboard = () => {\n const [leaderboard, setLeaderboard] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const location = useLocation();\n const history = useHistory();\n\n useEffect(() => {\n if (location.state.rank > 25) {\n setIsLoading(true);\n return rwbApi\n .getLeaderboardCentered(location.state.challengeId)\n .then((res) => {\n setLeaderboard(res.data);\n setIsLoading(false);\n })\n .catch((err) => {\n console.warn(projectConfig.name, 'Error Loading Leaderboard Centered 25');\n setIsLoading(false);\n });\n } else {\n setLeaderboard(location.state.data);\n }\n }, []);\n\n return (\n <>\n {isLoading && (\n \n )}\n \n
    \n {leaderboard.map((ranker, index) => {\n return (\n \n );\n })}\n
    \n \n );\n};\n\nexport default ChallengeLeaderboard;\n","import React, {useState, useEffect} from 'react';\nimport {useHistory, useLocation, useParams} from 'react-router-dom';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport {hasReachedBottom} from '../../BrowserUtil';\nimport Attendee from '../events/Attendee';\nimport Header from '../Header';\nimport Loading from '../Loading';\n\nconst ChallengeParticipants = () => {\n const location = useLocation();\n const history = useHistory();\n const {challengeId} = useParams();\n const [participants, setParticipants] = useState(\n location?.state?.participants || [],\n );\n const [challengeName, setChallengeName] = useState(\n location?.state?.challengeName || '',\n );\n const [page, setPage] = useState(2);\n const [loading, setLoading] = useState(false);\n const [loadingMore, setLoadingMore] = useState(false);\n const [retrievedLastParticipant, setRetrievedLastParticipant] = useState(\n location?.state?.totalUsersCount === location?.state?.participants.length,\n );\n\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement)) {\n loadMoreUsers();\n }\n };\n\n const loadMoreUsers = () => {\n if (!loadingMore && !retrievedLastParticipant) {\n setLoadingMore(true);\n rwbApi.getChallengeParticipants(challengeId, page).then((result) => {\n setParticipants([...participants, ...result.participants]);\n setLoadingMore(false);\n setLoading(false);\n setRetrievedLastParticipant(\n participants.length + result.participants.length ===\n result.count,\n );\n setPage(page + 1);\n });\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n }, [loadMoreUsers]);\n\n const handleUserSelect = ({id}) => history.push(`/profile/${id}`);\n\n return (\n
    \n \n {loading ? (\n \n ) : (\n <>\n
    \n {participants.map((participant) => {\n return (\n \n );\n })}\n
    \n {loadingMore && (\n \n )}\n \n )}\n
    \n );\n};\n\nexport default ChallengeParticipants;\n","import React, {useState, useEffect} from 'react';\nimport {rwbApi} from '../../../../shared/apis/api';\nimport Loading from '../Loading';\nimport UnjoinedChallengeCard from './UnjoinedChallengeCard';\n\nimport styles from './Challenges.module.css';\nimport JoinedChallengeCard from './JoinedChallengeCard';\nimport {Link, Route, Switch, useRouteMatch} from 'react-router-dom';\nimport ChallengeDetail from './ChallengeDetail';\nimport Events from '../events/Events';\nimport Header from '../Header';\nimport {NO_PAST_CHALLENGES} from '../../../../shared/constants/OtherMessages';\nimport {\n challengeParams,\n separateUnjoinedChallenges,\n} from '../../../../shared/utils/ChallengeHelpers';\nimport ChallengeLeaderboard from './ChallengeLeaderboard';\nimport ChallengeParticipants from './ChallengeParticipants';\nimport PostView from '../feed/PostView';\n\nexport default function Challenges() {\n const [page, setPage] = useState(0);\n const [isLoading, setIsLoading] = useState(true);\n const [yourActiveChallenges, setYourActiveChallenges] = useState(null);\n const [availableChallenges, setAvailableChallenges] = useState(null);\n const [upcomingChallenges, setUpcomingChallenges] = useState(null);\n const [pastChallenges, setPastChallenges] = useState(null);\n const [loadingMore, setLoadingMore] = useState(false);\n const [totalPages, setTotalPages] = useState(1);\n const [currentSelectedTab, setCurrentSelectedTab] = useState(\n 'activeChallenges',\n );\n\n const getActiveChallenges = () => {\n rwbApi\n .getChallenges(challengeParams('active'))\n .then((result) => {\n separateData(result);\n })\n .catch((err) => {})\n .finally(() => {\n setIsLoading(false);\n setLoadingMore(false);\n });\n };\n\n const getPastChallenges = () => {\n rwbApi.getChallenges(challengeParams('past')).then((result) => {\n setPastChallenges(result.data.joined);\n });\n };\n\n const separateData = (challenges) => {\n const unjoinedChallenges = separateUnjoinedChallenges(\n challenges.data.unjoined,\n );\n setYourActiveChallenges(challenges.data.joined);\n setAvailableChallenges(unjoinedChallenges.availableChallenges);\n setUpcomingChallenges(unjoinedChallenges.upcomingChallenges);\n // setTotalPages(challenges.total_number_pages);\n };\n\n useEffect(() => {\n if (\n currentSelectedTab === 'activeChallenges' &&\n availableChallenges === null &&\n yourActiveChallenges === null\n )\n getActiveChallenges();\n else if (currentSelectedTab === 'pastChallenges' && pastChallenges === null)\n getPastChallenges();\n }, [currentSelectedTab]);\n\n /* previously the challenges endpoint paginated, it no longer does. This may change again.\n const trackScrolling = (event) => {\n event.preventDefault();\n const wrappedElement = document.getElementById('root');\n if (hasReachedBottom(wrappedElement) && !loadingMore) {\n setLoadingMore(true);\n const challengesSum =\n yourActiveChallenges.length +\n activeChallenges.length +\n availableChallenges.length;\n if (challengesSum % 10 === 0 && page < totalPages - 1) setPage(page + 1);\n }\n };\n\n useEffect(() => {\n window.addEventListener('scroll', trackScrolling);\n return () => {\n window.removeEventListener('scroll', trackScrolling);\n };\n });*/\n\n const match = useRouteMatch();\n\n return (\n
    \n {isLoading ? (\n \n ) : (\n <>\n \n \n \n \n }\n />\n \n \n \n \n \n \n \n \n \n \n
    \n
    \n setCurrentSelectedTab('activeChallenges')}\n className={`${styles.challengeTab} ${\n currentSelectedTab === 'activeChallenges' &&\n styles.challengeTabActive\n }`}>\n \n ACTIVE CHALLENGES\n \n
    \n setCurrentSelectedTab('pastChallenges')}\n className={`${styles.challengeTab} ${\n currentSelectedTab === 'pastChallenges' &&\n styles.challengeTabActive\n }`}>\n \n PAST CHALLENGES\n \n
    \n \n {currentSelectedTab === 'activeChallenges' ? (\n <>\n
    \n

    \n Your Active Challenges\n

    \n {yourActiveChallenges &&\n yourActiveChallenges.map((item, i) => (\n \n \n \n ))}\n
    \n
    \n

    \n Available Challenges\n

    \n {availableChallenges &&\n availableChallenges.map((item, i) => (\n \n \n \n ))}\n
    \n
    \n

    \n Upcoming Challenges\n

    \n {upcomingChallenges &&\n upcomingChallenges.map((item, i) => (\n \n \n \n ))}\n
    \n \n ) : (\n <>\n {pastChallenges === null ? (\n \n ) : pastChallenges.length > 0 ? (\n pastChallenges.map((item, i) => (\n \n \n \n ))\n ) : (\n

    \n {NO_PAST_CHALLENGES}\n

    \n )}\n \n )}\n \n \n \n )}\n \n );\n}\n","import { STRIPE_KEY } from '../constants/APIKeys-obfuscated';\n\nconst urlBase = \"https://api.stripe.com/v1/\";\n\nexport const getPaymentIntent = (id, secret) => {\n return fetch(`${urlBase}payment_intents/${id}?${secret}`, {\n method: 'GET',\n headers: {\n Accept: 'application/json',\n 'Authorization': `Bearer ${STRIPE_KEY}`,\n },\n }).then((response) => {\n if (response.ok)\n return response.json();\n else {\n return response.json().then((error) => {\n throw error;\n });\n }\n });\n};\n\nexport const confirmPaymentIntent = (formBody, id) => {\n return fetch(`${urlBase}payment_intents/${id}/confirm`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Authorization': `Bearer ${STRIPE_KEY}`\n },\n body: formBody\n }).then((response) => {\n if (response.ok)\n return response.json();\n else {\n return response.json().then((error) => {\n throw error;\n });\n }\n });\n};\n\nexport const createPaymentMethod = (formBody, data) => {\n return fetch(`${urlBase}payment_methods?type=card&` + formBody, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Authorization': `Bearer ${STRIPE_KEY}`\n },\n body: data\n }).then((response) => {\n if (response.ok)\n return response.json();\n else {\n return response.json().then((error) => {\n throw error;\n });\n }\n });\n};\n","'use strict';\n\nexport const SHIRTSIZE_DATA = [\n {\n type: 'header',\n cells: [\n \"Men Sizes\"\n ]\n },\n {\n type: 'legend',\n cells: [\n \"Nike Size\", \"Chest (in.)\", \"Waist (in.)\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"Small\", \"35–37.5\", \"29–32\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"Medium\", \"37.5–41\", \"32–35\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"Large\", \"41–44\", \"35–38\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"X–Large\", \"44–48.5\", \"38–43\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"XX–Large\", \"48.5–53.5\", \"43–47.5\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"3XL\", \"53.5–58\", \"47.5–52.5\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"4XL\", \"58–63\", \"52.5–57\"\n ]\n },\n {\n type: 'header',\n cells: [\n \"Women Sizes\"\n ]\n },\n {\n type: 'legend',\n cells: [\n \"Nike Size\", \"Size\", \"Bust (in.)\", \"Waist (in.)\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"Small\", \"4–6\", \"32.5–35.5\", \"26–29\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"Medium\", \"8–10\", \"35.5–38\", \"29–31.5\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"Large\", \"12–14\", \"38–41\", \"31.5–34.5\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"X–Large\", \"16–18\", \"41–44.5\", \"34.5–38.5\"\n ]\n },\n {\n type: 'row',\n cells: [\n \"XX–Large\", \"20–22\", \"44.5–48.5\", \"38.5–42.5\"\n ]\n },\n];\n","import React, {PureComponent} from 'react';\nimport styles from './ShirtSizesModal.module.css';\nimport {Modal, Backdrop, Fade} from '@material-ui/core';\nimport {withStyles} from '@material-ui/core/styles';\n\nimport {SHIRTSIZE_DATA} from '../../../../shared/constants/ShirtSizeData';\nimport CustomButton from '../CustomButton';\n\nconst _styles = {\n modal: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n};\n\nconst ShirtSizesModal = ({classes, isOpen, modalHandler}) => (\n \n \n
    \n

    {'Size Chart'}

    \n
    \n {SHIRTSIZE_DATA.map((item, index, separators) => {\n const {type, cells} = item;\n if (type === 'header') {\n return (\n
    \n

    {item.cells[0]}

    \n
    \n );\n } else if (type === 'legend') {\n return (\n
    \n {cells.map((cell, i) => (\n

    {cell}

    \n ))}\n
    \n );\n } else {\n return (\n
    \n {cells.map((cell, i) => (\n

    {cell}

    \n ))}\n
    \n );\n }\n })}\n
    \n \n
    \n
    \n \n);\n\nexport default withStyles(_styles)(ShirtSizesModal);\n","import React from 'react'\nimport styles from './PaymentView.module.css'\nimport TextInput from '../TextInput';\nimport CustomButton from '../CustomButton'\nimport { paymentConfig } from '../../../../shared/project-info/paymentConfig';\nimport { userProfile } from '../../../../shared/models/UserProfile';\nimport { withRouter } from 'react-router-dom';\nimport { PERSONAL_INFO_PROPS } from '../../../../shared/constants/RadioProps';\nimport { Modal, Box } from '@material-ui/core';\n\nimport moment from 'moment';\nimport { logPayForShirt } from '../../../../shared/models/Analytics';\nimport { isNullOrEmpty, validateEmail, isMilitaryAddress } from '../../../../shared/utils/Helpers';\nimport { COUNTRY_OPTIONS } from '../../../../shared/constants/Countries';\nimport {\n confirmPaymentIntent,\n createPaymentMethod,\n} from '../../../../shared/apis/stripe-api';\nimport {\n GENERIC_ERROR,\n} from '../../../../shared/constants/ErrorMessages';\nimport { rwbApi } from '../../../../shared/apis/api';\nimport RadioForm from '../RadioForm';\nimport AddressesList from './AddressesList';\nimport { RADIO_PROPS } from '../../../../shared/constants/RadioProps';\nimport { melissaLookup, melissaVerify } from '../../../../shared/utils/MelissaHelper';\nimport debounce from 'lodash.debounce';\nimport ShirtSizesModal from '../registration/ShirtSizesModal';\n\nconst { sizes_radio_props } = RADIO_PROPS;\nconst { address_type_radio_props } = PERSONAL_INFO_PROPS;\nconst DEBOUNCE_MS = 500;\nexport class PaymentView extends React.Component {\n constructor(props) {\n super(props);\n const complete_user = userProfile.getUserProfile();\n const current_user = userProfile.getUserProfile();\n\n this.state = {\n shirt_size: null,\n shirt_size_error_text: '',\n alternate_shirt_address: false,\n manual_shirt_address: false,\n shirt_address_general_error_text: '',\n shirt_address_city: '',\n shirt_address_city_error_text: '',\n shirt_address_state: '',\n shirt_address_state_error_text: '',\n shirt_address_street: '',\n shirt_address_street_error_text: '',\n shirt_address_apartment: '',\n shirt_address_zip: '',\n shirt_address_zip_error_text: '',\n shipping_country: \"\",\n shirt_address_country_error_text: '',\n server_error_text: '',\n current_user,\n fullAddress: '',\n showCountryModal: false,\n address_type: current_user?.location?.address_type,\n user_email: complete_user.email,\n user_name: `${complete_user.first_name} ${complete_user.last_name}`,\n\n payment_state: '', // state can be \"authorizing\" (payment started), \"complete\" (payment went through),\n // \"invalid\" (wrong input), and \"declined\" (something is wrong with the card). The \"complete\" state indicates the card payment went through\n card_number: '',\n card_number_error_text: '',\n card_expiration: '',\n card_expiration_error_text: '',\n card_cvv: '',\n card_cvv_error_text: '',\n card_zip:\n current_user?.location?.country &&\n current_user?.location?.country.toLowerCase() === 'united states'\n ? current_user?.location?.zip?.slice(0, 5)\n : current_user?.location?.zip,\n card_zip_error_text: '',\n validationURL: '',\n showMelissaModal: false,\n showApartmentModal: false,\n apartmentList: [],\n id: this.props.location.state.id,\n title: this.props.location.state.title,\n price: this.props.location.state.price,\n icon: this.props.location.state.icon,\n expiration_date: '',\n amount_paid: 0,\n city: current_user?.location?.city,\n zip: current_user?.location?.zip,\n shippingAddressState: current_user?.location?.address_state,\n showShirtSizeModal: false\n };\n\n this.user_id = ''; // RWB user id to be used for logging\n this.payment_intent_id = '';\n this.pagesLoaded = 0; // the url for stripe validation has multiple on changes before loading the page we want\n this.receiptEmail = ''; // the email that will be receiving the receipt\n }\n getMembershipExpireDate = () => {\n return moment().add(184, 'days').format('MM/DD/YYYY');\n };\n valueChangeHandler = (event, field) => {\n this.setState({ [field]: event.target.value });\n };\n\n displayCardNumber(text) {\n let formattedText = text.split(' ').join('');\n if (formattedText.length > 16) {\n formattedText = formattedText.substr(0, 16);\n }\n if (formattedText.length > 0) {\n formattedText = formattedText.match(new RegExp('.{1,4}', 'g')).join(' ');\n }\n return formattedText;\n }\n\n setCardNumber = (text) => {\n let value = text.target.value\n if (value.length <= 19)\n this.setState({ card_number: value.replace(/([^0-9 ])+/i, \"\") });\n };\n insertCharBefore = (text, split, char) => {\n return text.slice(0, split) + char + text.slice(split, text.length);\n };\n setExpirationDate = (text) => {\n if (\n text.length >= 3 &&\n text.charAt(2) !== '/' &&\n text.length >= this.state.card_expiration.length\n ) {\n text = this.insertCharBefore(text, 2, '/');\n }\n if (text.length > 5) {\n text = text.substring(0, 5);\n }\n return text;\n };\n handleCardCvv = (event) => {\n let cvv = event.target.value;\n if (cvv.length <= 4)\n this.setState({ card_cvv: cvv })\n\n }\n\n isExpiredCard = (expirationDate) => {\n const month = parseInt(expirationDate.split('/')[0]);\n const year = parseInt(expirationDate.split('/')[1]);\n const curDate = new Date();\n const curMonth = curDate.getMonth() + 1;\n const curYear = parseInt(curDate.getFullYear().toString().slice(-2));\n if (year < curYear) return true;\n else if (year === curYear) return month < curMonth;\n else return false;\n };\n clearWarnings() {\n this.setState({\n shirt_size_error_text: null,\n shirt_address_city_error_text: null,\n shirt_address_general_error_text: null,\n shirt_address_state_error_text: null,\n shirt_address_zip_error_text: null,\n shirt_address_street_error_text: null,\n email_error_text: null,\n card_number_error_text: null,\n card_expiration_error_text: null,\n card_cvv_error_text: null,\n card_zip_error_text: null,\n });\n }\n\n validateInput = () => {\n let {\n shirt_size,\n alternate_shirt_address,\n manual_shirt_address,\n shirt_address_city,\n shirt_address_street,\n shirt_address_state,\n shirt_address_zip,\n user_email,\n user_name,\n card_number,\n card_expiration,\n card_cvv,\n card_zip,\n } = this.state;\n card_number = card_number.replaceAll(/\\s/g, '')\n\n let hasError = false;\n this.clearWarnings()\n\n if (paymentConfig.hasShipment) {\n if (shirt_size === null) {\n this.setState({ shirt_size_error_text: 'PLEASE SELECT A SHIRT SIZE' });\n hasError = true;\n }\n if (alternate_shirt_address && !manual_shirt_address) {\n if (\n !shirt_address_city ||\n !shirt_address_state ||\n !shirt_address_street ||\n !shirt_address_zip\n ) {\n this.setState({\n shirt_address_general_error_text: 'YOU MUST FILL OUT ALL FIELDS',\n });\n hasError = true;\n }\n } else if (alternate_shirt_address && manual_shirt_address) {\n if (!shirt_address_city) {\n this.setState({\n shirt_address_city_error_text: 'PLEASE ENTER YOUR CITY',\n shirt_address_general_error_text: 'YOU MUST FILL OUT ALL FIELDS',\n });\n hasError = true;\n }\n if (!shirt_address_street) {\n this.setState({\n shirt_address_street_error_text: 'PLEASE ENTER YOUR STREET ADDRESS',\n shirt_address_general_error_text: 'YOU MUST FILL OUT ALL FIELDS',\n });\n hasError = true;\n }\n if (!shirt_address_state) {\n this.setState({\n shirt_address_state_error_text: 'PLEASE ENTER YOUR STATE',\n shirt_address_general_error_text: 'YOU MUST FILL OUT ALL FIELDS',\n });\n hasError = true;\n }\n if (!shirt_address_city) {\n this.setState({\n shirt_address_zip_error_text: 'PLEASE ENTER YOUR ZIP CODE',\n shirt_address_general_error_text: 'YOU MUST FILL OUT ALL FIELDS',\n });\n hasError = true;\n }\n }\n }\n if (isNullOrEmpty(user_name)) {\n this.setState({ card_name_error_text: 'REQUIRED' });\n hasError = true;\n }\n if (isNullOrEmpty(user_email)) {\n this.setState({ email_error_text: 'REQUIRED' });\n hasError = true;\n\n } else if (!validateEmail(user_email)) {\n this.setState({ email_error_text: 'INVALID EMAIL ADDRESS' });\n hasError = true;\n }\n\n if (isNullOrEmpty(card_number)) {\n\n this.setState({ card_number_error_text: 'REQUIRED' });\n hasError = true;\n } else if (card_number.length < 14 || card_number.length > 16) {\n this.setState({ card_number_error_text: 'INVALID CARD NUMBER' });\n hasError = true;\n }\n if (isNullOrEmpty(card_expiration)) {\n this.setState({ card_expiration_error_text: 'REQUIRED' });\n hasError = true;\n } else if (card_expiration.length !== 5) {\n this.setState({\n card_expiration_error_text: 'DATE FORMAT SHOULD BE MM/YY',\n });\n hasError = true;\n } else if (!moment(card_expiration, 'MM-YY').isValid()) {\n this.setState({ card_expiration_error_text: 'INVALID EXP DATE' });\n hasError = true;\n } else if (this.isExpiredCard(card_expiration)) {\n this.setState({ card_expiration_error_text: 'EXPIRED CREDIT CARD' });\n hasError = true;\n }\n if (isNullOrEmpty(card_cvv)) {\n this.setState({ card_cvv_error_text: 'REQUIRED' });\n hasError = true;\n } else if (card_cvv.length < 3 || card_cvv.length > 4) {\n this.setState({ card_cvv_error_text: 'INVALID CVV' });\n hasError = true;\n }\n if (isNullOrEmpty(card_zip)) {\n this.setState({ card_zip_error_text: 'REQUIRED' });\n hasError = true;\n }\n\n if (hasError) {\n return\n }\n this.uploadUserInfo();\n\n }\n\n\n uploadUserInfo = () => {\n this.setState({ payment_state: 'authorizing' });\n\n const {\n shirt_size,\n alternate_shirt_address,\n shirt_address_street,\n shirt_address_apartment,\n shirt_address_city,\n shirt_address_state,\n shirt_address_zip,\n shipping_country,\n } = this.state;\n\n let value = this.state.current_user;\n Object.assign(value, {\n shirt_size,\n alternate_shirt_address,\n shipping_country: shipping_country, //should always be United States since international shipping is not supported\n shipping_street: shirt_address_street,\n // shipping_street_2: shirt_address_apartment, // not available backend\n shipping_city: shirt_address_city,\n shipping_state: shirt_address_state,\n shipping_zip: shirt_address_zip,\n });\n this.createIntent();\n };\n\n getCountrySlug(countryDisplay) {\n if (countryDisplay.length === 2) return countryDisplay; // currently looks like even country display is the two character code\n for (let property in COUNTRY_OPTIONS) {\n if (COUNTRY_OPTIONS[property].display === countryDisplay)\n return COUNTRY_OPTIONS[property].value;\n }\n }\n\n\n updateErrorStateFromServer(error) {\n if (error.code === 'incorrect_number' || error?.code === 'invalid_number')\n this.setState({\n card_number_error_text: 'INVALID CARD NUMBER',\n payment_state: 'invalid',\n });\n if (error?.code === 'incorrect_cvc')\n this.setState({\n card_cvv_error_text: 'INVALID CVV',\n payment_state: 'invalid',\n });\n if (error?.code === 'invalid_cvc')\n this.setState({\n card_cvv_error_text: 'INVALID CVV',\n payment_state: 'declined',\n });\n if (\n error?.code === 'invalid_expiry_month' ||\n error?.code === 'invalid_expiry_year'\n )\n this.setState({\n card_expiration_error_text: 'INVALID EXP DATE',\n payment_state: 'invalid',\n });\n if (error?.code === 'incorrect_zip')\n this.setState({\n card_zip_error_text: 'INCORRECT ZIP',\n payment_state: 'invalid',\n });\n if (error?.code === 'card_declined')\n this.setState({\n card_number_error_text: 'CARD DECLINED',\n card_expiration_error_text: 'CARD DECLINED',\n card_cvv_error_text: 'CARD DECLINED',\n payment_state: 'declined',\n });\n if (error?.code === 'expired_card')\n this.setState({\n card_number_error_text: 'CARD EXPIRED',\n card_expiration_error_text: 'CARD EXPIRED',\n card_cvv_error_text: 'CARD EXPIRED',\n payment_state: 'declined',\n });\n if (error?.code === 'processing_error') {\n // errorAlert(error.meessage);\n this.setState({ payment_state: '' });\n }\n this.changeFromPaymentState();\n }\n\n // format billing_details for payment creation\n formatBillingDetails = () => {\n const {\n user_email,\n user_name,\n current_user,\n alternate_shirt_address,\n shirt_address_street,\n shirt_address_apartment,\n shirt_address_city,\n shirt_address_state,\n shirt_address_zip,\n card_zip,\n } = this.state;\n const address = {\n 'billing_details[address][city]':\n shirt_address_city || current_user.location.city,\n 'billing_details[address][country]': this.getCountrySlug(\n current_user?.location?.country,\n ),\n 'billing_details[address][line1]':\n shirt_address_street || current_user.location?.address,\n 'billing_details[address][line2]':\n shirt_address_apartment || current_user.location?.apartment || '',\n 'billing_details[address][postal_code]': card_zip,\n 'billing_details[address][state]':\n shirt_address_state || current_user.location?.address_state,\n };\n const userInfo = {\n 'billing_details[email]': user_email,\n 'billing_details[name]': user_name,\n 'billing_details[phone]': current_user.phone || null,\n };\n\n let addressBody = [];\n for (let property in address) {\n let encodedKey = encodeURIComponent(property);\n let encodedValue = encodeURIComponent(address[property]);\n addressBody.push(encodedKey + '=' + encodedValue);\n }\n let userBody = [];\n for (let property in userInfo) {\n let encodedKey = encodeURIComponent(property);\n let encodedValue = encodeURIComponent(userInfo[property]);\n userBody.push(encodedKey + '=' + encodedValue);\n }\n let fullBody = addressBody;\n fullBody = fullBody.concat(userBody);\n fullBody = fullBody.join('&');\n\n return fullBody;\n };\n\n createPaymentIntent = () => {\n let payload = {\n purchase_choice_id: this.state.id,\n product: paymentConfig.paymentProduct,\n description: this.state.title,\n receipt_email: this.state.user_email,\n };\n return rwbApi\n .createPaymentIntent(JSON.stringify(payload))\n .then((result) => {\n this.clientSecret = result.intent_information.client_secret;\n return result;\n })\n .catch((error) => {\n if (\n error?.error?.message ===\n 'Parameter receipt_email contains an invalid email address'\n ) {\n this.setState({\n email_error_text: 'INVALID EMAIL ADDRESS',\n payment_state: '',\n });\n } else {\n // errorAlert(GENERIC_ERROR);\n alert(GENERIC_ERROR)\n this.setState({\n payment_state: '',\n });\n }\n });\n };\n\n createPayment = () => {\n let payload = {\n purchase_choice: this.state.id,\n amount_paid: this.state.amount_paid,\n expiration_date: this.state.expiration_date,\n };\n return rwbApi\n .createPayment(JSON.stringify(payload))\n .then((result) => {\n rwbApi.getUser()\n .then((result) => {\n userProfile.saveToUserProfile(result);\n })\n return result;\n })\n .catch((error) => {\n this.updateErrorStateFromServer(error.error);\n });\n };\n\n updatePaymentIntent = (paymentRecord) => {\n const formBody = `payment_method=${paymentRecord.id}&client_secret=${this.clientSecret}`;\n return confirmPaymentIntent(formBody, this.payment_intent_id)\n .then((result) => {\n return result;\n })\n .catch((error) => {\n this.setState({\n payment_state: '',\n })\n this.updateErrorStateFromServer(error.error);\n });\n };\n\n makePaymentMethod = () => {\n const { card_number, card_expiration, card_cvv } = this.state;\n const month = card_expiration.split('/')[0];\n const year = card_expiration.split('/')[1];\n const cardDetails = {\n 'card[number]': card_number,\n 'card[exp_month]': month,\n 'card[exp_year]': year,\n 'card[cvc]': card_cvv,\n };\n let formBody = [];\n for (let property in cardDetails) {\n let encodedKey = encodeURIComponent(property);\n let encodedValue = encodeURIComponent(cardDetails[property]);\n formBody.push(encodedKey + '=' + encodedValue);\n }\n formBody = formBody.join('&');\n const billing_details = this.formatBillingDetails();\n return createPaymentMethod(formBody, billing_details)\n .then((result) => {\n return result;\n })\n .catch((error) => {\n this.updateErrorStateFromServer(error.error);\n });\n };\n makePaymentMethod = () => {\n const { card_number, card_expiration, card_cvv } = this.state;\n const month = card_expiration.split('/')[0];\n const year = card_expiration.split('/')[1];\n const cardDetails = {\n 'card[number]': card_number,\n 'card[exp_month]': month,\n 'card[exp_year]': year,\n 'card[cvc]': card_cvv,\n };\n let formBody = [];\n for (let property in cardDetails) {\n let encodedKey = encodeURIComponent(property);\n let encodedValue = encodeURIComponent(cardDetails[property]);\n formBody.push(encodedKey + '=' + encodedValue);\n }\n formBody = formBody.join('&');\n const billing_details = this.formatBillingDetails();\n return createPaymentMethod(formBody, billing_details)\n .then((result) => {\n return result;\n })\n .catch((error) => {\n this.updateErrorStateFromServer(error.error);\n });\n };\n createIntent = () => {\n const {\n shipping_country,\n shirt_address_city,\n shirt_address_state,\n shirt_address_street,\n } = this.state;\n if (\n paymentConfig.hasShipment && this.getCountrySlug(shipping_country) !== 'US' &&\n !isMilitaryAddress(\n shirt_address_street,\n shirt_address_city,\n shirt_address_state,\n )\n ) {\n // errorAlert(INTERNATIONAL_ADDRESS_ERROR);\n this.setState({ payment_state: 'invalid' });\n this.changeFromPaymentState();\n } else {\n // Have the user update the payment intent they already made instead of creating a new one\n if (this.payment_intent_id === '') {\n this.createPaymentIntent().then((initialPI) => {\n if (initialPI) {\n this.payment_intent_id = initialPI.intent_information.id;\n this.user_id = initialPI.intent_information.metadata.user_id;\n this.setState({ expiration_date: initialPI.intent_information.expires })\n this.setState({ amount_paid: initialPI.intent_information.amount })\n this.makePayment();\n }\n });\n } else this.makePayment();\n }\n };\n storeConfirmationData = (paymentIntent) => {\n logPayForShirt();\n this.receiptEmail = paymentIntent.receipt_email;\n };\n\n makePayment = () => {\n this.makePaymentMethod().then((paymentRecord) => {\n if (paymentRecord) {\n this.updatePaymentIntent(paymentRecord)\n .then((updatedPI) => {\n this.createPayment()\n if (!updatedPI.next_action) {\n this.setState({ payment_state: 'complete' });\n this.storeConfirmationData(updatedPI);\n this.changeFromPaymentState();\n }\n // card requires stripe 3D auth\n else {\n this.setState({\n validationURL: updatedPI.next_action.use_stripe_sdk.stripe_js,\n });\n }\n\n })\n .catch((error) => { });\n }\n }).catch((error) => { });;\n };\n\n changeFromPaymentState = () => {\n const paymentState = this.state.payment_state;\n if (paymentState === 'invalid' || paymentState === 'declined') {\n setTimeout(() => {\n this.setState({ payment_state: '' });\n }, 3000);\n } else if (paymentState === 'complete') {\n this.setState({ paymentState: 'complete' });\n\n let data = {\n receiptEmail: this.receiptEmail,\n price: this.state.price,\n icon: this.state.icon,\n title: this.state.title,\n }\n this.props.history.push({\n pathname: '/orderconfirmationview',\n state: data,\n });\n }\n };\n\n displayPaymentStatus() {\n const { payment_state } = this.state;\n if (!payment_state) return `PAY $${this.state.price}`;\n else if (payment_state === 'invalid') return 'INVALID';\n else if (payment_state === 'declined') return 'DECLINED';\n else if (payment_state === 'authorizing') return 'AUTHORIZING';\n else return 'COMPLETE';\n }\n selectButtonType() {\n const { payment_state } = this.state;\n if (\n !payment_state ||\n payment_state === 'invalid' ||\n payment_state === 'declined'\n )\n return 'primary';\n else if (payment_state === 'authorizing') return 'secondary';\n else return 'tertiary';\n }\n onShirtSizePickerDismiss = (selectedShirtSize) => {\n this.setState({ shirt_size: selectedShirtSize.target.value });\n }\n\n verifyAddress(complete_callback) {\n let { fullAddress } = this.state;\n let country = this.state.shipping_country;\n if (!country.length) {\n this.setState({ shirt_country_error: 'Please select a country' });\n } else {\n this.setState({ shirt_country_error: undefined });\n }\n if (this.state.address_type === 'domestic') {\n country = 'United States';\n this.setState({ shipping_country: country });\n }\n if (fullAddress && fullAddress.length && country.length) {\n if(fullAddress.includes('REPLACEME'))\n {\n fullAddress = fullAddress.replace(\n 'REPLACEME',\n this.state.shirt_address_apartment,\n )\n }\n else{\n fullAddress = null\n }\n melissaVerify(country, fullAddress, complete_callback).then((result) => {\n this.setState({\n error_string: result.error_string,\n shirt_address_street: result.address_street,\n shirt_address_city: result.city,\n shirt_address_zip: result.zip,\n shirt_address_state: result.address_state,\n address_not_verified: result.address_not_verified,\n });\n });\n }\n }\n\n\n\n fetchOptions = (value) => {\n let { country, address_type } = this.state;\n const api = address_type === 'domestic' ? 'freeform' : 'globalfreeform';\n return melissaLookup(api, value, country);\n };\n\n updateOptionsSingular = (value) => {\n const thisFetchOptions = this.fetchOptions(value)\n .then((data) => {\n const options = data.map((option) => ({ key: option }));\n this.setState({\n addressSuggestions: options,\n });\n })\n .catch((err) =>\n this.setState({ error_string: 'Could not get the address.' }),\n );\n };\n\n updateOptions = debounce(this.updateOptionsSingular, DEBOUNCE_MS);\n\n selectAddressHandler = (response) => {\n if (response) {\n const { city, state, zip, street, fullAddress } = response;\n // empty suite lists have empty strings as the first index\n if (response?.suiteList?.length > 1)\n this.setState({\n showApartmentModal: true,\n apartmentList: response.suiteList,\n });\n else this.setState({ apartment: '' });\n this.setState({\n shirt_address_city: city,\n shirt_address_apartment: fullAddress,\n shirt_address_state: state,\n shirt_address_zip: zip,\n shirt_address_street: street,\n fullAddress: `${street}, ${city} ${state} ${zip}`,\n addressSuggestions: [],\n });\n }\n };\n render() {\n const { id, title, price, icon } = this.props.location.state;\n const {\n shirt_address_city,\n shirt_address_state,\n shirt_address_street,\n shirt_address_apartment,\n shirt_address_zip,\n current_user,\n alternate_shirt_address,\n manual_shirt_address,\n user_email,\n user_name,\n card_number,\n card_expiration,\n card_cvv,\n card_zip,\n shirt_size,\n email_error_text,\n alternate_shirt_address_text,\n shirt_address_city_error_text,\n shirt_address_state_error_text,\n shirt_address_general_error_text,\n shirt_address_street_error_text,\n shirt_address_zip_error_text,\n shirt_size_error_text,\n card_number_error_text,\n card_cvv_error_text,\n card_expiration_error_text,\n card_zip_error_text,\n card_name_error_text,\n shipping_country,\n country_error,\n manual_address_entry,\n address_type,\n fullAddress,\n error_string,\n addressSuggestions,\n showShirtSizeModal\n\n } = this.state;\n\n let address_string = 'Street';\n let state_string = 'State';\n let zip_string = 'Zip';\n let city_string = 'City';\n let apartment_string = 'Apartment';\n\n if (\n this.state.address_type === 'international' &&\n shipping_country.toLowerCase() !== 'united states'\n ) {\n address_string = 'Street';\n state_string = 'Administrative Area';\n zip_string = 'Postal Code';\n city_string = 'Locality';\n }\n const shipping_address = alternate_shirt_address\n ? `${city_string}: ${shirt_address_city}
    ${state_string}: ${shirt_address_state}
    ${address_string}: ${shirt_address_street}${!isNullOrEmpty(shirt_address_apartment)\n ? `
    ${apartment_string}: ${shirt_address_apartment}`\n : ''\n }
    ${zip_string}: ${shirt_address_zip}
    Country: ${shipping_country}`\n : `${city_string}: ${current_user.location.city}
    ${state_string}: ${current_user.location.address_state\n }
    ${address_string}: ${current_user.location.address}${!isNullOrEmpty(current_user.location.apartment)\n ? `
    ${apartment_string}: ${current_user.location.apartment}`\n : ''\n }
    ${zip_string}: ${current_user.location.zip}
    Country: ${current_user.location.country || shipping_country\n }`;\n const addressLines = shipping_address.split('
    ').filter(line => line.trim() !== '');\n\n return (\n
    \n
    \n

    {paymentConfig.appSettingsMembershipLabel}

    \n\n
    \n
    \n
    \n

    {title}

    \n

    {`${paymentConfig.membershipValidityText\n } ${this.getMembershipExpireDate()}`}

    \n

    {`$${price}`}

    \n
    \n\n\n {paymentConfig.hasShipment &&
    \n
    \n \n
    \n
    \n
    \n

    Size

    \n \n
    \n {\n this.setState({\n showShirtSizeModal: true\n })\n }\n }>\n Size Chart\n \n
    \n

    {shirt_size_error_text}

    \n
    \n

    Shipping Address

    \n
    \n
    \n
    \n this.setState({\n alternate_shirt_address: !this.state.alternate_shirt_address,\n address_type: \"\"\n })} type={\"checkbox\"} />\n \n
    \n
    \n

    \n Please ship my shirt to an address that is different than my\n mailing address.\n

    \n
    \n
    \n {alternate_shirt_address &&\n {\n this.setState(\n {\n manual_address_entry: false,\n address_type: value,\n needsToSave: true,\n },\n () => {\n this.verifyAddress();\n },\n );\n }}\n />}\n
    \n {this.state.address_type === 'international' ?\n {\n e.stopPropagation();\n this.setState({ showCountryModal: true });\n }}>\n { }}\n />\n
    \n\n : null}\n {country_error !==\"\" &&

    {country_error}

    }\n {alternate_shirt_address && !manual_shirt_address ? (\n
    \n {\n const { value } = event.target;\n this.setState({ fullAddress: value });\n if (value && value.length > 3) {\n this.updateOptions(value);\n }\n }}\n />\n {shirt_address_general_error_text ? (\n

    \n {shirt_address_general_error_text}\n

    \n \n ) : null}\n {fullAddress.length > 0 && Array.isArray(addressSuggestions) && addressSuggestions.length > 0 && (\n \n )}\n

    \n Type the first few characters of you address in the box and\n then select from the list of matching addresses, or{' '}\n \n this.setState({ manual_shirt_address: true })\n }>\n manually enter your address.\n \n

    \n\n
    \n )\n : null}\n {alternate_shirt_address && manual_shirt_address ? (\n
    \n {\n this.setState({\n shirt_address_street: text.target.value,\n needsToSave: true,\n });\n }}\n />\n {\n this.setState({\n shirt_address_apartment: text.target.value,\n needsToSave: false,\n });\n }}\n />\n {\n this.setState({\n shirt_address_city: text.target.value,\n needsToSave: true,\n });\n }}\n />\n {\n this.setState({\n shirt_address_state: text.target.value,\n needsToSave: true,\n });\n }}\n />\n {\n this.setState({\n shirt_address_zip: text.target.value,\n needsToSave: true,\n });\n }}\n />\n {manual_shirt_address && (\n this.setState({ manual_shirt_address: false })}>\n Use Auto Complete\n \n )}\n {shirt_address_general_error_text && manual_shirt_address ? (\n

    {shirt_address_general_error_text}

    \n \n ) : null}\n
    \n ) : null}\n
    \n\n {/* country picker modal */}\n
    \n { }}\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n >\n \n
    \n
    \n
    \n
    Country
    \n
    \n {Object.values(COUNTRY_OPTIONS).map((item, index) => {\n return {\n this.setState({\n shipping_country: item.display,\n showCountryModal: false\n })\n }}>\n {item.display}\n \n })}\n\n\n
    \n
    \n
    \n\n\n {\n this.setState({\n showCountryModal: false\n })\n }}\n\n\n // onPress={()=>{this.setState({\n // showCountryModal:false\n // })}}\n label=\"Cancel\"\n buttonStyle=\"secondary\"\n />\n
    \n
    \n
    \n\n
    \n \n
    \n {/* size chart */}\n
    \n {showShirtSizeModal && this.setState({ showShirtSizeModal: false })}\n />\n }\n\n
    \n { addressLines.map((line, index) => (\n

    {line}

    \n ))}\n
    }\n\n \n
    \n this.valueChangeHandler(event, 'user_email')}\n autoFillLabel=\"given-name\"\n />\n this.valueChangeHandler(event, 'user_name')}\n autoFillLabel=\"given-name\"\n />\n this.setCardNumber(event)}\n autoFillLabel=\"given-name\"\n\n />\n
    \n this.valueChangeHandler(event, 'card_expiration')}\n autoFillLabel=\"given-name\"\n />\n this.handleCardCvv(event)}\n autoFillLabel=\"given-name\"\n />\n
    \n this.valueChangeHandler(event, 'card_zip')}\n autoFillLabel=\"given-name\"\n />\n
    \n\n
    \n { this.validateInput() }}\n label={this.displayPaymentStatus()}\n buttonStyle={this.selectButtonType()}\n disabled={this.state.payment_state !== ''}\n />\n \n
    \n
    \n \n )\n }\n}\n\nexport default withRouter(PaymentView)","import React, { Component } from 'react'\nimport { withRouter } from 'react-router-dom';\nimport styles from './OrderConfirmationView.module.css';\nimport CustomButton from '../CustomButton';\nimport { projectConfig } from '../../../../shared/project-info/projectConfig';\nimport { paymentConfig } from '../../../../shared/project-info/paymentConfig';\nimport moment from 'moment'\nconst getMembershipExpireDate = () => {\n return moment().add(184, 'days').format('MM/DD/YYYY');\n};\nexport class OrderConfirmationView extends Component {\n constructor(props) {\n super(props);\n }\n navigateToFeed =()=>{\n this.props.history.push('/feed');\n }\n render() {\n const { title, price, receiptEmail } = this.props.location?.state;\n return (\n
    \n
    \n

    Supporting Donation

    \n \n
    \n
    \n
    \n

    {title}

    \n

    {`${paymentConfig.membershipValidityText\n } ${getMembershipExpireDate()}`}

    \n

    {`$${price}`}

    \n
    \n
    Your order is complete!
    \n

    \n A receipt has been sent to {receiptEmail} with the confirmation number. if you have any issue please contact us at {projectConfig.supportEmail}\n

    \n
    \n
    \n \n
    \n {this.navigateToFeed()}}\n label=\"Done\"\n buttonStyle=\"primary\"\n // to={'/feed'}\n />\n
    \n
    \n
    \n )\n }\n}\n\nexport default withRouter(OrderConfirmationView)","import React from 'react';\nimport styles from './WorkoutCardDate.module.css';\nimport PostOptionIcon from '../svgs/PostOptionIcon';\nimport ReactDOM from 'react-dom';\n\nclass WorkoutCard extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n openDialog: false,\n\n };\n }\n\n render() {\n const {\n miles, steps, hours, minutes, seconds, onDelete, onShare, optionsOverlayVisible, toggleOverlay, workoutDate\n } = this.props;\n\n return (\n
    \n
    \n

    {workoutDate}

    \n
    \n toggleOverlay()}>\n \n
    \n {optionsOverlayVisible && (\n
    \n \n \n
    \n )}\n
    \n
    \n
    \n\n
    \n

    \n {parseFloat(miles)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}\n

    \n MILES\n
    \n
    \n

    \n {parseInt(steps)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')}\n

    \n STEPS\n
    \n
    \n

    \n {`${hours}:${minutes}:${seconds}`}\n

    \n DURATION\n
    \n
    \n\n \n );\n }\n}\n\nexport default WorkoutCard;\n","import React, { useState, useEffect } from 'react'\nimport {\n Button,\n Dialog, DialogActions, DialogContent, DialogTitle,Modal,\n} from '@material-ui/core';\nimport styles from './WorkoutLog.module.css'\nimport { useHistory, } from 'react-router-dom';\n\nimport { rwbApi } from '../../../../shared/apis/api';\n\nimport { PROFILE_TAB_LABELS } from '../../../../shared/constants/Labels';\nimport WorkoutCard from './WorkoutCardDate';\n\nimport { MdAdd as AddIcon } from 'react-icons/md';\nimport { hoursMinutesSecondsFromMinutes } from '../../../../shared/utils/ChallengeHelpers';\nimport Header from '../Header';\nimport CreatePost from '../feed/CreatePost';\n\nexport default function WorkoutLog() {\n\n const [workoutData, setWorkoutData] = useState([])\n const [optionsOverlayVisible,setOptionsOverlayVisible ] = useState(false)\n const [selectedElementIndex, setSelectedElementIndex] = useState(null);\n const [openDeleteDialog,setShowDeleteDialog] = useState(false)\n const [showWorkoutModal,setShareWorkoutModal]= useState(false)\n\n const history = useHistory();\n useEffect(() => {\n fetchUserWorkout()\n }, [])\n\n const fetchUserWorkout = () => {\n rwbApi\n .getUserWorkouts()\n .then((workouts) => {\n setWorkoutData(workouts.data)\n })\n .catch((err) => {\n // errorAlert(CHALLENGE_ERRORS.LOADING_WORKOUTS);\n })\n \n }\n\n const toggleOverlay = (index) => {\n setSelectedElementIndex(index);\n setOptionsOverlayVisible(!optionsOverlayVisible);\n };\n const deleteWorkout = () => {\n rwbApi\n .deleteWorkout(workoutData[selectedElementIndex].id)\n .then(() => {\n setOptionsOverlayVisible(!optionsOverlayVisible);\n setShowDeleteDialog(false)\n fetchUserWorkout();\n })\n .catch((err) => {\n alert(err)\n });\n };\n const handlePostShareWorkout = () =>{\n setOptionsOverlayVisible(!optionsOverlayVisible);\n setShareWorkoutModal(false)\n }\n return (\n <>\n
    \n
    history.goBack()} />\n \n
    \n \n
    \n {workoutData.length > 0 ? workoutData.map((item, index) => {\n return {setShowDeleteDialog(true) }}\n onShare={() => {setShareWorkoutModal(true) }}\n workoutDate={item.entry_date}\n workoutData={workoutData}\n optionsOverlayVisible={optionsOverlayVisible && selectedElementIndex === index}\n toggleOverlay={() => toggleOverlay(index)}\n />\n }) : null}\n\n
    \n {\n history.push(`/recordworkout`)\n }}>\n \n
    \n\n {setShowDeleteDialog(false)}}>\n Confirmation\n \n Are you sure you want to delete workout?\n \n \n \n \n \n \n\n \n
    \n
    \n {showWorkoutModal && \n \n {}}\n closeModalHandler={()=>{\n handlePostShareWorkout()\n }\n }\n />\n }\n
    \n \n \n \n )\n}\n","import React, { Component } from 'react'\nimport styles from \"./Analytics.module.css\"\nimport ChevronRightIcon from '../svgs/ChevronRightIcon'\nimport { rwbApi } from '../../../../shared/apis/api';\nimport { withRouter } from 'react-router-dom';\nimport Header from '../Header';\nclass Analytics extends Component {\n constructor(props) {\n super(props)\n this.state = {\n analytics: [],\n active_users_last_30_days: 0,\n challenges: [],\n events: [],\n total_registrations: 0,\n workspace_id: 0,\n workspace_name: '',\n \n\n }\n }\n componentDidMount() {\n this.fetchAnalytics();\n }\n\n fetchAnalytics = () => {\n this.setState({ refreshing: true, analytics: [] });\n rwbApi.getUsageAnalytics()\n .then((analytics) => {\n analytics = analytics['workspaces'];\n this.setState({\n fetched_analytics: analytics\n })\n })\n .catch((error) => {\n console.error(error);\n this.setState({ refreshing: false });\n });\n };\n navigateWorkspaceAnalytics =(analyticsItem) =>{\n this.props.history.push({\n pathname: `/workspaceanalytics`,\n state: {workSpace: analyticsItem},\n });\n }\n\n renderSingleEntry(fetchedAnalyticsItem) {\n const { active_users_last_30_days, challenges, events, total_registrations, workspace_name } = fetchedAnalyticsItem\n const totalChallengesParticipants = challenges.reduce((sum, current) => sum + current.total_participants, 0);\n const totalEventsParticipants = events.reduce((sum, current) => sum + current.total_participants, 0);\n\n return (\n <>\n
    {this.navigateWorkspaceAnalytics(fetchedAnalyticsItem)}} className={styles.analyticsBlock}>\n

    \n {workspace_name}\n \n

    \n
    \n
    \n

    {total_registrations}

    \n

    Total Users

    \n
    \n
    \n

    {active_users_last_30_days}

    \n

    Day Active Users

    \n \n
    \n
    \n
    \n \n )\n }\n\n render() {\n\n const fetched_analytics = this.state.fetched_analytics;\n const {history} = this.props\n\n return (\n
    \n
    {history.goBack() }} />\n\n
    \n \n { fetched_analytics && fetched_analytics.map((item, index) => (\n
    \n { this.renderSingleEntry(item) }\n
    \n )) }\n
    \n
    \n )\n }\n}\n\nexport default withRouter(Analytics)","import React, { Component } from 'react'\nimport { withRouter } from 'react-router-dom';\nimport styles from './Analytics.module.css';\nimport Header from '../Header';\nimport ChevronRightIcon from '../svgs/ChevronRightIcon';\n\nexport class WorkSpaceAnalytics extends Component {\n constructor(props) {\n super(props)\n }\n\n statbox = (label, value) => {\n return (\n
    \n

    {value}

    \n

    {label}

    \n
    \n )\n }\n\n formatNumber(num) {\n // Check if the number is zero\n if (num === 0) {\n return \"…\";\n }\n \n if (num < 1000) {\n return num.toString();\n } else if (num >= 1000 && num < 1000000) {\n return num % 1000 === 0\n ? `${(num / 1000).toFixed(0)}K`\n : `${(num / 1000).toFixed(1)}K`;\n } else {\n return num % 1000000 === 0\n ? `${(num / 1000000).toFixed(0)}M`\n : `${(num / 1000000).toFixed(1)}M`;\n }\n }\n\n navigateChallengeWorkSpace =(title) =>{\n this.props.history.push({\n pathname: '/challengeworkspaceanalytics',\n state: {workspaceData: this.props.location.state.workSpace, titleName:title},\n });\n }\n render() {\n const { workSpace } = this.props.location.state\n const totalChallengesParticipants = workSpace.challenges.reduce((sum, current) => sum + current.total_participants, 0);\n const totalEventsParticipants = workSpace.events.reduce((sum, current) => sum + current.total_participants, 0);\n const { history} = this.props\n\n return (\n <>\n
    {history.goBack() }} />\n
    \n
    this.navigateChallengeWorkSpace(\"Users\")}>\n

    \n Users\n \n

    \n
    \n {this.statbox(\"Total Users\", this.formatNumber(workSpace.total_registrations))}\n {this.statbox(\"30 day Active Users\", this.formatNumber(workSpace.active_users_last_30_days))}\n {this.statbox(\"Steps Logged\", this.formatNumber(workSpace.total_steps))}\n {this.statbox(\"Miles Tracked\", this.formatNumber(workSpace.total_miles))}\n
    \n
    \n\n
    this.navigateChallengeWorkSpace(\"Challenges\")}>\n

    \n Challenges\n \n

    \n
    \n {this.statbox(\"Challenges Joined\", this.formatNumber(totalChallengesParticipants))}\n {this.statbox(\"Badges Earned\", this.formatNumber(workSpace.total_badges))}\n
    \n
    \n\n
    this.navigateChallengeWorkSpace(\"Events\")}>\n

    \n Events\n \n

    \n
    \n {this.statbox(\"Total Engagement\", this.formatNumber(totalEventsParticipants))}\n {this.statbox(\"Check-Ins\", this.formatNumber(workSpace.total_checkins))}\n
    \n
    \n
    \n \n )\n }\n}\n\nexport default withRouter(WorkSpaceAnalytics)","import React, { Component } from 'react'\nimport Header from '../Header';\nimport styles from './ChallengeWorkSpace.module.css'\nimport { withRouter } from 'react-router-dom'\nimport { rwbApi } from '../../../../shared/apis/api';\nimport DocumentIcon from '../svgs/DocumentIcon';\nimport { errorAlert } from '../../../../shared/utils/ErrorAlert';\n\nexport class ChallengeWorkSpace extends Component {\n\n downloadWorkspaceLeaderboardCsv = (workspace_id, workspace_name) => {\n this.setState({ isDownloading: true });\n rwbApi\n .getWorkspaceLeaderboardCsv(workspace_id)\n .then((blob) => {\n const link = document.createElement('a');\n link.download = `${workspace_name}-leaderboard.csv`;\n link.href = window.URL.createObjectURL(blob);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n \n // wait just a tick before re-enabling the download button\n setTimeout(() => {\n this.setState({ isDownloading: false });\n }, 3000);\n })\n .catch((error) => {\n console.warn('error getting csv: ', error);\n errorAlert(\"Error downloading workspace leaderboard CSV\");\n this.setState({ isDownloading: false });\n });\n };\n downloadWorkspaceAttendeeCsv = (workspace_id, workspace_name) => {\n this.setState({ isDownloading: true });\n rwbApi\n .getWorkspaceAttendeeCsv(workspace_id)\n .then((blob) => {\n const link = document.createElement('a');\n link.download = `${workspace_name}-attendees.csv`;\n link.href = window.URL.createObjectURL(blob);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n \n // wait just a tick before re-enabling the download button\n setTimeout(() => {\n this.setState({ isDownloading: false });\n }, 3000);\n })\n .catch((error) => {\n console.warn('error getting csv: ', error);\n errorAlert(\"Error downloading workspace attendee CSV\");\n this.setState({ isDownloading: false });\n });\n };\n downloadWorkspaceUserCsv = (workspace_id, workspace_name) => {\n this.setState({ isDownloading: true });\n rwbApi\n .getWorkspaceUserCsv(workspace_id)\n .then((blob) => {\n const link = document.createElement('a');\n link.download = `${workspace_name}-user.csv`;\n link.href = window.URL.createObjectURL(blob);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n \n // wait just a tick before re-enabling the download button\n setTimeout(() => {\n this.setState({ isDownloading: false });\n }, 3000);\n })\n .catch((error) => {\n console.warn('error getting csv: ', error);\n errorAlert(\"Error downloading workspace user CSV\");\n this.setState({ isDownloading: false });\n });\n };\n\n state = {\n isDownloading: false\n };\n render() {\n const { workspaceData, titleName } = this.props.location.state\n const {history} = this.props\n const { isDownloading } = this.state;\n return (\n
    \n
    \n
    {history.goBack() }} />\n
    \n \n
    \n
    \n {titleName == \"Events\" ? (\n <>\n this.downloadWorkspaceAttendeeCsv(\n workspaceData.workspace_id,\n workspaceData.workspace_name)\n :\n undefined}\n >\n \n {isDownloading ? 'Prepping CSV...' : 'Attendee Report (CSV)'}\n
    \n\n
    \n

    Event

    \n

    Attendees

    \n
    \n\n {workspaceData.events.map((item, index) => (\n
    \n

    {item.event_name}

    \n
    \n {item.total_participants}\n
    \n
    \n ))}\n \n ) : titleName == \"Challenges\" ? (\n <>\n this.downloadWorkspaceLeaderboardCsv(\n workspaceData.workspace_id,\n workspaceData.workspace_name)\n :\n undefined}\n >\n \n {isDownloading ? 'Prepping CSV...' : 'Leaderboard Report (CSV)'}\n
    \n\n
    \n

    Challenge

    \n

    Participants

    \n
    \n\n {workspaceData.challenges.map((item, index) => (\n
    \n

    {item.challenge_name}

    \n
    \n {item.total_participants}\n
    \n
    \n ))}\n \n ) : titleName == \"Users\" && (\n <>\n this.downloadWorkspaceUserCsv(\n workspaceData.workspace_id,\n workspaceData.workspace_name)\n :\n undefined}\n >\n \n {isDownloading ? 'Prepping CSV...' : 'User Report (CSV)'}\n
    \n \n
    \n

    Name

    \n

    Date Joined

    \n
    \n {workspaceData.users.map((item, index) => (\n
    \n

    {item.full_name}

    \n
    \n {item.date_joined}\n
    \n
    \n ))}\n \n )}\n \n \n \n )\n }\n}\n\nexport default withRouter(ChallengeWorkSpace)","import React, { Component } from 'react'\nimport Header from '../Header'\nimport { withRouter } from 'react-router-dom'\nimport styles from './ChallengeBadges.module.css'\nexport class ChallengeBadges extends Component {\n render() {\n const { history } = this.props\n const { badgesData } = this.props.location.state\n return (\n
    \n
    { history.goBack() }} />\n
    \n {badgesData.map((badges,index)=>{\n return
    \n
    \n \n
    \n
    \n

    23-12-2023

    \n
    \n
    \n })} \n
    \n
    \n )\n }\n}\n\nexport default withRouter(ChallengeBadges)","import React, { useState, useEffect } from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\nimport PrivateRoute from '../PrivateRoute';\nimport Events from '../events/Events';\nimport Feed from '../feed/Feed';\nimport Groups from '../groups/Groups';\nimport Notifications from '../notifications/Notifications';\nimport Profile from '../profile/Profile';\nimport Login from '../login/Login';\nimport Registration from '../registration/Registration';\nimport Home from '../home/Home';\nimport NavigationColumn from './NavigationColumn';\nimport Challenges from '../challenges/Challenges';\nimport RecordWorkout from '../recordWorkout/RecordWorkout';\nimport MembershipOptionView from '../profile/MembershipOptionView'\nimport PaymentView from '../profile/PaymentView';\nimport OrderConfirmationView from '../profile/OrderConfirmationView';\nimport { Security, LoginCallback } from '@okta/okta-react';\nimport { OktaAuth, toRelativeUrl } from '@okta/okta-auth-js';\nimport { useHistory } from 'react-router-dom/cjs/react-router-dom';\n\nimport WorkoutLog from '../recordWorkout/WorkoutLog';\nimport Analytics from '../analytics/Analytics';\nimport WorkSpaceAnalytics from '../analytics/WorkSpaceAnalytics';\nimport ChallengeWorkSpace from '../analytics/ChallengeWorkSpace';\nimport ChallengeBadges from '../challenges/ChallengeBadges';\n\nexport default function NavigationWrapper() {\n const history = useHistory();\n const restoreOriginalUri = async (_oktaAuth, originalUri) => {\n history.replace(toRelativeUrl(originalUri || '/', window.location.origin));\n };\n const [oktaConfig, setOktaConfig] = useState(null)\n useEffect(() => {\n if (oktaConfig) {\n let newOktaObj = {\n issuer: oktaConfig.discoveryUri,\n clientId: oktaConfig.clientId,\n redirectUri: window.location.origin + '/login/callback',\n pkce: true,\n scopes: ['openid', 'profile', 'email', 'offline_access']\n }\n setOktaNewConfig(newOktaObj)\n }\n async function setOktaNewConfig(newOktaObj) {\n var authClient = new OktaAuth(newOktaObj);\n await setOktaConfig(new OktaAuth(newOktaObj))\n await authClient.signInWithRedirect();\n }\n }, [oktaConfig])\n\n return (\n <>\n \n \n \n setOktaConfig(result)} {...props} />}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}","import React , {useEffect} from 'react';\nimport './App.css';\n\nimport BuildInfo from './components/BuildInfo';\nimport {projectConfig} from '../../shared/project-info/projectConfig';\nimport Favicon from '../../shared/project-info/images/favicon.ico';\nimport Logo192 from '../../shared/project-info/images/logo192.png'\nimport Logo512 from '../../shared/project-info/images/logo512.png'\nimport AppleTouchIcon from '../../shared/project-info/images/apple-touch-icon.png'\nimport OGCover from '../../shared/project-info/images/opengraphcover.png';\nimport NavigationWrapper from './components/navigation/NavigationWrapper';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { GOOGLE_MAP_API_KEY } from '../../shared/constants/APIKeys';\n\nfunction App() {\n document.title=projectConfig.name;\n document.head.innerHTML += \n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\"+\n \"\";\n var DynamicManifest = {\n \"name\": projectConfig.name,\n \"short_name\": projectConfig.slug,\n \"description\": projectConfig.metaDescription,\n \"start_url\": window.location.origin,\n \"background_color\": \"#fff\",\n \"theme_color\": projectConfig.primaryColorOne,\n \"display\": \"standalone\",\n \"icons\": [\n {\n \"src\": window.location.origin + Favicon,\n \"sizes\": \"64x64 32x32 24x24 16x16\",\n \"type\": \"image/x-icon\"\n },\n {\n \"src\": Logo192.match(\"data:\") ? Logo192 : window.location.origin + Logo192,\n \"type\": \"image/png\",\n \"sizes\": \"192x192\"\n },\n {\n \"src\": Logo512.match(\"data:\") == 'data:' ? Logo512 : window.location.origin + Logo512,\n \"type\": \"image/png\",\n \"sizes\": \"512x512\"\n }\n ],\n }\n const stringManifest = JSON.stringify(DynamicManifest);\n const blob = new Blob([stringManifest], {type: 'application/json'});\n const manifestURL = URL.createObjectURL(blob);\n document.querySelector('#webmanifest').setAttribute('href', manifestURL);\nuseEffect(()=>{\n const script = document.createElement('script');\n script.src = `https://maps.googleapis.com/maps/api/js?key=${GOOGLE_MAP_API_KEY}&libraries=places`;\n document.body.appendChild(script)\n},[])\n\n return (\n
    \n \n \n \n \n
    \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n // eslint-disable-next-line eqeqeq\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: {'Service-Worker': 'script'},\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n // eslint-disable-next-line eqeqeq\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}