{"version":3,"sources":["common.js","utils/safePick.js","actions/usersActions.js","actionTypes/usersActionTypes.js","components/PrivacyPolicy/PrivacyPolicy.js","components/FullScreen/FullScreen.js","actionTypes/businessesActionTypes.js","actions/challengesActions.js","actionTypes/challengesActionTypes.js","actions/locationsActions.js","actionTypes/locationsActionTypes.js","actions/businessesActions.js","actions/pinsActions.js","actionTypes/pinsActionTypes.js","components/AddBusiness/AddBusiness.js","components/CustomSelect/CustomSelect.js","components/AddChallenge/AddChallenge.js","components/AddChallengeTask/AddChallengeTask.js","components/AddLocation/AddLocation.js","components/DeleteModal/RejectModal.js","components/Approvals/StepToApprove.js","components/Approvals/Approvals.js","utils/helpers.js","components/Challenge/Challenge.js","components/Approvals/OngoingChallenges.js","components/DeleteModal/DeleteModal.js","components/BusinessDetails/BusinessDetails.js","components/Business/Business.js","components/Businesses/Businesses.js","components/ChallengeDetails/ChallengeDetails.js","components/Challenges/Challenges.js","components/ChallengeTask/ChallengeTask.js","components/ContactUs/ContactUs.js","components/LocationDetails/LocationDetails.js","components/Location/Location.js","components/Locations/Locations.js","components/Map/HtmlMapMarker.js","components/Map/mapStyle.js","components/Map/Map.js","components/MenuPage/MenuPage.js","components/OpenHours/openHoursData.js","components/OpenHours/OpenHours.js","components/Pin/Pin.js","components/Pins/Pins.js","actionTypes/prizesActionTypes.js","actions/prizesActions.js","components/Prizes/Prizes.js","components/Home/Home.js","components/Welcome/components/ForgotPassword/ForgotPassword.js","components/Welcome/components/LogIn/LogIn.js","components/Welcome/components/ResetPassword/ResetPassword.js","components/Welcome/components/SignUp/SignUp.js","components/Welcome/Welcome.js","App.js","reducers/businessesReducer.js","reducers/challengesReducer.js","reducers/locationsReducer.js","reducers/pinsReducer.js","reducers/prizesReducer.js","reducers/usersReducer.js","serviceWorker.js","index.js","reducers/rootReducer.js"],"names":["baseUrl","imagesBaseUrl","videosBaseUrl","safePick","obj","_len","arguments","length","props","Array","_key","value","shift","error","undefined","setUsersError","errorMessage","type","authenicate","email","password","stayLoggedIn","async","dispatch","getState","data","axios","post","concat","common","then","response","localStorage","setItem","TokenType","AccessToken","currentUserReceived","UserLite","logOut","currentUser","getCurrentUserRoles","get","users","ID","headers","Authorization","getItem","currentUserRolesReceived","currentUserRoles","removeItem","signUp","signUpData","setForgotPwEmailSent","emailSent","setContactUsEmailSent","PrivacyPolicy","language","useState","React","createElement","Fragment","className","FullScreen","path","window","location","pathname","id","renderPage","refreshChallengeList","challengeList","setCurrentChallenge","updateCurrentStepsToApprove","stepsToApprove","displayedBySeeAllButton","setCurrentChallengeTasks","tasks","setCurrentChallengeTaskIndex","index","setChallengeLocations","locations","setChallengesError","getAllChallengeInfo","challengeId","challenge","getChallengeLocations","BusinessPins","updateShownChallenges","Challenges","setChallengeStepSubmitAsApproved","challengeStepSubmitID","setChallengeStepSubmitsAsApproved","challengeSubmitsIds","setChallengeStepSubmitRejectionMessage","rejectionMessage","refreshLocationList","locationList","setLocationsError","setCurrentLocation","getLocationTypesAction","locationTypes","BusinessTypes","updateShownLocations","currentUserId","refreshBusinessList","businessList","setCurrentBusiness","updateShownBusinesses","Businesses","updateShownPins","pins","updateStarValue","pinID","starValue","AddBusiness","selectedBusiness","business","handleSecondPageContent","businessesState","useSelector","state","businesses","setBusiness","cui","setCui","name","setName","address","setAddress","phoneNumber","setPhoneNumber","administrator","setAdministrator","selectedImage","setSelectedImage","selectedImageFormData","setSelectedImageFormData","inputImageRef","useRef","useDispatch","alert","useEffect","Name","Administrator","Address","PhoneNumber","Cui","LogoUrl","onClick","handleAddImage","current","click","src","alt","ref","onChange","event","target","files","reader","FileReader","onload","readyState","result","readAsDataURL","accept","startsWith","handleImageRemoval","placeholder","aria-label","e","autoComplete","handleSaveBusiness","editedBusiness","Id","logoUrl","saveBusiness","businessLogo","fd","FormData","append","url","req","put","_response$data$Busine","find","x","setBusinessesError","CustomSelect","selectIndex","optionList","showOptions","setShowOptions","aboveSelectOpen","setSelectedData","preselectedData","defaultSelectText","defaultText","multiple","clearOptionsIfValueChange","iconSrc","setIconSrc","displayValue","setDisplayValue","selectedOptions","setSelectedOptions","areAllSelected","setAreAllSelected","generateDisplayValue","useCallback","names","newDisplayValue","join","substring","handleOptionClick","getAttribute","handleMultipleOptionClick","clickedId","clickedName","newSelectedOptions","findIndex","map","flatMap","filter","Boolean","Icon","style","zIndex","option","key","data-name","data-id","data-icon-src","handleSelectAllOptions","checked","item","some","CustomCalendarStart","_ref","classNames","selectedDay","children","Object","assign","overlayWrapper","width","overlay","CustomCalendarEnd","_ref2","marginLeft","AddChallenge","_locations$","selectedChallenge","handleThirdPageContent","challengesState","challenges","selectedChallengeTasks","currentChallengeTasks","challengeLocations","description","setDescription","selectedLocationsIds","setSelectedLocationsIds","showLocationDropdown","setShowLocationDropdown","selectedChallengeLocations","setSelectedChallengeLocations","selectedBusinessId","setSelectedBusinessId","showBusinessDropdown","setShowBusinessDropdown","title","setTitle","prize","setPrize","prizeDescription","setPrizeDescription","prizeCodes","setPrizeCodes","noOfPrizes","setNoOfPrizes","startDate","setStartDate","endDate","setEndDate","selectedChallengeTaskIndex","setSelectedChallengeTaskIndex","havePrizeCodes","setHavePrizeCodes","singlePrizeCode","setSinglePrizeCode","givenPrizesNo","setGivenPrizesNo","buttonHoldIntervalRef","taskClicked","taskIndex","startChangeNoOfPrizes","number","fast","handleChangeNoOfPrizes","fastSpeedCount","intervalId","setInterval","stopChangeNoOfPrizes","clearInterval","valuesPerLineAreEqualTo","valuesString","values","split","every","validPrizeCodes","_selectedChallenge$Pr","_selectedChallenge$Pr2","Title","Description","Prize","PrizeDescription","NoOfPrizes","PrizeCodes","StartDate","EndDate","SinglePrizeCode","NoOfPrizesLeft","ImageURL","Steps","_challengeLocations$","Business","ClickAwayListener","onClickAway","stopPropagation","newInput","maxLength","onMouseDown","onMouseUp","onTouchStart","onTouchEnd","handleHaveInstantPrizeCodesCheckbox","htmlFor","DayPickerInput","dayPickerProps","disabledDays","before","Date","fromMonth","overlayComponent","onDayChange","date","moment","toDate","currentTarget","ChallengeStepType","removeTask","handleSaveChallenge","editedChallenge","BusinessPinIDs","toISOString","saveChallenge","challengeImage","imageURL","_response$data$Challe","AddChallengeTask","_stepTypes$find4","currentChallengeTaskIndex","selectedChallengeTask","stepTypes","showTaskSelectDropdown","setShowTaskSelectDropdown","selectedStepId","setSelectedStepId","addressName","setAddressName","setUrl","callToAction","setCallToAction","latitude","setLatitude","longitude","setLongitude","noOfUsers","setNoOfUsers","customTitle","setCustomTitle","shouldGoToBusinessLocation","setShouldGoToBusinessLocation","placeInputRef","handleChangeNoOfUsers","initPlaceAPI","Latitude","Longitude","geocoder","google","maps","Geocoder","latlng","lat","parseFloat","lng","geocode","results","formatted_address","autocomplete","places","Autocomplete","addListener","place","getPlace","geometry","getCurrentStepAction","_stepTypes$find3","Action","canSave","NoOfUsers","URL","CallToAction","ShouldGoToBusinessLocation","Types","tasksSelectClicked","display","disabled","handleSaveChallengeTask","_stepTypes$find","_stepTypes$find2","editedTask","updateCurrentChallengeTask","challengeTask","challengeTaskIndex","challengeTaskImage","updateSelectedTask","AddLocation","selectedLocation","locationsState","openHours","_state$locations$curr","currentLocation","OpenHours","setLocation","businessId","setBusinessId","locationTypeId","setLocationTypeId","locationImages","setLocationImages","selectedFormDataArray","setSelectedFormDataArray","showBusinessSelect","setShowBusinessSelect","showTypesSelect","setShowTypesSelect","predefImages","setPredefImages","numerOfPredefImages","LocationName","images","Images","sort","a","b","Position","editImages","img","businessesSelectClicked","typesSelectClicked","BusinessType","imag","formDatas","indexOf","splice","imagesP","cntPos","file","handleSaveLocation","editedLocation","Admins","BusinessTypeID","BusinessId","Confirmed","saveLocation","imagePosition","savePhoto","push","_response$data$find","RejectModal","element","setOpenModal","proceedReject","setRejectionMessage","StepToApprove","stepToApprove","isThirdPage","currentChallengeSubmitId","rejectStepSubmitModalOpen","setRejectStepSubmitModalOpen","approveStepSubmit","showAllSubmits","open","getUserChallengeSubmits","userId","businessPinId","setCurrentChallengeSubmitId","ChallengeID","User","BusinessPinId","steps","Modal","onClose","center","rejectChallengeStepSubmit","utc","Created","local","format","ProfilePictureURL","FullName","Email","ChallengeStepDescription","Text","ImageZoom","image","zoomImage","VideoURL","preload","controls","controlsList","Approved","RejectionMessage","Approvals","forThirdPage","currentChallengeUserSubmits","approveAllStepSubmits","step","challengeSubmits","challengeID","formatDate","Challenge","clickEvent","customClickEvent","currentChallengeId","NoOfParticipants","OngoingChallenges","selectedChallengeId","setSelectedChallengeId","challengeClicked","_isAdmin","fetchAllChallengeStepsToApprove","DeleteModal","proceedDelete","BusinessDetails","openModal","deleteClicked","editClicked","proceedDeleteBusiness","deleteBusiness","delete","deleteBusinessAction","currentBusinessId","_props$businesses","businessClicked","ChallengeDetails","_useSelector","_challenge$Steps","deleteModalOpen","setDeleteModalOpen","proceedDeleteChallenge","deleteChallenge","deleteChallengeAction","NoOfFinishes","_props$challenges","_props$challenges2","ChallengeTask","NoOfSubmits","NoOfApproves","ContactUs","usersState","contactData","setContactData","contactUsEmailSent","contactDataChanged","sendEmail","fullname","phone","message","sendContactUsEmail","LocationDetails","_location$OpenHours","DayOfWeek","TimeOpening","TimeClosing","proceedDeleteLocation","deleteLocation","locationID","deleteLocationAction","Location","currentLocationId","i","Locations","_props$locations","selectedLocationId","setSelectedLocationId","locationClicked","OverlayView","args","constructor","super","this","html","setMap","createDiv","div","document","position","innerHTML","addDomListener","trigger","appendDivToOverlay","getPanes","overlayImage","appendChild","positionDiv","point","getProjection","fromLatLngToDivPixel","left","top","y","draw","remove","parentNode","removeChild","getPosition","getDraggable","LIGHT","featureType","stylers","visibility","DARK","elementType","color","Map","mapPins","newMapPins","mapPinsRef","clusterer","setClusterer","userMenuOpen","setUerMenuOpenStatus","openClosePinsPage","userMenuOpenRef","setUerMenuOpenStatusRef","openClosePinsPageRef","takePinsRadius","zoom","fetchRangesByZoom","range","fetchRange","setMapCenter","setCenter","LatLng","mapDraged","getCenter","closeUserMenuIfOpen","showClusterPins","leftPage","getElementById","scrollTop","pin","firstImageUrl","forEach","latLngSet","pinIcon","marker","createHtmlMapMarker","rawPin","addMarker","mapConfig","minZoom","maxZoom","scrollwheel","styles","mapStyle","WHITE","zoomControl","mapTypeControl","scaleControl","streetViewControl","rotateControl","fullscreenControl","bigMarkerStyle","height","textSize","clusterOptions","zoomOnClick","initMap","mapContainer","locationReceived","coords","navigator","geolocation","getCurrentPosition","MarkerClusterer","mapSearchBox","searchBox","SearchBox","ControlPosition","TOP_LEFT","getPlaces","bounds","LatLngBounds","viewport","union","extend","fitBounds","placeId","stop","cluster","markers","getMarkers","clusterPins","requestPinsByLocation","MenuPage","handleFirstPageContent","clickedMenuOption","_isBusinessOwner","_isBusinessManager","open24h","closed","openHoursOptions","locationOpenHours","showOpenHoursDropdown","setShowOpenHoursDropdown","selectedOpenHourOptionId","setSelectedOpenHourOptionId","showTimeOpeningDropdown","setShowTimeOpeningDropdown","showTimeClosingDropdown","setShowTimeClosingDropdown","currentOpenHours","setCurrentOpenHours","setShowTimeOpeningDropdownHandler","newValue","setShowTimeClosingDropdownHandler","setSelectedTimeOpeningHandler","openHoursData","parseInt","setSelectedTimeClosingHandler","openHoursSelectClicked","enableDisableOpenHours","dayOfWeekNumber","newHours","timeOpeningSelectClicked","timeClosingSelectClicked","handleSaveOpenHours","updateCurrentLocationOpenHours","currentLocationOpenHours","Pin","starPressed","StarGiven","addStarToPin","LiteUser","substr","ViewCount","days","Math","round","abs","getPrettyTimeSpan","Videos","Pins","role","setPrizesError","Prizes","_prizeCodeInfo$Challe","prizes","searched","setSearched","prizeCode","setPrizeCode","prizeCodeInfo","setPrizeCodeInfo","searchPrizeCode","prizeCodeInfoResponse","getPrizeCodeInfo","givePrize","givePrizeToUser","code","CompletedTime","BusinessPin","GivenPrizesCount","IsCollected","Home","history","useHistory","shownPins","currentBusiness","currentChallenge","modalPageContent","setModalPageContent","firstPageContent","setFirstPageContent","secondPageContent","setSecondPageContent","thirdPageContent","setThirdPageContent","setUerMenuOpen","menuPageOpen","setMenuPageOpen","firstPageOpen","setFirstPageOpen","secondPageOpen","setSecondPageOpen","thirdPageOpen","setThirdPageOpen","setClickedMenuOption","pageContent","closePageAndDependents","keepPageOpen","renderFirstPageContent","slice","PinsContent","renderSecondPageContent","renderThirdPageContent","status","reload","leftPageOpen","renderModalPage","ForgotPassword","setEmail","forgotPasswordEmailSent","sendForgotPasswordEmail","forgotPassword","LogIn","authData","setAuthData","setStayLoggedIn","authDataChanged","handleLoginKeyDown","login","Link","to","onKeyDown","ResetPassword","params","URLSearchParams","search","passwordToken","createPassword","setCreatePassword","newPassword","repeatNewPassword","handleNewPassword","returnError","resetPasswordError","handleResetPassword","credentials","resetPassword","SignUp","setSignUpData","businessSignUp","signUpDataChanged","newSignUpData","handleSignUp","Welcome","href","rel","renderRightPageLink","renderRightPage","App","loading","setLoading","haveToken","requestCurrentUser","BrowserRouter","Switch","Route","exact","component","render","Redirect","initialState","action","businessIndex","c","businesses2","_state$stepsToApprove","_state$currentChallen","newCurrentChallengeTasks","selectedTasks","challengeIndex","challenges2","stepsToApprove2","currentChallengeUserSubmits2","_state$currentChallen2","_state$currentChallen3","stepsToApprove3","currentLocationData","locationIndex","l","locations2","mapPinsIds","pinIndex","p","includes","_isBetaTester","hostname","match","store","createStore","combineReducers","pinsReducer","usersReducer","businessesReducer","locationsReducer","challengesReducer","prizesReducer","composeWithDevTools","applyMiddleware","thunk","ReactDOM","Provider","serviceWorker","ready","registration","unregister","catch","console"],"mappings":"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","file":"static/js/main.da859c9d.chunk.js","sourcesContent":["const IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\nlet baseUrl = null,\r\n imagesBaseUrl = null,\r\n videosBaseUrl = null\r\n\r\nif (IS_PRODUCTION) {\r\n /* Prod */\r\n baseUrl = 'https://api.pinapp.online'\r\n imagesBaseUrl = 'https://media.pinapp.online'\r\n videosBaseUrl = 'https://media.pinapp.online'\r\n} else {\r\n /* Local */\r\n baseUrl = 'http://localhost:61885'\r\n imagesBaseUrl = 'http://localhost:61885/uploads'\r\n videosBaseUrl = 'http://localhost:61885/uploads'\r\n}\r\n\r\nexport default {\r\n baseUrl,\r\n imagesBaseUrl,\r\n videosBaseUrl,\r\n}\r\n","export default function safePick(obj, ...props) {\n if (props && props.length > 0) {\n try {\n const value = obj[props[0]]\n props.shift()\n return safePick(value, ...props)\n } catch (error) {\n return null\n }\n }\n\n return obj === undefined ? null : obj\n}\n","import axios from 'axios'\n\nimport * as actions from '../actionTypes/usersActionTypes.js'\nimport common from '../common'\nimport safePick from '../utils/safePick'\n\nconst setUsersError = errorMessage => ({\n type: actions.SET_USERS_ERROR,\n error: errorMessage || 'Unknown error occured',\n})\n\nexport const clearUsersError = () => ({\n type: actions.CLEAR_USERS_ERROR,\n})\n\nexport const authenicate =\n (email, password, stayLoggedIn) => async (dispatch, getState) => {\n try {\n const data = await axios\n .post(`${common.baseUrl}/Accounts/GenerateToken`, {\n email: email,\n password: password,\n })\n .then(response => response.data)\n\n if (stayLoggedIn) {\n localStorage.setItem('TokenType', data.TokenType)\n localStorage.setItem('AccessToken', data.AccessToken)\n }\n dispatch(currentUserReceived(data.UserLite))\n } catch (error) {\n logOut()\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setUsersError(errorMessage))\n }\n }\n\nexport const getCurrentUser = () => async (dispatch, getState) => {\n try {\n const data = await axios\n .get(`${common.baseUrl}/Accounts/GetByToken`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(response => response.data)\n\n dispatch(dispatch(currentUserReceived(data)))\n } catch (error) {\n logOut()\n }\n}\n\nconst currentUserReceived = currentUser => ({\n type: actions.CURRENT_USER_RECEIVED,\n currentUser,\n})\n\nexport const getCurrentUserRoles = () => async (dispatch, getState) => {\n try {\n const data = await axios\n .get(\n `${common.baseUrl}/Roles/GetByUserID/${\n getState().users.currentUser.ID\n }`,\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n .then(response => response.data)\n\n dispatch(dispatch(currentUserRolesReceived(data)))\n } catch (error) {\n logOut()\n }\n}\n\nconst currentUserRolesReceived = currentUserRoles => ({\n type: actions.CURRENT_USER_ROLES_RECEIVED,\n currentUserRoles,\n})\n\nexport function logOut() {\n localStorage.removeItem('TokenType')\n localStorage.removeItem('AccessToken')\n}\n\nexport const signUp = signUpData => async dispatch => {\n try {\n await axios.post(`${common.baseUrl}/Accounts/Add`, signUpData)\n await dispatch(authenicate(signUpData.email, signUpData.password, true))\n dispatch(getCurrentUserRoles())\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setUsersError(errorMessage))\n }\n}\n\nexport const forgotPassword = email => async dispatch => {\n try {\n await axios.post(`${common.baseUrl}/Accounts/ForgotPassword`, {\n email,\n })\n dispatch(setForgotPwEmailSent(true))\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setUsersError(errorMessage))\n }\n}\n\nexport const setForgotPwEmailSent = emailSent => ({\n type: actions.FORGOT_PASSWORD_EMAIL_SENT,\n emailSent,\n})\n\nexport const resetPassword = credentials => async dispatch => {\n try {\n const response = await axios.put(\n `${common.baseUrl}/Accounts/SetNewUserPassword`,\n credentials\n )\n const { status } = response\n\n if (status === 200) {\n await dispatch(\n authenicate(credentials.email, credentials.newPassword, true)\n )\n dispatch(getCurrentUserRoles())\n }\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setUsersError(errorMessage))\n }\n}\n\nexport const sendContactUsEmail = contactData => async dispatch => {\n try {\n await axios.post(`${common.baseUrl}/Accounts/SendContactEmail`, contactData)\n dispatch(setContactUsEmailSent(true))\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setUsersError(errorMessage))\n }\n}\n\nexport const setContactUsEmailSent = emailSent => ({\n type: actions.CONTACT_US_EMAIL_SENT,\n emailSent,\n})\n","export const SET_USERS_ERROR = 'SET_USERS_ERROR'\nexport const CLEAR_USERS_ERROR = 'CLEAR_USERS_ERROR'\nexport const CURRENT_USER_RECEIVED = 'CURRENT_USER_RECEIVED'\nexport const FORGOT_PASSWORD_EMAIL_SENT = 'FORGOT_PASSWORD_EMAIL_SENT'\nexport const CONTACT_US_EMAIL_SENT = 'CONTACT_US_EMAIL_SENT'\nexport const CURRENT_USER_ROLES_RECEIVED = 'CURRENT_USER_ROLES_RECEIVED'\n","import './PrivacyPolicy.scss'\n\nimport React, { useState } from 'react'\n\nexport default function PrivacyPolicy() {\n const [language /*, setLanguage*/] = useState('EN')\n\n // const businessTerms =\n // window.location.pathname === '/business-privacy-policy'\n\n return (\n <>\n {/* setLanguage('EN')}>\n EN\n \n setLanguage('RO')}>\n RO\n \n\n
*/}\n
\n\n {language === 'EN' && (\n <>\n

Privacy Policy

\n\n
\n\n \n
\n Welcome to Pinapp GO!\n
\n Pinapp GO creates meaningful experiences between people and brands\n in unique, smart, and funny ways through rewarding challenges.\n
\n
\n By using our Service, you understand and agree that we provide you\n with a platform to post content, such as photos, comments and other\n materials (the \"User Content\") within the Service, and to publicly\n distribute the User Content. This means that other Users may search,\n view, use, or distribute any content of Your Content that you make\n publicly accessible through the Service in accordance with the terms\n and conditions of this Privacy Policy and Terms of Use Our policy\n applies to all visitors, users and other people accessing the\n Service (\"Users\").\n
\n\n
\n
\n\n \n
\n 1. The information we collect:\n
\n Your username, password, and email address when you create a Pinapp\n GO account. Profile information you enter to create your user\n profile (for example, first and last name, photo, phone number).\n This information allows you to \"find\" you and other users on Pinapp\n GO. The user's content (for example, photos, comments, and other\n materials) that you post within the Service. Communications between\n you and Pinapp GO. For example, we may send you emails about the\n Service (such as account confirmation emails, changes / updates to\n some features of the Service, technical and security notifications).\n Please note that you cannot waive receiving Service emails. We may\n ask promoters or other partners to submit ads or services to your\n devices that may use cookies or similar technologies placed by us or\n third parties.\n
\n
\n\n
\n\n \n
\n 2. Communicating Your Information:\n
\n We will not rent or sell your information to third parties outside\n the Pinapp GO (or outside of the Pinapp GO group of companies)\n without your approval, except as outlined in this Policy.\n
\n
\n\n
\n\n \n
\n Parties to whom you may distribute Your Content:\n
\n Any information or content items that you voluntarily communicate to\n be posted on the Service, such as User Content, become available to\n the general public, within the limits you set with the applicable\n privacy settings. To change your privacy settings within the\n Service, please change the profile setting. Once you have shared or\n made public a User Content item, that item may be redistributed by\n others. Within the limits imposed by your profile settings and your\n privacy settings, any User Content you make public may be searched\n for by other Users.\n
\n
\n\n
\n\n \n
\n What happens if there are changes to your company control:\n
\n If we sell or otherwise transfer Pinapp GO or our assets, in whole\n or in part, to another organization (for example, in a transaction\n such as a merger, acquisition, bankruptcy, dissolution,\n liquidation), your information as well your name and email address,\n Your Content and any other information collected through the Service\n may be among the items sold or assigned. You will still be the owner\n of your Content. The Buyer or transferee will have to comply with\n our commitments under this Privacy Policy.\n
\n
\n\n
\n\n \n
\n Responses to Legal Claims and Prevention of Damage:\n
\n We may access, retain and transmit your information in response to a\n legal request (such as a search warrant, a court order or a quote)\n if, in good faith, we believe that the law requires us . These\n include receiving legal claims from jurisdictions outside Romanian\n when, in good faith, we consider that this action is imposed by law\n in that jurisdiction, affects users in that jurisdiction and is in\n compliance with internationally recognized standards. It is also\n possible to access, store and transmit information when, in good\n faith, we believe that is necessary: ​​to detect, prevent and\n resolve cases of fraud and other illegal activities; to protect us,\n yourself and others, including in investigations; or to prevent the\n death or personal injury of some people. The information we receive\n about you may be accessed, processed and kept for a longer period of\n time when it is subject to a legal request, government inquiry or\n investigation into possible violations of our terms and policies, or\n otherwise prevent potential damage.\n
\n
\n\n
\n\n \n
\n 3. Storing Your Information:\n
\n You are permanently responsible for ensuring the secret of your\n unique password and account information as well as for controlling\n access to your emails with Pinapp GO.\n
\n
\n\n
\n\n \n
\n 4.Options you have about your information.\n
\n
\n
\n \n Your account information and privacy settings for your profile:\n \n
\n You can update or delete your account at any time by logging in and\n going on your profile settings.\n
\n
\n\n
\n\n \n
\n How Long Do We Keep Your Content:\n
\n When you delete your account in the ‘Profile Settings’, all account\n information is deleted and you won't be able to recover this later.\n Information that others have shared about you isn't part of your\n account and won't be deleted.\n
\n
\n\n
\n\n \n
\n How to delete your personal data in app:\n
\n You can delete your account directly from the app.\n
    \n
  1. Go to your profile.
  2. \n
  3. Select the settings button on the left corner.
  4. \n
  5. Select Edit Account from the menu.
  6. \n
  7. Select Delete.
  8. \n
  9. Enter your password and press the delete button.
  10. \n
  11. Your Personal Data will be deleted.
  12. \n
\n
\n
\n\n \n
\n How to request your personal data deletion over email:\n
\n
    \n
  1. Send your request to our email: pinappgo@gmail.com.
  2. \n
  3. Request your personal data to be deleted.
  4. \n
  5. Your Personal Data will be deleted upon request.
  6. \n
\n
\n
\n\n \n
\n 5. Changes to privacy policies:\n
\n Pinapp GO can modify or update this Privacy Policy from time to\n time; so please consult it periodically. We may also communicate\n changes and updates to you in other ways, depending on the\n circumstances. The continued use of Pinapp GO or the Service after\n making any changes to this Privacy Policy is your agreement to these\n changes.\n
\n
\n \n )}\n\n {/* {language === 'RO' && (\n <>\n

Termeni și condiții

\n\n
\n\n \n Bun venit la PinApp! PinApp oferă un mod rapid, minunat și\n distractiv de a distribui elemente media prin intermediul platformei\n noastre pentru distribuire de conținut mesaje, poze, videouri ce\n sunt conectate la o locație.\n
\n
\n Prin utilizarea Serviciului nostru, înțelegeți și sunteți de acord\n că vă oferim o platformă pentru a posta conținut, precum fotografii,\n comentarii și alte materiale („Conținutul utilizatorului”), în\n cadrul Serviciului și pentru a distribui în mod public Conținutul\n utilizatorului. Acest lucru înseamnă că alți Utilizatori pot căuta,\n vedea, folosi sau distribui orice element al Conținutului dvs. pe\n care îl faceți accesibil în mod public prin intermediul Serviciului,\n în conformitate cu termenii și condițiile prezentei Politici de\n confidențialitate și ale Condițiilor noastre de utilizare.\n
\n Politica noastră se aplică tuturor vizitatorilor, utilizatorilor și\n altor persoane care accesează Serviciul („Utilizatori”).\n
\n
\n\n
\n\n \n
\n 1. Informațiile pe care le colectăm:\n
\n Numele de utilizator, parola și adresa de e-mail, atunci când vă\n creați un cont PinApp.\n
\n Informații de profil pe care le introduceți pentru a vă crea\n profilul de utilizator (de exemplu, prenumele și numele de familie,\n fotografia, numărul de telefon). Aceste informații permit „găsirea”\n dvs. și a altor utilizatori pe PinApp.\n
\n Conținutul utilizatorului (de exemplu, fotografii, comentarii și\n alte materiale) pe care îl postați în cadrul Serviciului.\n
\n Comunicări între dvs. și PinApp. De exemplu, este posibil să vă\n trimitem e-mailuri privind Serviciul (precum e-mailuri pentru\n confirmarea contului, privind modificări/actualizări ale unor\n funcții din cadrul Serviciului, notificări tehnice și de\n securitate). Rețineți că nu puteți renunța la primirea e-mailurilor\n privind Serviciul.\n
\n Este posibil să solicităm promotorilor sau altor parteneri să\n prezinte pe dispozitivele dvs. reclame sau servicii, care pot folosi\n module cookie sau tehnologii similare plasate de noi sau de terți.\n
\n
\n\n
\n\n \n
\n 2. Comunicarea informațiilor dvs.:\n
\n Nu vom închiria sau vinde informațiile dvs. unor terți din afara\n PinApp (sau din afara grupului de companii din care face parte\n PinApp) fără aprobarea dvs., cu excepția situațiilor menționate în\n prezenta Politică.\n
\n
\n\n
\n\n \n
\n Părțile cărora le puteți distribui Conținutul dvs.:\n
\n Orice informații sau elemente de conținut pe care le comunicați în\n mod voluntar pentru a fi postate în cadrul Serviciului, precum\n Conținutul utilizatorului, devin disponibile publicului larg, în\n limitele pe care le stabiliți cu ajutorul setărilor de\n confidențialitate aplicabile. Pentru a vă schimba setările de\n confidențialitate din cadrul Serviciului, vă rugăm să schimbați\n setarea profilului. Odată ce ați distribuit sau ați făcut public un\n element de Conținut al utilizatorului, acel element poate fi\n redistribuit de alte persoane.\n
\n În limitele impuse prin setările profilului dvs. și prin setările\n dvs. de confidențialitate, orice element de Conținut al\n utilizatorului pe care îl faceți public poate fi căutat de alți\n Utilizatori.\n
\n
\n\n
\n\n \n
\n \n Ce se întâmplă dacă apar modificări privind controlul asupra\n companiei:\n \n
\n Dacă vindem sau cesionăm în orice alt mod PinApp sau activele\n noastre, în parte sau în întregime, către o altă organizație (de\n exemplu, în cadrul unei tranzacții precum o fuziune, o achiziție,\n faliment, dizolvare, lichidare), informațiile dvs. precum numele și\n adresa de e-mail, Conținutul dvs. și orice alte informații colectate\n prin intermediul Serviciului se pot număra printre elementele\n vândute sau cesionate. Veți fi în continuare proprietarul\n Conținutului dvs. Cumpărătorul sau cesionarul va trebui să respecte\n angajamentele asumate de noi în cadrul prezentei Politici de\n confidențialitate.\n
\n
\n\n
\n\n \n
\n \n Răspunsurile la solicitările de natură juridică și prevenirea\n prejudiciilor:\n \n
\n Este posibil să accesăm, să păstrăm și să transmitem informațiile\n tale ca răspuns la o solicitare de natură juridică (precum un mandat\n de percheziție, o hotărâre judecătorească sau o citație), dacă,\n fiind de bună-credință, considerăm că legea ne impune acest lucru.\n Printre aceste situații se numără primirea unor solicitări de natură\n juridică din jurisdicții aflate în afara Statelor Unite, atunci\n când, fiind de bună-credință, considerăm că această acțiune este\n impusă de lege în jurisdicția respectivă, că afectează utilizatorii\n din jurisdicția respectivă și că este conformă cu standardele\n recunoscute la nivel internațional. De asemenea, este posibil să\n accesăm, să păstrăm și să transmitem informații atunci când, fiind\n de bună-credință, considerăm că acest lucru este necesar: pentru a\n detecta, a preveni și a rezolva cazuri de fraudă și alte activități\n ilegale; pentru ne proteja pe noi, pe dvs. și alte persoane,\n inclusiv în cadrul unor investigații; sau pentru a preveni decesul\n sau vătămarea corporală iminentă a unor persoane. Informațiile pe\n care le primim despre dvs. pot fi accesate, procesate și păstrate pe\n o perioadă mai lungă de timp atunci când fac obiectul unei\n solicitări de natură juridică, al unei investigații guvernamentale\n sau al unor investigații privind posibile încălcări ale termenilor\n și politicilor noastre sau pentru a preveni în alt mod potențiale\n prejudicii.\n
\n
\n\n
\n\n \n
\n 3. Stocarea informațiilor dvs.:\n
\n Sunteți responsabil în permanență pentru asigurarea caracterului\n secret al parolei dvs. unice și al informațiilor despre cont, precum\n și pentru controlarea accesului la e-mailurile dintre dvs. și\n PinApp.\n
\n
\n\n
\n\n \n
\n \n 4.Opțiunile pe care le aveți la dispoziție cu privire la\n informațiile dvs.\n \n
\n
\n
\n \n Informațiile contului dvs. și setările de confidențialitate ale\n profilului dvs.:\n \n
\n Vă puteți actualiza contul în orice moment conectându-vă și\n modificând setările profilului.\n
\n
\n\n
\n\n \n
\n Cât timp păstrăm Conținutul dvs.:\n
\n În urma închiderii sau dezactivării contului dvs., este posibil ca\n PinApp, Companiile sale afiliate sau Furnizorii săi de servicii să\n păstreze informații (inclusiv informațiile dvs. de profil) și\n elemente din Conținutul dvs. pentru o perioadă de timp rezonabilă\n din punct de vedere comercial, în scopuri de backup, arhivare și/sau\n audit.\n
\n
\n\n
\n\n \n
\n 5. Modificări ale politici de confidențialitate:\n
\n PinApp poate modifica sau actualiza din când în când prezenta\n Politică de confidențialitate; așadar, vă rugăm să o consultați\n periodic. Este posibil să vă comunicăm modificările și actualizările\n și în alte moduri, în funcție de circumstanțe. Utilizarea în\n continuare a PinApp sau a Serviciului după efectuarea unor\n modificări asupra prezentei Politici de confidențialitate reprezintă\n reprezintă acordul dvs. cu privire la aceste modificări.\n
\n
\n \n )} */}\n \n )\n}\n","import '../../App.scss'\nimport './FullScreen.scss'\n\nimport React from 'react'\n\nimport PrivacyPolicy from '../PrivacyPolicy/PrivacyPolicy'\n\nexport default function FullScreen() {\n const path = window.location.pathname\n\n const renderPage = () => {\n switch (path) {\n case '/':\n return <>\n case '/user-privacy-policy':\n return \n default:\n return <>\n }\n }\n\n return
{renderPage()}
\n}\n","export const UPDATE_LIST_OF_BUSINESSES = 'UPDATE_LIST_OF_BUSINESSES'\nexport const SET_BUSINESSES_ERROR = 'SET_BUSINESSES_ERROR'\nexport const CLEAR_BUSINESSES_ERROR = 'CLEAR_BUSINESSES_ERROR'\nexport const SET_CURRENT_BUSINESS = 'SET_CURRENT_BUSINESS'\nexport const DELETE_BUSINESS = 'DELETE_BUSINESS'\n","import axios from 'axios'\n\nimport * as actions from '../actionTypes/challengesActionTypes'\nimport common from '../common'\nimport safePick from '../utils/safePick'\n\nconst refreshChallengeList = challengeList => ({\n type: actions.UPDATE_LIST_OF_CHALLENGES,\n challengeList,\n})\n\nconst deleteChallengeAction = challengeId => ({\n type: actions.DELETE_CHALLENGE,\n challengeId,\n})\n\nexport const setCurrentChallenge = ID => ({\n type: actions.SET_CURRENT_CHALLENGE,\n ID,\n})\n\nexport const updateCurrentChallengeData = challenge => ({\n type: actions.UPDATE_CURRENT_CHALLENGE_DATA,\n challenge,\n})\n\nexport const updateCurrentStepsToApprove = stepsToApprove => ({\n type: actions.UPDATE_CURRENT_STEPS_TO_APPROVE,\n stepsToApprove,\n})\n\nexport const updateCurrentChallengeUserSteps = steps => ({\n type: actions.UPDATE_CURRENT_STEPS,\n steps,\n})\n\nexport const displayedBySeeAllButton = displayedBySeeAllButton => ({\n type: actions.CLICKED_FROM_SEE_ALL_BUTTON,\n displayedBySeeAllButton,\n})\n\nexport const setCurrentChallengeTasks = tasks => ({\n type: actions.SET_CURRENT_CHALLENGE_TASKS,\n tasks,\n})\n\nexport const setCurrentChallengeTaskIndex = index => ({\n type: actions.SET_CURRENT_CHALLENGE_TASK_INDEX,\n index,\n})\n\nexport const setCurrentChallengeSubmitId = currentChallengeSubmitId => ({\n type: actions.SET_CURRENT_CHALLENGE_SUBMIT_ID,\n currentChallengeSubmitId,\n})\n\nexport const updateSelectedTask = (challengeTask, challengeTaskIndex) => ({\n type: actions.UPDATE_SELECTED_TASK,\n challengeTask,\n challengeTaskIndex,\n})\n\nconst setChallengeStepTypes = stepTypes => ({\n type: actions.SET_CHALLENGES_STEP_TYPES,\n stepTypes,\n})\n\nexport const setChallengeLocations = locations => ({\n type: actions.SET_CHALLENGES_LOCATIONS,\n locations,\n})\n\nconst setChallengesError = errorMessage => ({\n type: actions.SET_CHALLENGES_ERROR,\n error: errorMessage || 'Unknown error occured',\n})\n\nexport const clearChallengesError = () => ({\n type: actions.CLEAR_CHALLENGES_ERROR,\n})\n\nexport const saveChallenge =\n (challenge, challengeImage, handleSecondPageContent) =>\n async (dispatch, getState) => {\n try {\n if (challengeImage) {\n // upload image\n const fd = new FormData()\n fd.append('File', challengeImage, challengeImage.name)\n\n const imageURL = await axios\n .post(`${common.baseUrl}/Challenges/Upload/0`, fd, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(response => response.data)\n\n challenge.ImageURL = imageURL\n }\n\n const url = challenge.ID\n ? `${common.baseUrl}/Challenges/Update`\n : `${common.baseUrl}/Challenges/Add`\n\n const req = challenge.ID ? axios.put : axios.post\n\n await req(url, challenge, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }).then(async () => {\n await axios\n .get(`${common.baseUrl}/Challenges/GetChallengesWhereAdmin`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(refreshChallengeList(response.data.Challenges))\n dispatch(\n setCurrentChallenge(\n challenge.ID || response.data.Challenges.find(x => true)?.ID // edited or added\n )\n )\n handleSecondPageContent('ChallengeDetails')\n\n if (challenge.ID) {\n dispatch(getAllChallengeInfo(challenge.ID))\n }\n })\n })\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setChallengesError(errorMessage))\n }\n }\n\nexport const updateCurrentChallengeTask =\n (\n challengeTask,\n challengeTaskIndex,\n challengeTaskImage,\n handleThirdPageContent\n ) =>\n async (dispatch, getState) => {\n try {\n if (challengeTaskImage) {\n // upload image\n const fd = new FormData()\n fd.append('File', challengeTaskImage, challengeTaskImage.name)\n\n const imageURL = await axios\n .post(`${common.baseUrl}/Challenges/Upload/0`, fd, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(response => response.data)\n\n challengeTask.ImageURL = imageURL\n }\n\n dispatch(updateSelectedTask(challengeTask, challengeTaskIndex))\n handleThirdPageContent('AddChallengeTask')\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setChallengesError(errorMessage))\n }\n }\n\nexport const getAllChallengeInfo =\n challengeId => async (dispatch, getState) => {\n await axios\n .get(`${common.baseUrl}/Challenges/GetChallengeByID/${challengeId}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(updateCurrentChallengeData(response.data))\n })\n }\n\nexport const getChallengeStepsToApprove =\n challengeId => async (dispatch, getState) => {\n await axios\n .get(\n `${common.baseUrl}/Challenges/GetStepSubmitsToApprove/${challengeId}`,\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n .then(async response => {\n dispatch(updateCurrentStepsToApprove(response.data))\n dispatch(displayedBySeeAllButton(false))\n })\n }\n\nexport const getAllChallengeStepSubmitsToApprove =\n () => async (dispatch, getState) => {\n await axios\n .get(`${common.baseUrl}/Challenges/GetAllStepSubmitsToApprove`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(updateCurrentStepsToApprove(response.data))\n dispatch(displayedBySeeAllButton(true))\n })\n }\n\nexport const getUserChallengeSubmits =\n (challengeId, userId, businessPinId) => async (dispatch, getState) => {\n await axios\n .get(\n `${common.baseUrl}/Challenges/GetUserSubmits/${challengeId}/${userId}/${businessPinId}`,\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n .then(async response => {\n dispatch(updateCurrentChallengeUserSteps(response.data))\n })\n }\n\nexport const getChallengeStepTypes = () => async (dispatch, getState) => {\n await axios\n .get(`${common.baseUrl}/Challenges/GetChallengeStepTypes`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(setChallengeStepTypes(response.data.Types))\n })\n}\n\nexport const getChallengeLocations =\n challengeId => async (dispatch, getState) => {\n await axios\n .get(\n `${common.baseUrl}/Challenges/GetChellengeBusinessPins/${challengeId}?skip=0&take=100`,\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n .then(async response => {\n dispatch(setChallengeLocations(response.data.BusinessPins))\n })\n }\n\nexport const updateShownChallenges = () => async (dispatch, getState) => {\n await axios\n .get(`${common.baseUrl}/Challenges/GetChallengesWhereAdmin`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(refreshChallengeList(response.data.Challenges))\n })\n}\n\nexport const deleteChallenge =\n (challengeId, handleSecondPageContent) => async (dispatch, getState) => {\n await axios\n .delete(`${common.baseUrl}/Challenges/Delete/${challengeId}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(() => {\n dispatch(deleteChallengeAction(challengeId))\n dispatch(updateShownChallenges())\n handleSecondPageContent('ChallengeDetails')\n })\n }\n\nexport const approveChallengeStepSubmit =\n challengeStepSubmitID => async (dispatch, getState) => {\n try {\n await axios.put(\n `${common.baseUrl}/Challenges/ApproveChallengeStepSubmit`,\n {\n challengeStepSubmitID,\n },\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n\n dispatch(setChallengeStepSubmitAsApproved(challengeStepSubmitID))\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setChallengesError(errorMessage))\n }\n }\n\nconst setChallengeStepSubmitAsApproved = challengeStepSubmitID => ({\n type: actions.SET_CHALLENGE_STEP_SUBMIT_AS_APPROVED,\n challengeStepSubmitID,\n})\n\nexport const approveChallengeStepSubmits =\n challengeID => async (dispatch, getState) => {\n try {\n await axios.put(\n `${common.baseUrl}/Challenges/ApproveChallengeStepSubmits/${challengeID}`,\n {},\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n\n dispatch(setChallengeStepSubmitsAsApproved(challengeID, null))\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setChallengesError(errorMessage))\n }\n }\n\nexport const approveMultipleChallengeStepSubmits =\n challengeSubmits => async (dispatch, getState) => {\n try {\n await axios.put(\n `${common.baseUrl}/Challenges/ApproveMultipleChallengeStepSubmits`,\n challengeSubmits,\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n\n dispatch(setChallengeStepSubmitsAsApproved(null, challengeSubmits))\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setChallengesError(errorMessage))\n }\n }\n\nconst setChallengeStepSubmitsAsApproved = (\n challengeId,\n challengeSubmitsIds\n) => ({\n type: actions.SET_CHALLENGE_STEP_SUBMITS_AS_APPROVED,\n challengeId,\n challengeSubmitsIds,\n})\n\nexport const rejectChallengeStepSubmit =\n (challengeStepSubmitID, rejectionMessage) => async (dispatch, getState) => {\n try {\n await axios.put(\n `${common.baseUrl}/Challenges/RejectChallengeStepSubmit`,\n {\n challengeStepSubmitID,\n rejectionMessage,\n },\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n\n dispatch(\n setChallengeStepSubmitRejectionMessage(\n challengeStepSubmitID,\n rejectionMessage\n )\n )\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setChallengesError(errorMessage))\n }\n }\n\nconst setChallengeStepSubmitRejectionMessage = (\n challengeStepSubmitID,\n rejectionMessage\n) => ({\n type: actions.SET_CHALLENGE_STEP_SUBMIT_REJECTION_MESSAGE,\n challengeStepSubmitID,\n rejectionMessage,\n})\n","export const UPDATE_LIST_OF_CHALLENGES = 'UPDATE_LIST_OF_CHALLENGES'\nexport const SET_CHALLENGES_ERROR = 'SET_CHALLENGES_ERROR'\nexport const CLEAR_CHALLENGES_ERROR = 'CLEAR_CHALLENGES_ERROR'\nexport const SET_CURRENT_CHALLENGE = 'SET_CURRENT_CHALLENGE'\nexport const DELETE_CHALLENGE = 'DELETE_CHALLENGE'\nexport const SET_CURRENT_CHALLENGE_TASKS = 'SET_CURRENT_CHALLENGE_TASKS'\nexport const SET_CURRENT_CHALLENGE_TASK_INDEX =\n 'SET_CURRENT_CHALLENGE_TASK_INDEX'\nexport const UPDATE_SELECTED_TASK = 'UPDATE_SELECTED_TASK'\nexport const UPDATE_CURRENT_CHALLENGE_DATA = 'UPDATE_CURRENT_CHALLENGE_DATA'\nexport const SET_CHALLENGES_STEP_TYPES = 'SET_CHALLENGES_STEP_TYPES'\nexport const SET_CHALLENGES_LOCATIONS = 'SET_CHALLENGES_LOCATIONS'\nexport const UPDATE_CURRENT_STEPS_TO_APPROVE = 'UPDATE_CURRENT_STEPS_TO_APPROVE'\nexport const SET_CHALLENGE_STEP_SUBMIT_AS_APPROVED =\n 'SET_CHALLENGE_STEP_SUBMIT_AS_APPROVED'\nexport const SET_CHALLENGE_STEP_SUBMITS_AS_APPROVED =\n 'SET_CHALLENGE_STEP_SUBMITS_AS_APPROVED'\nexport const SET_CHALLENGE_STEP_SUBMIT_REJECTION_MESSAGE =\n 'SET_CHALLENGE_STEP_SUBMIT_REJECTION_MESSAGE'\nexport const CLICKED_FROM_SEE_ALL_BUTTON = 'CLICKED_FROM_SEE_ALL_BUTTON'\nexport const UPDATE_CURRENT_STEPS = 'UPDATE_CURRENT_STEPS'\nexport const SET_CURRENT_CHALLENGE_SUBMIT_ID = 'SET_CURRENT_CHALLENGE_SUBMIT_ID'\n","import axios from 'axios'\n\nimport * as actions from '../actionTypes/locationsActionTypes'\nimport common from '../common'\nimport safePick from '../utils/safePick'\nimport { updateShownChallenges } from './challengesActions'\n\nconst refreshLocationList = locationList => ({\n type: actions.UPDATE_LIST_OF_LOCATIONS,\n locationList,\n})\n\nconst getLocationTypes = locationTypes => ({\n type: actions.GET_LOCATION_TYPES,\n locationTypes,\n})\n\nconst setLocationsError = errorMessage => ({\n type: actions.SET_LOCATIONS_ERROR,\n error: errorMessage || 'Unknown error occured',\n})\n\nconst deleteLocationAction = locationID => ({\n type: actions.DELETE_LOCATION,\n locationID,\n})\n\nexport const clearLocationsError = () => ({\n type: actions.CLEAR_LOCATIONS_ERROR,\n})\n\nexport const setCurrentLocation = ID => ({\n type: actions.SET_CURRENT_LOCATION,\n ID,\n})\n\nexport const setCurrentLocationOpenHours = openHours => ({\n type: actions.SET_CURRENT_LOCATION_OPEN_HOURS,\n openHours,\n})\n\nexport const saveLocation =\n (location, selectedFormDataArray, handleSecondPageContent, currentUser) =>\n async (dispatch, getState) => {\n try {\n let imagePosition = 0\n let images = []\n if (location.ID) {\n images = location.Images\n imagePosition = location.Images.length\n }\n\n const savePhoto = async function (file) {\n const fd = new FormData()\n fd.append('File', file, file.name)\n await axios\n .post(`${common.baseUrl}/BusinessPins/UploadPicture`, fd, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(response => {\n images.push({ URL: response.data, Position: imagePosition })\n ++imagePosition\n })\n }\n\n for (const file of selectedFormDataArray) {\n await savePhoto(file)\n }\n\n location.images = images\n\n const url = location.ID\n ? `${common.baseUrl}/BusinessPins/Update`\n : `${common.baseUrl}/BusinessPins/Add`\n\n const req = location.ID ? axios.put : axios.post\n\n await req(url, location, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }).then(async () => {\n await axios\n .get(`${common.baseUrl}/BusinessPins/GetByUserID/${currentUser.ID}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(refreshLocationList(response.data))\n dispatch(\n setCurrentLocation(\n location.ID || response.data.find(x => true)?.ID // edited or added\n )\n )\n handleSecondPageContent('LocationDetails')\n })\n })\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setLocationsError(errorMessage))\n }\n }\n\nexport const getLocationTypesAction = () => async (dispatch, getState) => {\n await axios\n .get(`${common.baseUrl}/BusinessTypes/GetAll`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(getLocationTypes(response.data.BusinessTypes))\n })\n}\n\nexport const updateShownLocations = () => async (dispatch, getState) => {\n const currentUserId = getState().users.currentUser.ID\n\n await axios\n .get(`${common.baseUrl}/BusinessPins/GetByUserID/${currentUserId}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(refreshLocationList(response.data))\n })\n}\n\nexport const deleteLocation =\n (locationID, handleSecondPageContent) => async (dispatch, getState) => {\n await axios\n .delete(`${common.baseUrl}/BusinessPins/Delete/${locationID}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(() => {\n dispatch(deleteLocationAction(locationID))\n dispatch(updateShownChallenges())\n handleSecondPageContent('LocationDetails')\n })\n }\n\nexport const updateCurrentLocationOpenHours =\n (currentLocationOpenHours, handleThirdPageContent) =>\n async (dispatch, getState) => {\n try {\n dispatch(setCurrentLocationOpenHours(currentLocationOpenHours))\n handleThirdPageContent('')\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setLocationsError(errorMessage))\n }\n }\n","export const UPDATE_LIST_OF_LOCATIONS = 'UPDATE_LIST_OF_LOCATIONS'\nexport const GET_LOCATION_TYPES = 'GET_LOCATION_TYPES'\nexport const SET_CURRENT_LOCATION = 'SET_CURRENT_LOCATION'\nexport const SET_CURRENT_LOCATION_OPEN_HOURS = 'SET_CURRENT_LOCATION_OPEN_HOURS'\nexport const SET_LOCATIONS_ERROR = 'SET_LOCATIONS_ERROR'\nexport const CLEAR_LOCATIONS_ERROR = 'CLEAR_LOCATIONS_ERROR'\nexport const DELETE_LOCATION = 'DELETE_LOCATION'\n","import axios from 'axios'\n\nimport * as actions from '../actionTypes/businessesActionTypes'\nimport common from '../common'\nimport safePick from '../utils/safePick'\nimport { updateShownChallenges } from './challengesActions'\nimport { updateShownLocations } from './locationsActions'\n\nconst refreshBusinessList = businessList => ({\n type: actions.UPDATE_LIST_OF_BUSINESSES,\n businessList,\n})\n\nconst deleteBusinessAction = businessId => ({\n type: actions.DELETE_BUSINESS,\n businessId,\n})\n\nexport const setCurrentBusiness = ID => ({\n type: actions.SET_CURRENT_BUSINESS,\n ID,\n})\n\nconst setBusinessesError = errorMessage => ({\n type: actions.SET_BUSINESSES_ERROR,\n error: errorMessage || 'Unknown error occured',\n})\n\nexport const saveBusiness =\n (business, businessLogo, handleSecondPageContent, currentUser) =>\n async (dispatch, getState) => {\n try {\n if (businessLogo) {\n // upload image\n const fd = new FormData()\n fd.append('File', businessLogo, businessLogo.name)\n\n const logoUrl = await axios\n .post(`${common.baseUrl}/Businesses/UploadPicture`, fd, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(response => response.data)\n\n business.logoUrl = logoUrl\n }\n\n const url = business.Id\n ? `${common.baseUrl}/Businesses/Update`\n : `${common.baseUrl}/Businesses/Add`\n\n const req = business.Id ? axios.put : axios.post\n\n await req(url, business, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }).then(async () => {\n await axios\n .get(`${common.baseUrl}/Businesses/GetByUserId/${currentUser.ID}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(refreshBusinessList(response.data.Businesses))\n dispatch(\n setCurrentBusiness(\n business.Id || response.data.Businesses.find(x => true)?.Id // edited or added\n )\n ) // first\n handleSecondPageContent('BusinessDetails')\n })\n })\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setBusinessesError(errorMessage))\n }\n }\n\nexport const updateShownBusinesses = () => async (dispatch, getState) => {\n const currentUserId = getState().users.currentUser.ID\n\n await axios\n .get(`${common.baseUrl}/Businesses/GetByUserId/${currentUserId}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(async response => {\n dispatch(refreshBusinessList(response.data.Businesses))\n })\n}\n\nexport const deleteBusiness =\n (businessId, handleSecondPageContent) => async (dispatch, getState) => {\n await axios\n .delete(`${common.baseUrl}/Businesses/Delete/${businessId}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(() => {\n dispatch(deleteBusinessAction(businessId))\n dispatch(updateShownLocations())\n dispatch(updateShownChallenges())\n handleSecondPageContent('BusinessDetails')\n })\n }\n\nexport const clearBusinessesError = () => ({\n type: actions.CLEAR_BUSINESSES_ERROR,\n})\n","import axios from 'axios'\n\nimport * as actions from '../actionTypes/pinsActionTypes'\nimport common from '../common'\n\n// const setPinsError = errorMessage => ({\n// type: actions.SET_PINS_ERROR,\n// error: errorMessage || 'Unknown error occured',\n// })\n\nexport const clearUsersError = () => ({\n type: actions.CLEAR_PINS_ERROR,\n})\n\nexport const getPinsByLocation =\n (latitude, longitude, take, radius) => async (dispatch, getState) => {\n return null\n\n // try {\n // const data = await axios\n // .get(\n // `${common.baseUrl}/Messages/GetByLocation?latitude=${latitude}&longitude=${longitude}&take=${take}&radius=${radius}`,\n // {\n // headers: {\n // Authorization: `${localStorage.getItem(\n // 'TokenType'\n // )} ${localStorage.getItem('AccessToken')}`,\n // },\n // }\n // )\n // .then(response => response.data)\n // .then(data => data.Messages)\n\n // dispatch(dispatch(mapPinsReceived(data)))\n // } catch (error) {\n // const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n // dispatch(setPinsError(errorMessage))\n // }\n }\n\n// const mapPinsReceived = mapPins => ({\n// type: actions.MAP_PINS_RECEIVED,\n// mapPins,\n// })\n\nexport const updateShownPins = pins => ({\n type: actions.UPDATE_SHOWN_PINS,\n pins,\n})\n\nconst updateStarValue = (pinID, starValue) => ({\n type: actions.UPDATE_GIVEN_STAR_VALUE,\n pinID,\n starValue,\n})\n\nexport const addStarToPin = pinID => async (dispatch, getState) => {\n try {\n axios\n .put(\n `${common.baseUrl}/Messages/AddStar/${pinID}`,\n {},\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n .then(() => {\n dispatch(updateStarValue(pinID, true))\n })\n } catch (error) {}\n}\n\nexport const removeStarFromPin = pinID => async (dispatch, getState) => {\n try {\n await axios\n .put(\n `${common.baseUrl}/Messages/RemoveStar/${pinID}`,\n {},\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n .then(() => {\n dispatch(updateStarValue(pinID, false))\n })\n } catch (error) {}\n}\n","export const SET_PINS_ERROR = 'SET_PINS_ERROR'\nexport const CLEAR_PINS_ERROR = 'CLEAR_PINS_ERROR'\nexport const MAP_PINS_RECEIVED = 'PINS_RECEIVED'\nexport const UPDATE_SHOWN_PINS = 'UPDATE_SHOWN_PINS'\nexport const UPDATE_GIVEN_STAR_VALUE = 'UPDATE_GIVEN_STAR_VALUE'\n","import './AddBusiness.scss'\n\nimport React, { useEffect, useRef, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport {\n clearBusinessesError,\n saveBusiness,\n} from '../../actions/businessesActions'\nimport { getLocationTypesAction } from '../../actions/locationsActions'\nimport common from '../../common'\n\nexport default function AddBusiness(props) {\n const selectedBusiness = props.business\n const handleSecondPageContent = props.handleSecondPageContent\n\n const businessesState = useSelector(state => state.businesses)\n\n const [business, setBusiness] = useState('')\n const [cui, setCui] = useState('')\n const [name, setName] = useState('')\n const [address, setAddress] = useState('')\n const [phoneNumber, setPhoneNumber] = useState('')\n const [administrator, setAdministrator] = useState('')\n const currentUser = useSelector(state => state.users.currentUser)\n const [selectedImage, setSelectedImage] = useState()\n const [selectedImageFormData, setSelectedImageFormData] = useState()\n\n const inputImageRef = useRef()\n const dispatch = useDispatch()\n\n if (businessesState.error) {\n alert(businessesState.error)\n dispatch(clearBusinessesError())\n }\n\n const handleAddImage = () => {\n inputImageRef.current.click()\n }\n\n const handleImageRemoval = () => {\n setSelectedImage(null)\n setSelectedImageFormData(null)\n }\n\n const fileSelectedHandler = event => {\n if (event.target.files.length !== 0) {\n const reader = new FileReader()\n reader.onload = () => {\n if (reader.readyState === 2) {\n setSelectedImage(reader.result)\n }\n }\n reader.readAsDataURL(event.target.files[0])\n setSelectedImageFormData(event.target.files[0])\n }\n }\n\n const handleSaveBusiness = () => {\n if (name && administrator && cui && phoneNumber && address) {\n let editedBusiness = business\n ? {\n // edit\n Id: business.Id,\n name,\n address,\n phoneNumber,\n administrator,\n cui,\n logoUrl: business.LogoUrl,\n }\n : {\n // new\n name,\n address,\n phoneNumber,\n administrator,\n cui,\n }\n if (editedBusiness.Id && !selectedImage) {\n delete editedBusiness.logoUrl\n }\n dispatch(\n saveBusiness(\n editedBusiness,\n selectedImageFormData,\n handleSecondPageContent,\n currentUser\n )\n )\n }\n }\n\n useEffect(() => {\n dispatch(getLocationTypesAction())\n }, [dispatch])\n\n useEffect(() => {\n setBusiness(selectedBusiness)\n if (business) {\n setName(business.Name)\n setAdministrator(business.Administrator)\n setAddress(business.Address)\n setPhoneNumber(business.PhoneNumber)\n setCui(business.Cui)\n setSelectedImage(business.LogoUrl)\n }\n }, [selectedBusiness, business])\n\n return (\n <>\n
Business Info
\n\n
\n
\n {!selectedImage && (\n <>\n \n \n
\n\n
\n \n browse icon\n

Logo

\n
\n \n )}\n\n {selectedImage && (\n
\n
\n )}\n
\n\n setName(e.target.value || '')}\n value={name}\n autoComplete='off'\n />\n\n setAddress(e.target.value || '')}\n value={address}\n autoComplete='off'\n />\n\n setAdministrator(e.target.value || '')}\n value={administrator}\n autoComplete='off'\n />\n\n setCui(e.target.value || '')}\n value={cui}\n autoComplete='off'\n />\n\n setPhoneNumber(e.target.value || '')}\n value={phoneNumber}\n autoComplete='off'\n />\n \n\n
\n \n handleSecondPageContent(business ? 'BusinessDetails' : '')\n }>\n Cancel\n
\n \n Save\n \n \n \n )\n}\n","import './CustomSelect.scss'\r\n\r\nimport React, { useCallback, useEffect, useState } from 'react'\r\n\r\nexport default function CustomSelect(props) {\r\n let selectIndex = props.selectIndex\r\n let optionList = props.optionList\r\n let showOptions = props.showOptions\r\n let setShowOptions = props.setShowOptions\r\n let aboveSelectOpen = props.aboveSelectOpen\r\n let setSelectedData = props.setSelectedData\r\n let preselectedData = props.preselectedData\r\n let defaultSelectText = props.defaultText\r\n let multiple = props.multiple\r\n let clearOptionsIfValueChange = props.clearOptionsIfValueChange\r\n\r\n const [iconSrc, setIconSrc] = useState()\r\n const [displayValue, setDisplayValue] = useState(defaultSelectText)\r\n const [selectedOptions, setSelectedOptions] = useState(preselectedData || [])\r\n const [areAllSelected, setAreAllSelected] = useState(\r\n optionList?.length === preselectedData?.length\r\n )\r\n\r\n const generateDisplayValue = useCallback(\r\n names => {\r\n let maxLength = 30\r\n\r\n if (!names || names.length === 0) {\r\n return defaultSelectText\r\n }\r\n\r\n let newDisplayValue = names.join(', ')\r\n\r\n if (newDisplayValue.length > maxLength) {\r\n newDisplayValue = newDisplayValue.substring(0, maxLength) + '...'\r\n }\r\n\r\n return newDisplayValue\r\n },\r\n [defaultSelectText]\r\n )\r\n\r\n const handleOptionClick = e => {\r\n // TODO: refactor e.target...\r\n setDisplayValue(e.target.getAttribute('data-name'))\r\n\r\n setShowOptions(false, selectIndex)\r\n setSelectedData(e.target.getAttribute('data-id'), selectIndex)\r\n\r\n if (e.target.getAttribute('data-icon-src')) {\r\n setIconSrc(e.target.getAttribute('data-icon-src'))\r\n }\r\n }\r\n\r\n const handleMultipleOptionClick = e => {\r\n // TODO: refactor e.target...\r\n\r\n const clickedId = e.target.getAttribute('data-id')\r\n const clickedName = e.target.getAttribute('data-name')\r\n\r\n const index = selectedOptions.findIndex(\r\n x => x.Id === clickedId || x.ID === clickedId\r\n )\r\n\r\n let newSelectedOptions = []\r\n\r\n if (index === -1) {\r\n // select\r\n newSelectedOptions = [\r\n ...selectedOptions,\r\n { Id: clickedId, Name: clickedName },\r\n ]\r\n setSelectedOptions(newSelectedOptions)\r\n setDisplayValue(generateDisplayValue(newSelectedOptions.map(x => x.Name)))\r\n setSelectedData(\r\n newSelectedOptions.flatMap(x => [x.Id, x.ID].filter(Boolean))\r\n )\r\n } else {\r\n // deselect\r\n newSelectedOptions = selectedOptions.filter(\r\n x => x.Id !== clickedId && x.ID !== clickedId\r\n )\r\n setSelectedOptions(newSelectedOptions)\r\n setDisplayValue(generateDisplayValue(newSelectedOptions.map(x => x.Name)))\r\n setSelectedData(\r\n newSelectedOptions.flatMap(x => [x.Id, x.ID].filter(Boolean))\r\n )\r\n }\r\n\r\n if (newSelectedOptions.length === optionList.length) {\r\n setAreAllSelected(true)\r\n } else {\r\n setAreAllSelected(false)\r\n }\r\n }\r\n\r\n const handleSelectAllOptions = () => {\r\n let newSelectedOptions = []\r\n\r\n if (areAllSelected) {\r\n // deselect all\r\n setAreAllSelected(false)\r\n } else {\r\n // select all\r\n newSelectedOptions = optionList.map(x => ({\r\n Id: x.Id || x.ID,\r\n Name: x.Name,\r\n }))\r\n setAreAllSelected(true)\r\n }\r\n\r\n setSelectedOptions(newSelectedOptions)\r\n setDisplayValue(generateDisplayValue(newSelectedOptions.map(x => x.Name)))\r\n setSelectedData(\r\n newSelectedOptions.flatMap(x => [x.Id, x.ID].filter(Boolean))\r\n )\r\n }\r\n\r\n useEffect(() => {\r\n if (preselectedData) {\r\n if (multiple) {\r\n setDisplayValue(generateDisplayValue(preselectedData.map(x => x.Name)))\r\n setSelectedData(\r\n preselectedData.flatMap(x => [x.Id, x.ID].filter(Boolean))\r\n )\r\n } else {\r\n setDisplayValue(preselectedData.Name)\r\n setIconSrc(preselectedData.Icon)\r\n if (preselectedData.Id) {\r\n setSelectedData(preselectedData.Id)\r\n } else {\r\n setSelectedData(preselectedData.ID)\r\n }\r\n }\r\n } else {\r\n setDisplayValue(defaultSelectText)\r\n setIconSrc(null)\r\n }\r\n\r\n setSelectedOptions(preselectedData || [])\r\n }, [\r\n generateDisplayValue,\r\n preselectedData,\r\n setSelectedData,\r\n defaultSelectText,\r\n multiple,\r\n ])\r\n\r\n useEffect(() => {\r\n setSelectedOptions([])\r\n setAreAllSelected(false)\r\n setDisplayValue(defaultSelectText)\r\n }, [clearOptionsIfValueChange, defaultSelectText])\r\n\r\n return (\r\n
\r\n \r\n {!aboveSelectOpen && iconSrc && (\r\n option icon\r\n )}\r\n {!aboveSelectOpen && (\r\n {displayValue}\r\n )}\r\n
\r\n
\r\n {/* Single select */}\r\n {showOptions && !multiple && (\r\n
    \r\n {optionList.map((option, index) => {\r\n return (\r\n \r\n {option.Icon && (\r\n \r\n )}\r\n \r\n {option.Name}\r\n \r\n \r\n )\r\n })}\r\n
\r\n )}\r\n\r\n {/* Multiple select */}\r\n {showOptions && multiple && (\r\n
    \r\n
  • \r\n
    \r\n {}}\r\n />\r\n\r\n \r\n
    \r\n
  • \r\n\r\n {optionList.map((option, index) => {\r\n return (\r\n \r\n
    \r\n [item.Id, item.ID].filter(Boolean))\r\n .some(id => id === option.Id || id === option.ID)}\r\n onChange={() => {}}\r\n />\r\n\r\n \r\n \r\n {option.Name}\r\n \r\n \r\n
    \r\n \r\n )\r\n })}\r\n
\r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import 'react-day-picker/lib/style.css'\r\n\r\nimport './AddChallenge.scss'\r\n\r\nimport moment from 'moment/moment'\r\nimport PropTypes from 'prop-types'\r\nimport React, { useEffect, useRef, useState } from 'react'\r\nimport ClickAwayListener from 'react-click-away-listener'\r\nimport DayPickerInput from 'react-day-picker/DayPickerInput'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\n\r\nimport {\r\n clearChallengesError,\r\n getChallengeLocations,\r\n saveChallenge,\r\n setCurrentChallengeTaskIndex,\r\n setCurrentChallengeTasks,\r\n} from '../../actions/challengesActions'\r\nimport common from '../../common'\r\nimport CustomSelect from '../CustomSelect/CustomSelect'\r\n\r\nfunction CustomCalendarStart({ classNames, selectedDay, children, ...props }) {\r\n return (\r\n \r\n
\r\n \r\n {children}\r\n
\r\n \r\n )\r\n}\r\n\r\nfunction CustomCalendarEnd({ classNames, selectedDay, children, ...props }) {\r\n return (\r\n \r\n
\r\n \r\n {children}\r\n
\r\n \r\n )\r\n}\r\n\r\nCustomCalendarStart.propTypes = {\r\n classNames: PropTypes.object.isRequired,\r\n selectedDay: PropTypes.instanceOf(Date),\r\n children: PropTypes.node.isRequired,\r\n}\r\n\r\nCustomCalendarEnd.propTypes = {\r\n classNames: PropTypes.object.isRequired,\r\n selectedDay: PropTypes.instanceOf(Date),\r\n children: PropTypes.node.isRequired,\r\n}\r\n\r\nexport default function AddChallenge(props) {\r\n const selectedChallenge = props.challenge\r\n const handleSecondPageContent = props.handleSecondPageContent\r\n const handleThirdPageContent = props.handleThirdPageContent\r\n\r\n const challengesState = useSelector(state => state.challenges)\r\n const selectedChallengeTasks = challengesState.currentChallengeTasks\r\n const locations = useSelector(state => state.locations.locations)\r\n const businesses = useSelector(state => state.businesses.businesses[0])\r\n const challengeLocations = useSelector(state => state.challenges.locations)\r\n\r\n // const [challenge, setChallenge] = useState()\r\n const [description, setDescription] = useState()\r\n const [selectedLocationsIds, setSelectedLocationsIds] = useState()\r\n const [showLocationDropdown, setShowLocationDropdown] = useState(false)\r\n const [selectedChallengeLocations, setSelectedChallengeLocations] =\r\n useState(challengeLocations)\r\n const [selectedBusinessId, setSelectedBusinessId] = useState()\r\n const [showBusinessDropdown, setShowBusinessDropdown] = useState(false)\r\n const [title, setTitle] = useState()\r\n const [prize, setPrize] = useState()\r\n const [prizeDescription, setPrizeDescription] = useState()\r\n const [prizeCodes, setPrizeCodes] = useState()\r\n const [noOfPrizes, setNoOfPrizes] = useState(0)\r\n const [startDate, setStartDate] = useState()\r\n const [endDate, setEndDate] = useState()\r\n const [selectedImage, setSelectedImage] = useState()\r\n const [selectedImageFormData, setSelectedImageFormData] = useState()\r\n const [selectedChallengeTaskIndex, setSelectedChallengeTaskIndex] = useState()\r\n const [havePrizeCodes, setHavePrizeCodes] = useState()\r\n const [singlePrizeCode, setSinglePrizeCode] = useState()\r\n const [givenPrizesNo, setGivenPrizesNo] = useState()\r\n\r\n const inputImageRef = useRef()\r\n const buttonHoldIntervalRef = useRef(null)\r\n\r\n const selectBusinessMessage = 'Please select a Business first'\r\n\r\n const dispatch = useDispatch()\r\n\r\n if (challengesState.error) {\r\n alert(challengesState.error)\r\n dispatch(clearChallengesError())\r\n }\r\n\r\n const addTaskClicked = () => {\r\n handleThirdPageContent(\r\n 'AddChallengeTask',\r\n selectedChallengeTaskIndex !== null\r\n )\r\n setSelectedChallengeTaskIndex(null)\r\n dispatch(setCurrentChallengeTaskIndex(null))\r\n }\r\n\r\n const taskClicked = taskIndex => {\r\n setSelectedChallengeTaskIndex(taskIndex)\r\n dispatch(setCurrentChallengeTaskIndex(taskIndex))\r\n handleThirdPageContent(\r\n 'AddChallengeTask',\r\n selectedChallengeTaskIndex !== taskIndex\r\n )\r\n }\r\n\r\n const removeTask = taskIndex => {\r\n dispatch(\r\n setCurrentChallengeTasks(\r\n selectedChallengeTasks.filter((x, index) => index !== taskIndex)\r\n )\r\n )\r\n handleThirdPageContent(null)\r\n }\r\n\r\n const handleImageRemoval = () => {\r\n setSelectedImage(null)\r\n setSelectedImageFormData(null)\r\n }\r\n\r\n const fileSelectedHandler = event => {\r\n if (event.target.files.length !== 0) {\r\n const reader = new FileReader()\r\n reader.onload = () => {\r\n if (reader.readyState === 2) {\r\n setSelectedImage(reader.result)\r\n }\r\n }\r\n reader.readAsDataURL(event.target.files[0])\r\n setSelectedImageFormData(event.target.files[0])\r\n }\r\n }\r\n\r\n const handleSaveChallenge = () => {\r\n if (\r\n selectedBusinessId &&\r\n selectedLocationsIds &&\r\n title &&\r\n prize &&\r\n prizeDescription &&\r\n description &&\r\n noOfPrizes &&\r\n startDate &&\r\n endDate &&\r\n selectedChallengeTasks?.length > 0 &&\r\n validPrizeCodes()\r\n ) {\r\n let editedChallenge = selectedChallenge\r\n ? {\r\n // edit\r\n ID: selectedChallenge.ID,\r\n BusinessPinIDs: selectedLocationsIds,\r\n Title: title,\r\n Description: description,\r\n Prize: prize,\r\n PrizeDescription: prizeDescription,\r\n NoOfPrizes: noOfPrizes,\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n ImageURL: selectedImage,\r\n Steps: selectedChallengeTasks,\r\n PrizeCodes: prizeCodes ? prizeCodes?.split('\\n') : null,\r\n SinglePrizeCode: singlePrizeCode,\r\n }\r\n : {\r\n // new\r\n BusinessPinIDs: selectedLocationsIds,\r\n Title: title,\r\n Description: description,\r\n Prize: prize,\r\n PrizeDescription: prizeDescription,\r\n NoOfPrizes: noOfPrizes,\r\n StartDate: startDate.toISOString().split('T')[0],\r\n EndDate: endDate.toISOString().split('T')[0],\r\n Steps: selectedChallengeTasks,\r\n PrizeCodes: prizeCodes ? prizeCodes?.split('\\n') : null,\r\n SinglePrizeCode: singlePrizeCode,\r\n }\r\n\r\n dispatch(\r\n saveChallenge(\r\n editedChallenge,\r\n selectedImageFormData,\r\n handleSecondPageContent\r\n )\r\n )\r\n }\r\n }\r\n\r\n const handleChangeTitle = e => {\r\n let newInput = e.target.value\r\n setTitle(newInput || '')\r\n }\r\n\r\n const handleChangePrize = e => {\r\n let newInput = e.target.value\r\n setPrize(newInput || '')\r\n }\r\n\r\n const handleChangePrizeDescription = e => {\r\n let newInput = e.target.value\r\n setPrizeDescription(newInput || '')\r\n }\r\n\r\n function startChangeNoOfPrizes(number, fast) {\r\n handleChangeNoOfPrizes(number)\r\n\r\n let fastSpeedCount = 10\r\n let intervalId = setInterval(\r\n () => {\r\n handleChangeNoOfPrizes(number)\r\n\r\n fastSpeedCount--\r\n if (fastSpeedCount === 0 && !fast) {\r\n stopChangeNoOfPrizes()\r\n startChangeNoOfPrizes(number, true)\r\n }\r\n },\r\n fast ? 50 : 200\r\n )\r\n\r\n buttonHoldIntervalRef.current = intervalId\r\n }\r\n\r\n function stopChangeNoOfPrizes() {\r\n clearInterval(buttonHoldIntervalRef.current)\r\n }\r\n\r\n const handleChangeNoOfPrizes = number => {\r\n // number = 1 || -1\r\n\r\n if (noOfPrizes === 0 && number === -1) {\r\n return\r\n }\r\n\r\n setNoOfPrizes(noOfPrizes =>\r\n noOfPrizes + number > 0 ? noOfPrizes + number : 0\r\n )\r\n }\r\n\r\n const locationsDropdownClicked = () => {\r\n setShowLocationDropdown(!showLocationDropdown)\r\n }\r\n\r\n const handleAddImage = () => {\r\n inputImageRef.current.click()\r\n }\r\n\r\n const valuesPerLineAreEqualTo = (valuesString, number) => {\r\n const values = valuesString?.split('\\n')\r\n\r\n const allValuesNotNullOrEmpty = values?.every(x => x !== null && x !== '')\r\n\r\n return allValuesNotNullOrEmpty && values?.length === number\r\n }\r\n\r\n const validPrizeCodes = () => {\r\n if (!havePrizeCodes) {\r\n return true\r\n }\r\n\r\n if (singlePrizeCode) {\r\n return valuesPerLineAreEqualTo(prizeCodes, 1)\r\n } else {\r\n return valuesPerLineAreEqualTo(\r\n prizeCodes,\r\n noOfPrizes - (givenPrizesNo || 0)\r\n )\r\n }\r\n }\r\n\r\n const getPrizeCodesText = () => {\r\n if (singlePrizeCode) {\r\n return 'one prize code'\r\n }\r\n\r\n return `${noOfPrizes - (givenPrizesNo || 0)} prize codes (${\r\n givenPrizesNo || 0\r\n } given)`\r\n }\r\n\r\n const handleHaveInstantPrizeCodesCheckbox = havePrizeCodes => {\r\n setHavePrizeCodes(havePrizeCodes)\r\n\r\n if (!havePrizeCodes) {\r\n setPrizeCodes()\r\n setSinglePrizeCode()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (selectedChallenge) {\r\n setTitle(selectedChallenge.Title)\r\n setDescription(selectedChallenge.Description)\r\n setPrize(selectedChallenge.Prize)\r\n setPrizeDescription(selectedChallenge.PrizeDescription)\r\n setNoOfPrizes(selectedChallenge.NoOfPrizes)\r\n setPrizeCodes(selectedChallenge.PrizeCodes?.join('\\n') || '')\r\n setStartDate(selectedChallenge.StartDate)\r\n setEndDate(selectedChallenge.EndDate)\r\n setHavePrizeCodes(!!selectedChallenge.PrizeCodes?.length)\r\n setSinglePrizeCode(selectedChallenge.SinglePrizeCode)\r\n setGivenPrizesNo(\r\n selectedChallenge.NoOfPrizes - selectedChallenge.NoOfPrizesLeft\r\n )\r\n dispatch(getChallengeLocations(selectedChallenge.ID))\r\n\r\n if (selectedChallenge.ImageURL) {\r\n setSelectedImage(selectedChallenge.ImageURL)\r\n }\r\n\r\n dispatch(setCurrentChallengeTasks(selectedChallenge.Steps))\r\n } else {\r\n dispatch(setCurrentChallengeTasks(null))\r\n }\r\n }, [dispatch, selectedChallenge])\r\n\r\n // auto-select Business from first challenge location\r\n useEffect(() => {\r\n if (selectedChallenge && businesses && challengeLocations) {\r\n setSelectedBusinessId(challengeLocations[0]?.Business.Id)\r\n }\r\n }, [selectedChallenge, businesses, challengeLocations])\r\n\r\n useEffect(() => {\r\n setSelectedChallengeLocations(challengeLocations)\r\n }, [challengeLocations])\r\n\r\n useEffect(() => {\r\n setSelectedLocationsIds(null)\r\n setSelectedChallengeLocations(null)\r\n }, [selectedBusinessId])\r\n\r\n return (\r\n <>\r\n
Challenge Information
\r\n\r\n
\r\n setShowBusinessDropdown(false)}>\r\n setShowBusinessDropdown(!showBusinessDropdown)}>\r\n x.Id === selectedBusinessId\r\n )}\r\n />\r\n \r\n
\r\n \r\n\r\n setShowLocationDropdown(false)}>\r\n {\r\n if (selectedBusinessId) {\r\n setShowLocationDropdown(true)\r\n } else {\r\n alert(selectBusinessMessage)\r\n }\r\n }}>\r\n !selectedBusinessId || x.Business.Id === selectedBusinessId\r\n )}\r\n showOptions={selectedBusinessId && showLocationDropdown}\r\n setShowOptions={setShowLocationDropdown}\r\n setSelectedData={setSelectedLocationsIds}\r\n preselectedData={selectedChallengeLocations}\r\n multiple={true}\r\n clearOptionsIfValueChange={selectedBusinessId}\r\n />\r\n {\r\n e.stopPropagation()\r\n setShowBusinessDropdown(false)\r\n if (selectedBusinessId) {\r\n locationsDropdownClicked()\r\n } else {\r\n alert(selectBusinessMessage)\r\n }\r\n }}>\r\n \r\n \r\n \r\n \r\n\r\n \r\n
max 50 characters
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n No. of prizes\r\n\r\n
\r\n startChangeNoOfPrizes(-1)}\r\n onMouseUp={() => stopChangeNoOfPrizes()}\r\n onTouchStart={() => startChangeNoOfPrizes(-1)}\r\n onTouchEnd={() => stopChangeNoOfPrizes()}\r\n className={noOfPrizes === 0 ? 'disabled-button' : ''}>\r\n -\r\n \r\n {noOfPrizes}\r\n startChangeNoOfPrizes(1)}\r\n onMouseUp={() => stopChangeNoOfPrizes()}\r\n onTouchStart={() => startChangeNoOfPrizes(1)}\r\n onTouchEnd={() => stopChangeNoOfPrizes()}>\r\n +\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n handleHaveInstantPrizeCodesCheckbox(!havePrizeCodes)\r\n }\r\n />\r\n \r\n Instant prize codes\r\n \r\n
\r\n\r\n {havePrizeCodes && (\r\n
\r\n setSinglePrizeCode(!singlePrizeCode)}\r\n />\r\n \r\n Single code\r\n \r\n
\r\n )}\r\n
\r\n\r\n {havePrizeCodes && (\r\n <>\r\n setPrizeCodes(e.target.value || '')}>\r\n
{getPrizeCodesText()}
\r\n \r\n )}\r\n\r\n
\r\n
\r\n setStartDate(date)}\r\n value={startDate}\r\n />\r\n \r\n
\r\n\r\n
\r\n setEndDate(date)}\r\n value={endDate}\r\n />\r\n \r\n
\r\n
\r\n\r\n setDescription(e.target.value || '')}>\r\n
max 250 characters
\r\n\r\n

Challenge tasks

\r\n\r\n
\r\n {selectedChallengeTasks?.map((x, index) => (\r\n {\r\n if (e.currentTarget === e.target) {\r\n taskClicked(index)\r\n }\r\n }}>\r\n taskClicked(index)}>\r\n {index + 1}\r\n \r\n taskClicked(index)}>\r\n {x.ChallengeStepType.Name}\r\n \r\n removeTask(index)}\r\n className='challenge-task-remove'>\r\n X\r\n \r\n
\r\n ))}\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n {/* Browse Photo */}\r\n {!selectedImage && (\r\n <>\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n browse icon\r\n

Photo

\r\n
\r\n \r\n )}\r\n\r\n {/* Show Photo */}\r\n {selectedImage && (\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n \r\n\r\n
\r\n \r\n handleSecondPageContent(selectedChallenge ? 'ChallengeDetails' : '')\r\n }>\r\n Cancel\r\n
\r\n 0 &&\r\n validPrizeCodes()\r\n ? 'save-btn-enabled'\r\n : 'save-btn-disabled'\r\n }\r\n onClick={handleSaveChallenge}>\r\n Save\r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\r\nimport ClickAwayListener from 'react-click-away-listener'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport {\r\n getChallengeStepTypes,\r\n updateCurrentChallengeTask,\r\n} from '../../actions/challengesActions'\r\nimport common from '../../common'\r\nimport CustomSelect from '../CustomSelect/CustomSelect'\r\nimport './AddChallengeTask.scss'\r\n\r\nexport default function AddChallengeTask(props) {\r\n const handleThirdPageContent = props.handleThirdPageContent\r\n\r\n const dispatch = useDispatch()\r\n\r\n const selectedChallengeTasks = useSelector(\r\n state => state.challenges.currentChallengeTasks\r\n )\r\n const selectedChallengeTaskIndex = useSelector(\r\n state => state.challenges.currentChallengeTaskIndex\r\n )\r\n const selectedChallengeTask =\r\n selectedChallengeTasks &&\r\n typeof selectedChallengeTaskIndex == 'number' &&\r\n selectedChallengeTasks[selectedChallengeTaskIndex]\r\n\r\n const stepTypes = useSelector(state => state.challenges.stepTypes) || []\r\n // const locations = useSelector(state => state.locations.locations)\r\n\r\n const [showTaskSelectDropdown, setShowTaskSelectDropdown] = useState()\r\n const [selectedStepId, setSelectedStepId] = useState()\r\n const [addressName, setAddressName] = useState()\r\n const [url, setUrl] = useState()\r\n const [callToAction, setCallToAction] = useState()\r\n const [latitude, setLatitude] = useState()\r\n const [longitude, setLongitude] = useState()\r\n const [selectedImage, setSelectedImage] = useState()\r\n const [selectedImageFormData, setSelectedImageFormData] = useState()\r\n const [noOfUsers, setNoOfUsers] = useState(0)\r\n const [description, setDescription] = useState()\r\n const [customTitle, setCustomTitle] = useState()\r\n const [shouldGoToBusinessLocation, setShouldGoToBusinessLocation] = useState()\r\n\r\n // const [showLocationDropdown, setShowLocationDropdown] = useState()\r\n // const [selectedLocationId, setSelectedLocationId] = useState()\r\n\r\n const placeInputRef = useRef()\r\n const inputImageRef = useRef()\r\n\r\n const tasksSelectClicked = () => {\r\n setShowTaskSelectDropdown(!showTaskSelectDropdown)\r\n }\r\n\r\n const handleAddImage = () => {\r\n inputImageRef.current.click()\r\n }\r\n\r\n const fileSelectedHandler = event => {\r\n if (event.target.files.length !== 0) {\r\n const reader = new FileReader()\r\n reader.onload = () => {\r\n if (reader.readyState === 2) {\r\n setSelectedImage(reader.result)\r\n }\r\n }\r\n reader.readAsDataURL(event.target.files[0])\r\n setSelectedImageFormData(event.target.files[0])\r\n }\r\n }\r\n\r\n const handleImageRemoval = () => {\r\n setSelectedImage(null)\r\n setSelectedImageFormData(null)\r\n }\r\n\r\n // const locationsDropdownClicked = () => {\r\n // setShowLocationDropdown(!showLocationDropdown)\r\n // }\r\n\r\n const addressSelected = e => {\r\n if (e.target.value) {\r\n setAddressName(e.target.value)\r\n } else {\r\n setLatitude(null)\r\n setLongitude(null)\r\n setAddressName(null)\r\n }\r\n }\r\n\r\n const handleChangeNoOfUsers = number => {\r\n // number = 1 || -1\r\n\r\n if (\r\n (noOfUsers === 0 && number === -1) ||\r\n (noOfUsers === 10 && number === 1)\r\n ) {\r\n return\r\n }\r\n\r\n setNoOfUsers(noOfPrizes => noOfPrizes + number)\r\n }\r\n\r\n const handleGoToBusinessLocation = () => {\r\n setShouldGoToBusinessLocation(!shouldGoToBusinessLocation)\r\n }\r\n\r\n const initPlaceAPI = useCallback(() => {\r\n if (\r\n selectedChallengeTask &&\r\n selectedChallengeTask.Latitude &&\r\n selectedChallengeTask.Longitude\r\n ) {\r\n const geocoder = new window.google.maps.Geocoder()\r\n const latlng = {\r\n lat: parseFloat(selectedChallengeTask.Latitude),\r\n lng: parseFloat(selectedChallengeTask.Longitude),\r\n }\r\n\r\n geocoder.geocode({ location: latlng }).then(response => {\r\n const addressName = response.results[0].formatted_address\r\n setAddressName(addressName)\r\n })\r\n } else {\r\n setAddressName('')\r\n }\r\n\r\n const autocomplete = new window.google.maps.places.Autocomplete(\r\n placeInputRef.current\r\n )\r\n\r\n new window.google.maps.event.addListener(\r\n autocomplete,\r\n 'place_changed',\r\n function () {\r\n let place = autocomplete.getPlace()\r\n setAddressName(place.formatted_address)\r\n setLatitude(place.geometry.location.lat())\r\n setLongitude(place.geometry.location.lng())\r\n }\r\n )\r\n }, [selectedChallengeTask])\r\n\r\n const handleSaveChallengeTask = () => {\r\n if (!canSave()) {\r\n return\r\n }\r\n\r\n if (selectedStepId) {\r\n let editedTask = selectedChallengeTask\r\n ? {\r\n // edit\r\n ID: selectedChallengeTask.ID,\r\n ChallengeStepType: stepTypes.find(x => x.ID === selectedStepId),\r\n Description: description,\r\n ImageURL: selectedImage,\r\n Latitude: latitude,\r\n Longitude: longitude,\r\n NoOfUsers: noOfUsers,\r\n Title:\r\n customTitle ||\r\n stepTypes.find(x => x.ID === selectedStepId)?.Name ||\r\n '',\r\n CallToAction: callToAction,\r\n URL: url,\r\n ShouldGoToBusinessLocation: shouldGoToBusinessLocation,\r\n }\r\n : {\r\n // new\r\n ChallengeStepType: stepTypes.find(x => x.ID === selectedStepId),\r\n Description: description,\r\n ImageURL: selectedImage,\r\n Latitude: latitude,\r\n Longitude: longitude,\r\n NoOfUsers: noOfUsers,\r\n Title:\r\n customTitle ||\r\n stepTypes.find(x => x.ID === selectedStepId)?.Name ||\r\n '',\r\n CallToAction: callToAction,\r\n URL: url,\r\n ShouldGoToBusinessLocation: shouldGoToBusinessLocation,\r\n }\r\n\r\n dispatch(\r\n updateCurrentChallengeTask(\r\n editedTask,\r\n selectedChallengeTaskIndex,\r\n selectedImageFormData,\r\n handleThirdPageContent\r\n )\r\n )\r\n }\r\n }\r\n\r\n const getCurrentStepAction = () =>\r\n stepTypes.find(x => x.ID === selectedStepId)?.Action\r\n\r\n const canSave = () => {\r\n if (!selectedStepId) return false\r\n if (\r\n getCurrentStepAction() === 'Location' &&\r\n !latitude &&\r\n !shouldGoToBusinessLocation\r\n )\r\n return false\r\n if (getCurrentStepAction() === 'InternalShare' && !noOfUsers) return false\r\n if (getCurrentStepAction() === 'ExternalShare' && !description) return false\r\n if (getCurrentStepAction() === 'Image' && !description) return false\r\n if (getCurrentStepAction() === 'Video' && !description) return false\r\n if (getCurrentStepAction() === 'Text' && !description) return false\r\n if (getCurrentStepAction() === 'URL' && !url) return false\r\n if (getCurrentStepAction() === 'URL' && !callToAction) return false\r\n return true\r\n }\r\n\r\n useEffect(() => {\r\n initPlaceAPI()\r\n if (selectedChallengeTask) {\r\n setDescription(selectedChallengeTask.Description)\r\n setLatitude(selectedChallengeTask.Latitude)\r\n setLongitude(selectedChallengeTask.Longitude)\r\n setNoOfUsers(selectedChallengeTask.NoOfUsers)\r\n setSelectedImage(selectedChallengeTask.ImageURL)\r\n setCustomTitle(selectedChallengeTask.Title)\r\n setUrl(selectedChallengeTask.URL)\r\n setCallToAction(selectedChallengeTask.CallToAction)\r\n setShouldGoToBusinessLocation(\r\n selectedChallengeTask.ShouldGoToBusinessLocation\r\n )\r\n } else {\r\n setSelectedStepId(null)\r\n setDescription(null)\r\n setLatitude(null)\r\n setLongitude(null)\r\n setNoOfUsers(null)\r\n setSelectedImage(null)\r\n setCustomTitle(null)\r\n setUrl(null)\r\n setCallToAction(null)\r\n setShouldGoToBusinessLocation(true)\r\n }\r\n }, [selectedChallengeTask, initPlaceAPI])\r\n\r\n useEffect(() => {\r\n if (stepTypes.length === 0) {\r\n dispatch(getChallengeStepTypes())\r\n }\r\n }, [dispatch, stepTypes])\r\n\r\n return (\r\n <>\r\n
Add task
\r\n\r\n
\r\n setShowTaskSelectDropdown(false)}>\r\n \r\n \r\n \r\n
\r\n \r\n\r\n x.ID === selectedStepId)?.Name || 'Custom title'\r\n }\r\n aria-label='Title'\r\n className='form-control text-input add-input'\r\n value={customTitle || ''}\r\n onChange={e => setCustomTitle(e.target.value || '')}\r\n />\r\n\r\n \r\n handleGoToBusinessLocation()}\r\n />\r\n \r\n Go to business location\r\n \r\n \r\n\r\n \r\n\r\n setUrl(e.target.value || '')}\r\n value={url}\r\n />\r\n\r\n setCallToAction(e.target.value || '')}\r\n value={callToAction}\r\n maxLength='12'\r\n />\r\n\r\n {getCurrentStepAction() === 'InternalShare' && (\r\n
\r\n No. of users\r\n\r\n
\r\n handleChangeNoOfUsers(-1)}\r\n className={noOfUsers === 0 ? 'disabled-button' : ''}>\r\n -\r\n \r\n {noOfUsers || 0}\r\n handleChangeNoOfUsers(1)}\r\n className={noOfUsers === 10 ? 'disabled-button' : ''}>\r\n +\r\n \r\n
\r\n
\r\n )}\r\n\r\n {(getCurrentStepAction() === 'Location' || // optional\r\n getCurrentStepAction() === 'InternalShare' || // optional\r\n getCurrentStepAction() === 'URL' || //optional\r\n getCurrentStepAction() === 'ExternalShare' || // mandatory\r\n getCurrentStepAction() === 'Image' || // mandatory\r\n getCurrentStepAction() === 'Video' || // mandatory\r\n getCurrentStepAction() === 'Text') && ( // mandatory\r\n
\r\n setDescription(e.target.value || '')}>\r\n
max 100 characters
\r\n
\r\n )}\r\n\r\n {/* Photo */}\r\n
\r\n {!selectedImage && (\r\n <>\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n browse icon\r\n

Logo

\r\n
\r\n \r\n )}\r\n\r\n {selectedImage && (\r\n
\r\n
\r\n )}\r\n \r\n\r\n {/* List of Business Locations */}\r\n {/* setShowLocationDropdown(false)}>\r\n \r\n \r\n \r\n \r\n */}\r\n\r\n {/* Task image */}\r\n {/*
\r\n {!selectedImage && (\r\n
\r\n +\r\n
\r\n \r\n
\r\n
\r\n )}\r\n\r\n {selectedImage && (\r\n <>\r\n
*/}\r\n \r\n\r\n
\r\n
handleThirdPageContent('')}>\r\n Cancel\r\n
\r\n \r\n Save\r\n
\r\n \r\n \r\n )\r\n}\r\n","import './AddLocation.scss'\n\nimport React, { useEffect, useRef, useState } from 'react'\nimport ClickAwayListener from 'react-click-away-listener'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport {\n clearLocationsError,\n getLocationTypesAction,\n saveLocation,\n} from '../../actions/locationsActions'\nimport common from '../../common'\nimport CustomSelect from '../CustomSelect/CustomSelect'\n\nexport default function AddLocation(props) {\n const selectedLocation = props.location\n const handleSecondPageContent = props.handleSecondPageContent\n const handleThirdPageContent = props.handleThirdPageContent\n\n const locationsState = useSelector(state => state.locations)\n const businesses = useSelector(state => state.businesses.businesses)\n const locationTypes = useSelector(state => state.locations.locationTypes)\n const currentUser = useSelector(state => state.users.currentUser)\n const openHours = useSelector(\n state => state.locations.currentLocation?.OpenHours\n )\n\n const [location, setLocation] = useState()\n const [name, setName] = useState()\n const [addressName, setAddressName] = useState()\n const [description, setDescription] = useState()\n const [longitude, setLongitude] = useState()\n const [latitude, setLatitude] = useState()\n const [businessId, setBusinessId] = useState()\n const [locationTypeId, setLocationTypeId] = useState()\n const [locationImages, setLocationImages] = useState([])\n const [selectedFormDataArray, setSelectedFormDataArray] = useState([])\n const [showBusinessSelect, setShowBusinessSelect] = useState(false)\n const [showTypesSelect, setShowTypesSelect] = useState(false)\n const [predefImages, setPredefImages] = useState([])\n const inputImageRef = useRef()\n\n const placeInputRef = useRef()\n\n let numerOfPredefImages = (selectedLocation && predefImages?.length) || 0\n const dispatch = useDispatch()\n\n const handleImageRemoval = imag => {\n let images = [...(locationImages || [])]\n let formDatas = [...(selectedFormDataArray || [])]\n const index = images.indexOf(imag)\n if (index > -1) {\n images.splice(index, 1)\n\n if (index >= numerOfPredefImages) {\n // It was deleted an image added in this session so we also delete the form data\n formDatas.splice(index - numerOfPredefImages, 1)\n } else {\n // It was deleted an existing image\n --numerOfPredefImages\n let imagesP = [...(predefImages || [])]\n imagesP.splice(index, 1)\n if (location) {\n let cntPos = 0\n while (cntPos < numerOfPredefImages) {\n imagesP[cntPos].Position = cntPos\n ++cntPos\n }\n setPredefImages(imagesP)\n }\n }\n }\n setLocationImages(images)\n setSelectedFormDataArray(formDatas)\n }\n\n const fileSelectedHandler = event => {\n if (event.target.files.length !== 0) {\n const file = event.target.files[0]\n const reader = new FileReader()\n reader.onload = () => {\n if (reader.readyState === 2) {\n setLocationImages([...locationImages, reader.result])\n }\n }\n reader.readAsDataURL(file)\n setSelectedFormDataArray([...selectedFormDataArray, file])\n }\n }\n\n if (locationsState.error) {\n alert(locationsState.error)\n dispatch(clearLocationsError())\n }\n\n const initPlaceAPI = () => {\n const autocomplete = new window.google.maps.places.Autocomplete(\n placeInputRef.current\n )\n\n new window.google.maps.event.addListener(\n autocomplete,\n 'place_changed',\n function () {\n let place = autocomplete.getPlace()\n setAddressName(place.formatted_address)\n setLatitude(place.geometry.location.lat())\n setLongitude(place.geometry.location.lng())\n }\n )\n }\n\n const addressSelected = e => {\n if (e.target.value) {\n setAddressName(e.target.value)\n } else {\n setLatitude(null)\n setLongitude(null)\n }\n }\n\n const businessesSelectClicked = () => {\n setShowBusinessSelect(!showBusinessSelect)\n setShowTypesSelect(false)\n }\n\n const typesSelectClicked = () => {\n setShowTypesSelect(!showTypesSelect)\n setShowBusinessSelect(false)\n }\n\n const handleSaveLocation = () => {\n if (\n name &&\n addressName &&\n latitude &&\n longitude &&\n businessId &&\n locationTypeId &&\n description &&\n locationImages[0]\n ) {\n let editedLocation = location\n ? {\n // edit\n ID: location.ID,\n Admins: location.Admins.map(a => a.ID),\n BusinessTypeID: locationTypeId,\n BusinessId: businessId,\n Confirmed: location.Confirmed,\n Description: description,\n Latitude: latitude,\n Longitude: longitude,\n LocationName: addressName,\n Name: name,\n Images: predefImages,\n OpenHours: openHours,\n }\n : {\n // new\n Admins: [currentUser.ID],\n BusinessTypeID: locationTypeId,\n BusinessId: businessId,\n Confirmed: false,\n Description: description,\n Latitude: latitude,\n Longitude: longitude,\n LocationName: addressName,\n Name: name,\n OpenHours: openHours,\n }\n\n dispatch(\n saveLocation(\n editedLocation,\n selectedFormDataArray,\n handleSecondPageContent,\n currentUser\n )\n )\n }\n }\n\n const handleAddImage = () => {\n inputImageRef.current.click()\n }\n\n useEffect(() => {\n dispatch(getLocationTypesAction())\n }, [dispatch])\n\n useEffect(() => {\n setLocation(selectedLocation)\n initPlaceAPI()\n if (location) {\n setName(location.Name)\n setAddressName(location.LocationName)\n setLatitude(location.Latitude)\n setLongitude(location.Longitude)\n setDescription(location.Description)\n let images = location.Images\n if (images) {\n images.sort((a, b) => a.Position - b.Position)\n }\n setPredefImages(images)\n\n let editImages = images?.map(img => `${common.imagesBaseUrl}/${img.URL}`)\n\n setLocationImages(editImages)\n }\n }, [location, selectedLocation])\n\n return (\n <>\n
Location Information
\n\n
\n setName(e.target.value || '')}\n value={name}\n autoComplete='off'\n />\n\n \n\n setShowBusinessSelect(false)}>\n \n \n \n
\n \n\n setShowTypesSelect(false)}>\n \n \n \n \n \n\n
\n setDescription(e.target.value || '')}>\n {!description && (\n
max 100 characters
\n )}\n
\n\n

Open hours

\n\n handleThirdPageContent('OpenHours')}>\n + Add\n \n\n

Photos

\n\n
\n {locationImages?.length > 0 &&\n locationImages.map((img, index) => {\n return (\n
\n \n\n handleImageRemoval(img)}>\n \n
\n
\n )\n })}\n\n {locationImages?.length < 3 && (\n
\n
\n \n \n
\n
\n \n \n

Photo

\n
\n
\n \n )}\n \n\n {!locationImages[0] && (\n

Add at least one photo

\n )}\n \n\n
\n \n handleSecondPageContent(location ? 'LocationDetails' : '')\n }>\n Cancel\n
\n \n Save\n \n \n \n )\n}\n","import './RejectModal.scss'\n\nimport React from 'react'\nimport { useState } from 'react'\n\nexport default function RejectModal(props) {\n const element = props.element\n const setOpenModal = props.setOpenModal\n const proceedReject = props.proceedReject\n\n const [rejectionMessage, setRejectionMessage] = useState()\n\n return (\n <>\n
\n reject\n\n
\n

\n Are you sure you want to decline this {element}?\n

\n\n \n setRejectionMessage(e.target.value || '')\n }>\n
\n\n
\n setOpenModal(false)}>\n Cancel\n
\n\n proceedReject(rejectionMessage)}>\n I'm sure\n
\n \n \n \n )\n}\n","import './StepToApprove.scss'\r\n\r\nimport ImageZoom from '@moorecp/react-medium-image-zoom/lib/ImageZoom'\r\nimport moment from 'moment'\r\nimport React, { useState } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { Modal } from 'react-responsive-modal'\r\n\r\nimport {\r\n approveChallengeStepSubmit,\r\n getUserChallengeSubmits,\r\n rejectChallengeStepSubmit,\r\n setCurrentChallengeSubmitId,\r\n} from '../../actions/challengesActions'\r\nimport common from '../../common'\r\nimport RejectModal from '../DeleteModal/RejectModal'\r\n\r\nexport default function StepToApprove(props) {\r\n const stepToApprove = props.stepToApprove\r\n const handleThirdPageContent = props.handleThirdPageContent\r\n const isThirdPage = props.isThirdPage\r\n\r\n const dispatch = useDispatch()\r\n\r\n const { currentChallengeSubmitId } = useSelector(state => state.challenges)\r\n\r\n const [rejectStepSubmitModalOpen, setRejectStepSubmitModalOpen] =\r\n useState(false)\r\n\r\n const approveStepSubmit = () => {\r\n dispatch(approveChallengeStepSubmit(stepToApprove.ID))\r\n }\r\n\r\n const rejectStepSubmit = rejectionMessage => {\r\n dispatch(rejectChallengeStepSubmit(stepToApprove.ID, rejectionMessage))\r\n setRejectStepSubmitModalOpen(false)\r\n }\r\n\r\n const showAllSubmits = open => {\r\n dispatch(setCurrentChallengeSubmitId(stepToApprove.ID))\r\n dispatch(\r\n getUserChallengeSubmits(\r\n stepToApprove.ChallengeID,\r\n stepToApprove.User.ID,\r\n stepToApprove.BusinessPinId\r\n )\r\n )\r\n handleThirdPageContent(\r\n 'UserSubmits',\r\n stepToApprove.ID !== currentChallengeSubmitId\r\n )\r\n }\r\n\r\n return (\r\n
\r\n setRejectStepSubmitModalOpen(false)}\r\n center>\r\n \r\n \r\n\r\n

\r\n \r\n {moment\r\n .utc(stepToApprove.Created, 'YYYY-MM-DD HH:mm')\r\n .local()\r\n .format('MMMM Do YYYY')}\r\n \r\n \r\n {moment\r\n .utc(stepToApprove.Created, 'YYYY-MM-DD HH:mm')\r\n .local()\r\n .format('h:mm A')}\r\n \r\n

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

\r\n {stepToApprove.User.FullName}\r\n

\r\n

{stepToApprove.User.Email}

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

\r\n {stepToApprove.ChallengeStepDescription}\r\n

\r\n\r\n {stepToApprove.Text && (\r\n

{stepToApprove.Text}

\r\n )}\r\n\r\n {stepToApprove.ImageURL && (\r\n \r\n )}\r\n\r\n {stepToApprove.VideoURL && (\r\n \r\n )}\r\n\r\n {!isThirdPage && (\r\n
showAllSubmits()}>\r\n All Submits\r\n
\r\n )}\r\n\r\n {stepToApprove.Approved ? (\r\n Approved\r\n ) : stepToApprove.RejectionMessage ? (\r\n Declined\r\n ) : (\r\n <>\r\n
approveStepSubmit()}>\r\n Approve\r\n
\r\n setRejectStepSubmitModalOpen(true)}>\r\n Decline\r\n
\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import './Approvals.scss'\n\nimport React from 'react'\nimport { useDispatch } from 'react-redux'\nimport { useSelector } from 'react-redux'\n\nimport {\n approveChallengeStepSubmits,\n approveMultipleChallengeStepSubmits,\n} from '../../actions/challengesActions'\nimport StepToApprove from './StepToApprove'\n\nexport default function Approvals(props) {\n const challenge = props.challenge\n const handleThirdPageContent = props.handleThirdPageContent\n const forThirdPage = props.forThirdPage\n\n const dispatch = useDispatch()\n\n const {\n currentChallengeUserSubmits,\n stepsToApprove,\n displayedBySeeAllButton,\n } = useSelector(state => state.challenges)\n\n const steps = forThirdPage ? currentChallengeUserSubmits : stepsToApprove\n\n const approveAllStepSubmits = () => {\n // that are not already rejected\n if (displayedBySeeAllButton) {\n const challengeSubmitsIds = steps.map(step => step.ID)\n dispatch(approveMultipleChallengeStepSubmits(challengeSubmitsIds))\n } else {\n dispatch(approveChallengeStepSubmits(challenge.ID))\n }\n }\n\n return (\n <>\n
\n {forThirdPage ? (\n Challenge Submits By User\n ) : (\n Approvals {displayedBySeeAllButton && ' - All'}\n )}\n
\n\n
\n {!steps?.length && (\n
\n

There are no submits to approve for this challenge

\n
\n )}\n\n {steps?.length > 0 &&\n steps.map((stepToApprove, index) => {\n return (\n \n )\n })}\n
\n\n
\n approveAllStepSubmits(true)}>\n Approve all\n
\n \n \n )\n}\n","import moment from 'moment'\n\nexport const formatDate = date => {\n return moment(date).format('DD.MM.YYYY')\n}\n","import './Challenge.scss'\n\nimport React from 'react'\n\nimport common from '../../common'\nimport { formatDate } from '../../utils/helpers'\n\nexport default function Challenge(props) {\n let challenge = props.challenge\n let clickEvent = props.customClickEvent\n let currentChallengeId = props.currentChallengeId\n\n return (\n clickEvent(challenge)}>\n
\n
\n
\n
{challenge.Title}
\n
{challenge.Description}
\n
\n {challenge.NoOfParticipants} took the challenge\n
\n
\n Date: {formatDate(challenge.StartDate)} -{' '}\n {formatDate(challenge.EndDate)}\n
\n
\n {challenge.NoOfPrizes} prizes\n
\n
\n \n )\n}\n","import './OngoingChallenges.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch } from 'react-redux'\nimport { useSelector } from 'react-redux'\n\nimport {\n clearChallengesError,\n getAllChallengeStepSubmitsToApprove,\n getChallengeStepsToApprove,\n setCurrentChallenge,\n} from '../../actions/challengesActions'\nimport Challenge from '../Challenge/Challenge'\n\nexport default function OngoingChallenges(props) {\n const handleSecondPageContent = props.handleSecondPageContent\n const challenges = props.challenges\n\n const dispatch = useDispatch()\n const challengesState = useSelector(state => state.challenges)\n const currentUser = useSelector(state => state.users.currentUser)\n\n if (challengesState.error) {\n alert(challengesState.error)\n dispatch(clearChallengesError())\n }\n\n const [selectedChallengeId, setSelectedChallengeId] = useState()\n\n const fetchAllChallengeStepsToApprove = () => {\n setSelectedChallengeId(null)\n dispatch(getAllChallengeStepSubmitsToApprove())\n handleSecondPageContent('Approvals', !!selectedChallengeId)\n }\n\n const challengeClicked = challenge => {\n setSelectedChallengeId(challenge.ID)\n dispatch(setCurrentChallenge(challenge.ID))\n dispatch(getChallengeStepsToApprove(challenge.ID))\n handleSecondPageContent('Approvals', selectedChallengeId !== challenge.ID)\n }\n\n return (\n <>\n
\n Ongoing Challenges\n {currentUser._isAdmin && (\n \n See All\n \n )}\n
\n\n
\n {!challenges?.length && (\n <>\n
\n challenges\n\n

Add challenges for your customers to make shopping more fun

\n
\n \n )}\n\n {challenges?.length > 0 &&\n props.challenges.map((challenge, index) => {\n return (\n \n )\n })}\n
\n \n )\n}\n","import './DeleteModal.scss'\n\nimport React from 'react'\n\nexport default function DeleteModal(props) {\n const error = props.error\n const element = props.element\n const setOpenModal = props.setOpenModal\n const proceedDelete = props.proceedDelete\n\n return (\n <>\n \n )}\n \n \n \n )\n}\n","import './BusinessDetails.scss'\r\n\r\nimport ImageZoom from '@moorecp/react-medium-image-zoom'\r\nimport React, { useState } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { Modal } from 'react-responsive-modal'\r\n\r\nimport { deleteBusiness } from '../../actions/businessesActions'\r\nimport common from '../../common'\r\nimport DeleteModal from '../DeleteModal/DeleteModal'\r\n\r\nexport default function BusinessDetails(props) {\r\n let business = props.business\r\n const handleSecondPageContent = props.handleSecondPageContent\r\n const [openModal, setOpenModal] = useState(false)\r\n const dispatch = useDispatch()\r\n\r\n const editClicked = () => {\r\n handleSecondPageContent('EditBusiness')\r\n }\r\n\r\n const deleteClicked = () => {\r\n setOpenModal(true)\r\n }\r\n\r\n const proceedDeleteBusiness = () => {\r\n dispatch(deleteBusiness(business.Id, handleSecondPageContent))\r\n setOpenModal(false)\r\n }\r\n\r\n return (\r\n <>\r\n
{business.Name}
\r\n\r\n
\r\n
\r\n {business.LogoUrl ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
Business name:
\r\n
{business.Name}
\r\n
\r\n
\r\n
Address:
\r\n
{business.Address}
\r\n
\r\n
\r\n
Administrator:
\r\n
{business.Administrator}
\r\n
\r\n
\r\n
Registration code:
\r\n
{business.Cui}
\r\n
\r\n
\r\n
Phone number:
\r\n
{business.PhoneNumber}
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Delete\r\n
\r\n
\r\n Edit\r\n
\r\n
\r\n\r\n setOpenModal(false)} center>\r\n \r\n \r\n \r\n )\r\n}\r\n","import './Business.scss'\n\nimport React from 'react'\n\nimport common from '../../common'\n\nexport default function Business(props) {\n let business = props.business\n let clickEvent = props.customClickEvent\n let currentBusinessId = props.currentBusinessId\n\n return (\n
\n clickEvent(business)}>\n
\n \n
\n
\n
\n
{business.Name}
\n
{business.Address}
\n
\n
\n
\n \n )\n}\n","import './Businesses.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch } from 'react-redux'\n\nimport { setCurrentBusiness } from '../../actions/businessesActions'\nimport Business from '../Business/Business'\n\nexport default function Businesses(props) {\n const handleSecondPageContent = props.handleSecondPageContent\n\n const dispatch = useDispatch()\n const [selectedBusinessId, setSelectedBusinessId] = useState()\n\n const businessClicked = business => {\n setSelectedBusinessId(business.Id)\n dispatch(setCurrentBusiness(business.Id))\n handleSecondPageContent(\n 'BusinessDetails',\n selectedBusinessId !== business.Id\n )\n }\n\n const addClicked = () => {\n setSelectedBusinessId('')\n dispatch(setCurrentBusiness(''))\n handleSecondPageContent('AddBusiness')\n }\n\n return (\n <>\n
\n Business\n
\n\n
\n {props.businesses[0] &&\n props.businesses.map((business, index) => {\n return (\n \n )\n })}\n {!props?.businesses?.length && (\n <>\n
\n

Add your business

\n
\n \n )}\n
\n\n
\n
addClicked()}>\n + Add\n
\n
\n \n )\n}\n","import './ChallengeDetails.scss'\r\n\r\nimport ImageZoom from '@moorecp/react-medium-image-zoom'\r\nimport React, { useEffect, useState } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { Modal } from 'react-responsive-modal'\r\n\r\nimport {\r\n deleteChallenge,\r\n getChallengeLocations,\r\n setChallengeLocations,\r\n setCurrentChallengeTaskIndex,\r\n setCurrentChallengeTasks,\r\n} from '../../actions/challengesActions'\r\nimport common from '../../common'\r\nimport { formatDate } from '../../utils/helpers'\r\nimport DeleteModal from '../DeleteModal/DeleteModal'\r\n\r\nexport default function ChallengeDetails(props) {\r\n let challenge = props.challenge\r\n const handleSecondPageContent = props.handleSecondPageContent\r\n const handleThirdPageContent = props.handleThirdPageContent\r\n\r\n const currentUser = useSelector(state => state.users.currentUser)\r\n const challengeLocations = useSelector(state => state.challenges.locations)\r\n ?.map(x => x.Name)\r\n .join(', ')\r\n\r\n const [deleteModalOpen, setDeleteModalOpen] = useState(false)\r\n const [selectedChallengeTaskIndex, setSelectedChallengeTaskIndex] = useState()\r\n const dispatch = useDispatch()\r\n\r\n const editClicked = () => {\r\n handleSecondPageContent('EditChallenge')\r\n }\r\n\r\n const taskClicked = taskIndex => {\r\n setSelectedChallengeTaskIndex(taskIndex)\r\n dispatch(setCurrentChallengeTaskIndex(taskIndex))\r\n handleThirdPageContent(\r\n 'ChallengeTask',\r\n selectedChallengeTaskIndex !== taskIndex\r\n )\r\n }\r\n\r\n const proceedDeleteChallenge = () => {\r\n dispatch(deleteChallenge(challenge.ID, handleSecondPageContent))\r\n setDeleteModalOpen(false)\r\n }\r\n\r\n useEffect(() => {\r\n dispatch(setCurrentChallengeTasks(challenge.Steps))\r\n }, [dispatch, challenge])\r\n\r\n useEffect(() => {\r\n dispatch(getChallengeLocations(challenge.ID))\r\n\r\n return () => {\r\n dispatch(setChallengeLocations(null))\r\n }\r\n }, [dispatch, challenge.ID])\r\n\r\n return (\r\n <>\r\n setDeleteModalOpen(false)}\r\n center>\r\n 0 &&\r\n !currentUser._isAdmin &&\r\n \"You can't delete this challenge because it already has participants!\"\r\n }\r\n element='challenge'\r\n setOpenModal={setDeleteModalOpen}\r\n proceedDelete={proceedDeleteChallenge}\r\n />\r\n \r\n\r\n
\r\n
{challenge.Title}
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {challenge.NoOfParticipants} participants\r\n
\r\n
\r\n {challenge.NoOfFinishes} finished\r\n
\r\n
\r\n\r\n
\r\n
Business:
\r\n
{challenge.Business.Name}
\r\n
\r\n\r\n
\r\n
Locations:
\r\n
{challengeLocations || `...`}
\r\n
\r\n\r\n
\r\n
Description:
\r\n
{challenge.Description}
\r\n
\r\n\r\n
\r\n
Prize:
\r\n
{challenge.Prize}
\r\n
\r\n\r\n
\r\n
Prize description:
\r\n
{challenge.PrizeDescription}
\r\n
\r\n\r\n
\r\n
No of prizes:
\r\n
{challenge.NoOfPrizes}
\r\n
\r\n\r\n
\r\n
No of prizes left:
\r\n
{challenge.NoOfPrizesLeft}
\r\n
\r\n\r\n
\r\n
Start date:
\r\n
\r\n {formatDate(challenge.StartDate)}\r\n
\r\n
\r\n\r\n
\r\n
End date:
\r\n
\r\n {formatDate(challenge.EndDate)}\r\n
\r\n
\r\n\r\n
\r\n
Tasks:
\r\n
\r\n {challenge.Steps\r\n ? challenge.Steps?.map((x, index) => (\r\n taskClicked(index)}>\r\n \r\n {x.Position + 1}\r\n \r\n {x.ChallengeStepType.Name}\r\n
\r\n ))\r\n : `...`}\r\n
\r\n
\r\n\r\n
\r\n {challenge.ImageURL ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n \r\n\r\n
\r\n setDeleteModalOpen(true)}>\r\n Delete\r\n
\r\n
\r\n Edit\r\n
\r\n \r\n \r\n )\r\n}\r\n","import './Challenges.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch } from 'react-redux'\n\nimport {\n getAllChallengeInfo,\n setCurrentChallenge,\n} from '../../actions/challengesActions'\nimport Challenge from '../Challenge/Challenge'\n\nexport default function Challenges(props) {\n const handleSecondPageContent = props.handleSecondPageContent\n\n const dispatch = useDispatch()\n const [selectedChallengeId, setSelectedChallengeId] = useState()\n\n const challengeClicked = challenge => {\n setSelectedChallengeId(challenge.ID)\n dispatch(setCurrentChallenge(challenge.ID))\n dispatch(getAllChallengeInfo(challenge.ID))\n handleSecondPageContent(\n 'ChallengeDetails',\n selectedChallengeId !== challenge.ID\n )\n }\n\n const addClicked = () => {\n setSelectedChallengeId('')\n dispatch(setCurrentChallenge(''))\n handleSecondPageContent('AddChallenge')\n }\n\n return (\n <>\n
\n Challenges\n
\n\n
\n {!props?.challenges?.length && (\n <>\n
\n challenges\n\n

Add challenges for your customers to make shopping more fun

\n
\n \n )}\n\n {props?.challenges?.length > 0 &&\n props.challenges.map((challenge, index) => {\n return (\n \n )\n })}\n
\n\n
\n
addClicked()}>\n + Add\n
\n
\n \n )\n}\n","import './ChallengeTask.scss'\r\n\r\nimport ImageZoom from '@moorecp/react-medium-image-zoom'\r\nimport React from 'react'\r\nimport { useSelector } from 'react-redux'\r\n\r\nimport common from '../../common'\r\n\r\nexport default function ChallengeTask() {\r\n const selectedChallengeTasks = useSelector(\r\n state => state.challenges.currentChallengeTasks\r\n )\r\n const selectedChallengeTaskIndex = useSelector(\r\n state => state.challenges.currentChallengeTaskIndex\r\n )\r\n const selectedChallengeTask =\r\n selectedChallengeTasks[selectedChallengeTaskIndex]\r\n\r\n return (\r\n <>\r\n
Task
\r\n\r\n
\r\n
\r\n
\r\n {selectedChallengeTask.NoOfSubmits} submits\r\n
\r\n
\r\n {selectedChallengeTask.NoOfApproves} approved\r\n
\r\n
\r\n\r\n
\r\n
Position:
\r\n
\r\n {selectedChallengeTask.Position + 1}\r\n
\r\n
\r\n\r\n
\r\n
Type:
\r\n
\r\n {selectedChallengeTask.ChallengeStepType.Name}\r\n
\r\n
\r\n\r\n {selectedChallengeTask.Title && (\r\n
\r\n
Title:
\r\n
\r\n {selectedChallengeTask.Title}\r\n
\r\n
\r\n )}\r\n\r\n {selectedChallengeTask.Description && (\r\n
\r\n
Description:
\r\n
\r\n {selectedChallengeTask.Description}\r\n
\r\n
\r\n )}\r\n\r\n {!!selectedChallengeTask.NoOfUsers && (\r\n
\r\n
No. of users:
\r\n
\r\n {selectedChallengeTask.NoOfUsers}\r\n
\r\n
\r\n )}\r\n\r\n {selectedChallengeTask.Latitude && (\r\n
\r\n
Latitude:
\r\n
\r\n {selectedChallengeTask.Latitude}\r\n
\r\n
\r\n )}\r\n\r\n {selectedChallengeTask.Longitude && (\r\n
\r\n
Longitude:
\r\n
\r\n {selectedChallengeTask.Longitude}\r\n
\r\n
\r\n )}\r\n\r\n
\r\n
Go to business location:
\r\n
\r\n {selectedChallengeTask.ShouldGoToBusinessLocation ? 'Yes' : 'No'}\r\n
\r\n
\r\n\r\n {selectedChallengeTask.ImageURL && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import './ContactUs.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { clearUsersError, sendContactUsEmail } from '../../actions/usersActions'\nimport safePick from '../../utils/safePick'\n\nexport default function ContactUs() {\n const dispatch = useDispatch()\n const usersState = useSelector(state => state.users)\n const [contactData, setContactData] = useState({})\n const contactUsEmailSent = usersState.contactUsEmailSent\n\n // error handling\n if (usersState.error) {\n // TODO: show a nice pop-up\n alert(usersState.error)\n dispatch(clearUsersError())\n }\n\n const contactDataChanged = e => {\n let { name, value } = e.target\n setContactData({ ...contactData, [name]: value })\n }\n\n const sendEmail = () => {\n if (\n contactData.fullname &&\n contactData.email &&\n contactData.phone &&\n contactData.message\n ) {\n dispatch(\n sendContactUsEmail({\n ...contactData,\n userId: safePick(usersState, 'currentUser', 'ID'),\n })\n )\n } else {\n // TODO: show a nice pop-up\n alert('Please fill in the fields!')\n }\n }\n\n return (\n <>\n {!contactUsEmailSent ? (\n <>\n
\n

Contact

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

\n Or contact us at: \n contact@pinapp.technology\n

\n\n
\n {\n sendEmail()\n }}>\n Send\n \n
\n \n ) : (\n
\n Your message has been sent.\n
\n We will get back to you as soon as possible.\n
\n Email sent\n
\n )}\n \n )\n}\n","import './LocationDetails.scss'\r\n\r\nimport ImageZoom from '@moorecp/react-medium-image-zoom'\r\nimport React, { useState } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { Modal } from 'react-responsive-modal'\r\n\r\nimport { deleteLocation } from '../../actions/locationsActions'\r\nimport common from '../../common'\r\nimport DeleteModal from '../DeleteModal/DeleteModal'\r\n\r\nexport default function LocationDetails(props) {\r\n let location = props.location\r\n const handleSecondPageContent = props.handleSecondPageContent\r\n const dispatch = useDispatch()\r\n const [openModal, setOpenModal] = useState(false)\r\n\r\n const editClicked = () => {\r\n handleSecondPageContent('EditLocation')\r\n }\r\n\r\n const deleteClicked = () => {\r\n setOpenModal(true)\r\n }\r\n\r\n const proceedDeleteLocation = () => {\r\n dispatch(deleteLocation(location.ID, handleSecondPageContent))\r\n setOpenModal(false)\r\n }\r\n\r\n const getDayOfWeekName = dayOfWeekNumber => {\r\n const daysOfWeek = [\r\n 'Monday',\r\n 'Tuesday',\r\n 'Wednesday',\r\n 'Thursday',\r\n 'Friday',\r\n 'Saturday',\r\n 'Sunday',\r\n ]\r\n\r\n return daysOfWeek[dayOfWeekNumber]\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
{location.Name}
\r\n
\r\n\r\n
\r\n
\r\n
Location Name:
\r\n
{location.Name}
\r\n
\r\n\r\n
\r\n
Address:
\r\n
{location.LocationName}
\r\n
\r\n\r\n
\r\n
Business:
\r\n
{location.Business.Name}
\r\n
\r\n\r\n
\r\n
Location Type:
\r\n
\r\n \r\n {location.BusinessType.Name}\r\n
\r\n
\r\n\r\n
\r\n
Description:
\r\n
{location.Description}
\r\n
\r\n\r\n
\r\n
Open hours:
\r\n
\r\n
Open:
\r\n\r\n \r\n {location.OpenHours?.length > 0 ? (\r\n location.OpenHours.sort((a, b) =>\r\n a.DayOfWeek > b.DayOfWeek ? 1 : -1\r\n ).map(x => (\r\n
\r\n {getDayOfWeekName(x.DayOfWeek)}:\r\n\r\n {x.TimeOpening && x.TimeClosing ? (\r\n \r\n {x.TimeOpening} - {x.TimeClosing}\r\n \r\n ) : (\r\n closed\r\n )}\r\n
\r\n ))\r\n ) : (\r\n
Not available
\r\n )}\r\n
\r\n
\r\n
\r\n\r\n
\r\n {location.Images[0] &&\r\n location.Images.sort((a, b) => a.Position - b.Position).map(\r\n (imag, index) => {\r\n return (\r\n \r\n )\r\n }\r\n )}\r\n
\r\n
\r\n\r\n
\r\n
\r\n Delete\r\n
\r\n
\r\n Edit\r\n
\r\n
\r\n\r\n setOpenModal(false)} center>\r\n \r\n \r\n \r\n )\r\n}\r\n","import './Location.scss'\n\nimport React from 'react'\n\nimport common from '../../common'\n\nexport default function Location(props) {\n let location = props.location\n let clickEvent = props.customClickEvent\n let currentLocationId = props.currentLocationId\n\n return (\n
\n clickEvent(location)}>\n {/*
\n \n
*/}\n
\n {location.Images[0] && (\n i.Position === 0).URL\n }`}\n alt='logo'>\n )}\n
\n
\n
{location.Name}
\n
{location.LocationName}
\n
\n
\n \n )\n}\n","import './Locations.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch } from 'react-redux'\n\nimport { setCurrentLocation } from '../../actions/locationsActions'\nimport Location from '../Location/Location'\n\nexport default function Locations(props) {\n const handleSecondPageContent = props.handleSecondPageContent\n\n const dispatch = useDispatch()\n const [selectedLocationId, setSelectedLocationId] = useState()\n\n const locationClicked = location => {\n setSelectedLocationId(location.ID)\n dispatch(setCurrentLocation(location.ID))\n handleSecondPageContent(\n 'LocationDetails',\n selectedLocationId !== location.ID\n )\n }\n\n const addClicked = () => {\n setSelectedLocationId('')\n dispatch(setCurrentLocation(''))\n handleSecondPageContent('AddLocation')\n }\n\n return (\n <>\n
\n Locations\n
\n\n
\n {props.locations &&\n props.locations[0] &&\n props.locations.map((location, index) => {\n return (\n \n )\n })}\n {!props?.locations?.length && (\n <>\n
\n

Add your locations

\n
\n \n )}\n
\n\n
\n
addClicked()}>\n + Add\n
\n
\n \n )\n}\n","export default ({ OverlayView = window.google.maps.OverlayView, ...args }) => {\n class HtmlMapMarker extends OverlayView {\n constructor() {\n super()\n this.latlng = args.latlng\n this.html = args.html\n this.setMap(args.map)\n }\n\n createDiv() {\n this.div = document.createElement('div')\n this.div.style.position = 'absolute'\n if (this.html) {\n this.div.innerHTML = this.html\n }\n window.google.maps.event.addDomListener(this.div, 'click', event => {\n window.google.maps.event.trigger(this, 'click')\n })\n }\n\n appendDivToOverlay() {\n const panes = this.getPanes()\n panes.overlayImage.appendChild(this.div)\n }\n\n positionDiv() {\n const point = this.getProjection().fromLatLngToDivPixel(this.latlng)\n if (point) {\n this.div.style.left = `${point.x}px`\n this.div.style.top = `${point.y}px`\n }\n }\n\n draw() {\n if (!this.div) {\n this.createDiv()\n this.appendDivToOverlay()\n }\n this.positionDiv()\n }\n\n remove() {\n if (this.div) {\n this.div.parentNode.removeChild(this.div)\n this.div = null\n }\n }\n\n getPosition() {\n return this.latlng\n }\n\n getDraggable() {\n return false\n }\n }\n\n return new HtmlMapMarker()\n}\n","const LIGHT = [\n {\n featureType: 'landscape.man_made',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'poi',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n]\n\nconst DARK = [\n {\n elementType: 'geometry',\n stylers: [\n {\n color: '#212121',\n },\n ],\n },\n {\n elementType: 'labels.icon',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n elementType: 'labels.text.stroke',\n stylers: [\n {\n color: '#212121',\n },\n ],\n },\n {\n featureType: 'administrative',\n elementType: 'geometry',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'administrative.country',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#9e9e9e',\n },\n ],\n },\n {\n featureType: 'administrative.land_parcel',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'administrative.locality',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#bdbdbd',\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'geometry',\n stylers: [\n {\n color: '#181818',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#616161',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.stroke',\n stylers: [\n {\n color: '#1b1b1b',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'geometry.fill',\n stylers: [\n {\n color: '#2c2c2c',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#8a8a8a',\n },\n ],\n },\n {\n featureType: 'road.arterial',\n elementType: 'geometry',\n stylers: [\n {\n color: '#373737',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry',\n stylers: [\n {\n color: '#3c3c3c',\n },\n ],\n },\n {\n featureType: 'road.highway.controlled_access',\n elementType: 'geometry',\n stylers: [\n {\n color: '#4e4e4e',\n },\n ],\n },\n {\n featureType: 'road.local',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#616161',\n },\n ],\n },\n {\n featureType: 'transit',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#757575',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [\n {\n color: '#000000',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#3d3d3d',\n },\n ],\n },\n]\n\nexport default { LIGHT, DARK }\n","import './Map.scss'\n\nimport MarkerClusterer from '@googlemaps/markerclustererplus'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { getPinsByLocation, updateShownPins } from '../../actions/pinsActions'\nimport common from '../../common'\nimport safePick from '../../utils/safePick'\nimport createHtmlMapMarker from './HtmlMapMarker.js'\nimport mapStyle from './mapStyle'\n\nexport default function Map(props) {\n const dispatch = useDispatch()\n\n const minZoomLevel = 7\n const maxZoomLevel = 17\n const takePins = 100\n const defaultInitialLatitude = 46.769059\n const defaultInitialLongitude = 23.590812\n\n const mapPins = useSelector(state => state.pins.mapPins)\n const newMapPins = useSelector(state => state.pins.newMapPins)\n const mapPinsRef = useRef(mapPins)\n mapPinsRef.current = mapPins\n\n const [map, setMap] = useState()\n const [clusterer, setClusterer] = useState()\n\n const { userMenuOpen, setUerMenuOpenStatus, openClosePinsPage } = props\n const userMenuOpenRef = useRef(userMenuOpen)\n const setUerMenuOpenStatusRef = useRef(setUerMenuOpenStatus)\n const openClosePinsPageRef = useRef(openClosePinsPage)\n userMenuOpenRef.current = userMenuOpen\n\n const takePinsRadius = useCallback(zoom => {\n const fetchRangesByZoom = [\n { zoom: 7, range: 577790 },\n { zoom: 8, range: 288895 },\n { zoom: 9, range: 144447 },\n { zoom: 10, range: 72223 },\n { zoom: 11, range: 36111 },\n { zoom: 12, range: 18055 },\n { zoom: 13, range: 9027 },\n { zoom: 14, range: 4513 },\n { zoom: 15, range: 2256 },\n { zoom: 16, range: 1128 },\n { zoom: 17, range: 564 },\n ]\n const fetchRange = fetchRangesByZoom.find(x => x.zoom === zoom)\n return (fetchRange && fetchRange.range) || fetchRangesByZoom[0].range\n }, [])\n\n const getFormattedMapPins = () =>\n (newMapPins &&\n newMapPins.map(pin => {\n return {\n id: pin.ID,\n latitude: pin.Location.Latitude,\n longitude: pin.Location.Longitude,\n type: 'default',\n firstImageUrl: safePick(pin, 'Images', [0], 'URL'),\n }\n })) ||\n []\n\n const setMapCenter = useCallback(\n (map, latitude, longitude) =>\n map.setCenter(new window.google.maps.LatLng(latitude, longitude)),\n []\n )\n\n const addPinsToMap = () => {\n getFormattedMapPins().forEach(pin => {\n let latLngSet = new window.google.maps.LatLng(pin.latitude, pin.longitude)\n let pinIcon = pin.firstImageUrl\n ? `${common.imagesBaseUrl}/${pin.firstImageUrl}`\n : 'images/pinapp-logo.svg' // video\n\n let marker = createHtmlMapMarker({\n latlng: latLngSet,\n map: map,\n html: `
\n \n
`,\n })\n\n // force clustering\n if (map) {\n setMapCenter(map, map.getCenter().lat(), map.getCenter().lng())\n }\n\n // pin clicked event\n marker.addListener('click', () => {\n const rawPin = mapPins.find(x => x.ID === pin.id)\n showClusterPins([rawPin])\n })\n\n clusterer.addMarker(marker, true)\n })\n }\n\n const mapDraged = useCallback(\n map => {\n const mapCenter = {\n lat: map.getCenter().lat(),\n lng: map.getCenter().lng(),\n }\n\n dispatch(\n getPinsByLocation(\n mapCenter.lat,\n mapCenter.lng,\n takePins,\n takePinsRadius(map.zoom)\n )\n )\n },\n [dispatch, takePinsRadius]\n )\n\n const closeUserMenuIfOpen = () => {\n if (userMenuOpenRef.current) {\n setUerMenuOpenStatusRef.current(false)\n }\n }\n\n const showClusterPins = useCallback(\n pins => {\n const leftPage = document.getElementById('first-page')\n if (leftPage) leftPage.scrollTop = 0\n\n openClosePinsPageRef.current(true)\n dispatch(updateShownPins(pins))\n },\n [dispatch]\n )\n\n addPinsToMap()\n\n useEffect(() => {\n const mapControls = {\n zoomControl: false,\n mapTypeControl: false,\n scaleControl: false,\n streetViewControl: false,\n rotateControl: false,\n fullscreenControl: false,\n }\n\n const mapConfig = {\n center: { lat: defaultInitialLatitude, lng: defaultInitialLongitude },\n zoom: 14,\n minZoom: minZoomLevel,\n maxZoom: maxZoomLevel,\n scrollwheel: true,\n styles: mapStyle.WHITE,\n ...mapControls,\n }\n\n const smallMarkerStyle = {\n width: 23,\n height: 33,\n textSize: 11,\n }\n\n const bigMarkerStyle = {\n width: 48,\n height: 53,\n textSize: 10,\n }\n\n const clusterOptions = {\n zoomOnClick: false,\n styles: [\n // small\n {\n ...smallMarkerStyle,\n url: 'images/map/marker_1.svg',\n },\n // medium\n {\n ...bigMarkerStyle,\n url: 'images/map/marker_10.svg',\n },\n // large\n {\n ...bigMarkerStyle,\n url: 'images/map/marker_100.svg',\n },\n // xl\n {\n ...bigMarkerStyle,\n url: 'images/map/marker_100.svg',\n },\n // max\n {\n ...bigMarkerStyle,\n url: 'images/map/marker_100.svg',\n },\n ],\n }\n\n const initMap = () => {\n // add map\n let mapContainer = document.getElementById('map')\n let map = new window.google.maps.Map(mapContainer, mapConfig)\n setMap(map)\n\n const locationReceived = position => {\n setMapCenter(map, position.coords.latitude, position.coords.longitude)\n dispatch(\n getPinsByLocation(\n position.coords.latitude,\n position.coords.longitude,\n takePins,\n takePinsRadius(map.zoom)\n )\n )\n }\n\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(locationReceived)\n }\n\n // add cluster\n const clusterer = new MarkerClusterer(map, [], clusterOptions)\n setClusterer(clusterer)\n\n // add search box\n let mapSearchBox = document.getElementById('map-search-box')\n let searchBox = new window.google.maps.places.SearchBox(mapSearchBox)\n map.controls[window.google.maps.ControlPosition.TOP_LEFT].push(\n mapSearchBox\n )\n searchBox.addListener('places_changed', function () {\n const place = searchBox.getPlaces()[0]\n\n let bounds = new window.google.maps.LatLngBounds()\n\n if (!place.geometry) {\n // Returned place contains no geometry\n return\n }\n\n if (place.geometry.viewport) {\n // Only geocodes have viewport.\n bounds.union(place.geometry.viewport)\n } else {\n bounds.extend(place.geometry.location)\n }\n\n map.fitBounds(bounds)\n })\n\n // map dragged event\n window.google.maps.event.addListener(map, 'dragend', event => {\n closeUserMenuIfOpen()\n mapDraged(map, event)\n })\n\n // map clicked event\n window.google.maps.event.addListener(map, 'click', event => {\n closeUserMenuIfOpen()\n // disable points of interest\n if (event.placeId) {\n event.stop()\n }\n })\n\n // map zoom changed event\n window.google.maps.event.addListener(map, 'zoom_changed', event => {\n closeUserMenuIfOpen()\n // get current map center\n const mapCenter = {\n lat: map.getCenter().lat(),\n lng: map.getCenter().lng(),\n }\n\n // fech new pins\n dispatch(\n getPinsByLocation(\n mapCenter.lat,\n mapCenter.lng,\n takePins,\n takePinsRadius(map.zoom)\n )\n )\n })\n\n // cluster clicked event\n window.google.maps.event.addListener(\n clusterer,\n 'clusterclick',\n function (cluster) {\n let markers = cluster.getMarkers()\n let clusterPins = mapPinsRef.current.filter(x =>\n markers.find(\n y =>\n y.latlng.lat() === x.Location.Latitude &&\n y.latlng.lng() === x.Location.Longitude\n )\n )\n showClusterPins(clusterPins)\n }\n )\n }\n\n const requestPinsByLocation = async () => {\n await dispatch(\n getPinsByLocation(\n mapConfig.center.lat,\n mapConfig.center.lng,\n takePins,\n takePinsRadius(mapConfig.zoom)\n )\n )\n }\n\n initMap()\n requestPinsByLocation()\n }, [dispatch, mapDraged, takePinsRadius, showClusterPins, setMapCenter])\n\n return (\n <>\n
\n \n )\n}\n","import './MenuPage.scss'\n\nimport React from 'react'\nimport { useSelector } from 'react-redux'\n\nexport default function MenuPage(props) {\n const handleFirstPageContent = props.handleFirstPageContent\n let clickedMenuOption = props.clickedMenuOption\n\n const currentUser = useSelector(state => state.users.currentUser)\n\n return (\n <>\n {/* Businesses */}\n {(currentUser._isAdmin || currentUser._isBusinessOwner) && (\n {\n handleFirstPageContent('Businesses')\n }}>\n \n Business\n \n )}\n\n {/* Locations */}\n {(currentUser._isAdmin || currentUser._isBusinessOwner) && (\n handleFirstPageContent('Locations')}>\n \n Locations\n \n )}\n\n {/* Challenges */}\n {(currentUser._isAdmin || currentUser._isBusinessOwner) && (\n handleFirstPageContent('Challenges')}>\n \n Challenges\n \n )}\n\n {/* Approvals */}\n {(currentUser._isAdmin || currentUser._isBusinessOwner) && (\n handleFirstPageContent('Approvals')}>\n \n Approvals\n \n )}\n\n {/* Prizes */}\n {(currentUser._isAdmin ||\n currentUser._isBusinessOwner ||\n currentUser._isBusinessManager) && (\n handleFirstPageContent('Prizes')}>\n \n Prizes\n \n )}\n\n {/* handleFirstPageContent('Pins')}>\n \n Pins\n */}\n \n )\n}\n","const open = [\n {\n DayOfWeek: 0,\n TimeOpening: '08:00',\n TimeClosing: '18:00',\n },\n {\n DayOfWeek: 1,\n TimeOpening: '08:00',\n TimeClosing: '18:00',\n },\n {\n DayOfWeek: 2,\n TimeOpening: '08:00',\n TimeClosing: '18:00',\n },\n {\n DayOfWeek: 3,\n TimeOpening: '08:00',\n TimeClosing: '18:00',\n },\n {\n DayOfWeek: 4,\n TimeOpening: '08:00',\n TimeClosing: '18:00',\n },\n {\n DayOfWeek: 5,\n TimeOpening: '08:00',\n TimeClosing: '14:00',\n },\n {\n DayOfWeek: 6,\n },\n]\n\nconst open24h = [\n {\n DayOfWeek: 0,\n TimeClosing: '00:00',\n TimeOpening: '00:00',\n },\n {\n DayOfWeek: 1,\n TimeClosing: '00:00',\n TimeOpening: '00:00',\n },\n {\n DayOfWeek: 2,\n TimeClosing: '00:00',\n TimeOpening: '00:00',\n },\n {\n DayOfWeek: 3,\n TimeClosing: '00:00',\n TimeOpening: '00:00',\n },\n {\n DayOfWeek: 4,\n TimeClosing: '00:00',\n TimeOpening: '00:00',\n },\n {\n DayOfWeek: 5,\n TimeClosing: '00:00',\n TimeOpening: '00:00',\n },\n {\n DayOfWeek: 6,\n TimeClosing: '00:00',\n TimeOpening: '00:00',\n },\n]\n\nconst closed = [\n {\n DayOfWeek: 0,\n },\n {\n DayOfWeek: 1,\n },\n {\n DayOfWeek: 2,\n },\n {\n DayOfWeek: 3,\n },\n {\n DayOfWeek: 4,\n },\n {\n DayOfWeek: 5,\n },\n {\n DayOfWeek: 6,\n },\n]\n\nconst openHoursOptions = [\n { Id: 1, Name: '00:00' },\n { Id: 2, Name: '07:00' },\n { Id: 3, Name: '07:30' },\n { Id: 4, Name: '08:00' },\n { Id: 5, Name: '08:30' },\n { Id: 6, Name: '09:00' },\n { Id: 7, Name: '09:30' },\n { Id: 8, Name: '10:00' },\n { Id: 9, Name: '10:30' },\n { Id: 10, Name: '11:00' },\n { Id: 11, Name: '11:30' },\n { Id: 12, Name: '12:00' },\n { Id: 13, Name: '12:30' },\n { Id: 14, Name: '13:00' },\n { Id: 15, Name: '13:30' },\n { Id: 16, Name: '14:00' },\n { Id: 17, Name: '14:30' },\n { Id: 18, Name: '15:00' },\n { Id: 19, Name: '15:30' },\n { Id: 20, Name: '16:00' },\n { Id: 21, Name: '16:30' },\n { Id: 22, Name: '17:00' },\n { Id: 23, Name: '17:30' },\n { Id: 24, Name: '18:00' },\n { Id: 25, Name: '18:30' },\n { Id: 26, Name: '19:00' },\n { Id: 27, Name: '19:30' },\n { Id: 28, Name: '20:00' },\n { Id: 29, Name: '20:30' },\n { Id: 30, Name: '21:00' },\n { Id: 31, Name: '21:30' },\n { Id: 32, Name: '22:00' },\n { Id: 33, Name: '00:00' },\n]\n\nexport default {\n open,\n open24h,\n closed,\n openHoursOptions,\n}\n","import './OpenHours.scss'\n\nimport React, { useEffect, useState } from 'react'\nimport ClickAwayListener from 'react-click-away-listener'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport { updateCurrentLocationOpenHours } from '../../actions/locationsActions'\nimport CustomSelect from '../CustomSelect/CustomSelect'\nimport openHoursData from './openHoursData'\n\nexport default function OpenHours(props) {\n const handleThirdPageContent = props.handleThirdPageContent\n\n const dispatch = useDispatch()\n\n const locationOpenHours = useSelector(\n state => state.locations.currentLocation?.OpenHours\n )\n\n const [openHoursOptions] = useState([\n { Id: 1, Name: 'Open' },\n { Id: 2, Name: 'Open 24 hours' },\n { Id: 3, Name: 'Closed' },\n ])\n\n const [showOpenHoursDropdown, setShowOpenHoursDropdown] = useState()\n const [selectedOpenHourOptionId, setSelectedOpenHourOptionId] = useState()\n const [showTimeOpeningDropdown, setShowTimeOpeningDropdown] = useState([])\n const [showTimeClosingDropdown, setShowTimeClosingDropdown] = useState([])\n const [currentOpenHours, setCurrentOpenHours] = useState(locationOpenHours)\n\n const openHoursSelectClicked = () => {\n setShowOpenHoursDropdown(!showOpenHoursDropdown)\n }\n\n const setShowTimeOpeningDropdownHandler = (value, index) => {\n if (value) {\n let newValue = [...showTimeOpeningDropdown]\n newValue[index] = value\n setShowTimeOpeningDropdown(newValue)\n } else {\n setShowTimeOpeningDropdown([])\n }\n }\n\n const timeOpeningSelectClicked = index => {\n setShowTimeOpeningDropdownHandler(!showTimeOpeningDropdown[index], index)\n }\n\n const setShowTimeClosingDropdownHandler = (value, index) => {\n if (value) {\n let newValue = [...showTimeClosingDropdown]\n newValue[index] = value\n setShowTimeClosingDropdown(newValue)\n } else {\n setShowTimeClosingDropdown([])\n }\n }\n\n const timeClosingSelectClicked = index => {\n setShowTimeClosingDropdownHandler(!showTimeClosingDropdown[index], index)\n }\n\n const setSelectedTimeOpeningHandler = (value, index) => {\n setCurrentOpenHours(\n currentOpenHours.map(x =>\n x.DayOfWeek === index\n ? {\n ...x,\n TimeOpening: openHoursData.openHoursOptions.find(\n x => x.Id === parseInt(value)\n ).Name,\n }\n : x\n )\n )\n }\n\n const setSelectedTimeClosingHandler = (value, index) => {\n setCurrentOpenHours(\n currentOpenHours.map(x =>\n x.DayOfWeek === index\n ? {\n ...x,\n TimeClosing: openHoursData.openHoursOptions.find(\n x => x.Id === parseInt(value)\n ).Name,\n }\n : x\n )\n )\n }\n\n const handleSaveOpenHours = () => {\n dispatch(\n updateCurrentLocationOpenHours(currentOpenHours, handleThirdPageContent)\n )\n }\n\n const getDayOfWeekName = dayOfWeekNumber => {\n const daysOfWeek = [\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n 'Sunday',\n ]\n\n return daysOfWeek[dayOfWeekNumber]\n }\n\n const enableDisableOpenHours = (dayOfWeekNumber, checked) => {\n const newHours = checked\n ? { DayOfWeek: dayOfWeekNumber, TimeOpening: null, TimeClosing: null }\n : {\n DayOfWeek: dayOfWeekNumber,\n TimeOpening: '08:00',\n TimeClosing: '18:00',\n }\n\n setCurrentOpenHours(\n currentOpenHours.map(x =>\n x.DayOfWeek === dayOfWeekNumber ? newHours : x\n )\n )\n }\n\n useEffect(() => {\n switch (\n selectedOpenHourOptionId //openHoursOptions\n ) {\n case '1': // open\n setCurrentOpenHours(openHoursData.open)\n break\n case '2': // open 24 hours\n setCurrentOpenHours(openHoursData.open24h)\n break\n case '3': // closed\n setCurrentOpenHours(openHoursData.closed)\n break\n default:\n break\n }\n }, [selectedOpenHourOptionId])\n\n return (\n <>\n
Open Hours
\n\n
\n setShowOpenHoursDropdown(false)}>\n \n \n \n
\n \n\n
\n {currentOpenHours?.map(x => (\n
\n \n \n \n \n enableDisableOpenHours(\n x.DayOfWeek,\n (x.TimeOpening && x.TimeClosing && true) || false\n )\n }>\n {getDayOfWeekName(x.DayOfWeek)}\n \n
\n \n {x.TimeOpening && x.TimeClosing ? (\n <>\n \n \n setShowTimeOpeningDropdownHandler(false, x.DayOfWeek)\n }>\n timeOpeningSelectClicked(x.DayOfWeek)}>\n \n \n
\n \n \n \n {' '}\n \n setShowTimeClosingDropdownHandler(false, x.DayOfWeek)\n }>\n timeClosingSelectClicked(x.DayOfWeek)}>\n \n \n \n \n \n \n ) : (\n closed\n )}\n \n ))}\n \n \n\n
\n
handleThirdPageContent('')}>\n Cancel\n
\n
\n Save\n
\n
\n \n )\n}\n","import './Pin.scss'\r\n\r\nimport React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\n\r\nimport { addStarToPin, removeStarFromPin } from '../../actions/pinsActions'\r\nimport common from '../../common'\r\n\r\nexport default function Pin(props) {\r\n const pin = props.pin\r\n const dispatch = useDispatch()\r\n\r\n const getPrettyTimeSpan = date => {\r\n const days = Math.round(\r\n Math.abs((new Date() - new Date(date)) / (24 * 60 * 60 * 1000))\r\n )\r\n\r\n if (days > 365) {\r\n return Math.round(days / 365) + 'y'\r\n }\r\n if (days > 30) {\r\n return Math.round(days / 30) + 'm'\r\n }\r\n if (days > 7) {\r\n return Math.round(days / 7) + 'w'\r\n }\r\n return days + 'd'\r\n }\r\n\r\n const starPressed = pin => {\r\n if (pin.StarGiven) {\r\n dispatch(removeStarFromPin(pin.ID))\r\n } else {\r\n dispatch(addStarToPin(pin.ID))\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {pin.LiteUser.FullName.substr(0, 22)}\r\n
\r\n {pin.ViewCount} views\r\n
\r\n\r\n
\r\n  
\r\n {getPrettyTimeSpan(pin.Created)}\r\n
\r\n
\r\n\r\n {pin.Images[0] && (\r\n \r\n )}\r\n\r\n {!pin.Images[0] && pin.Videos[0] && (\r\n \r\n )}\r\n\r\n
\r\n
\r\n {pin.Location.LocationName && (\r\n

{pin.Location.LocationName}

\r\n )}\r\n {pin.Text &&

{pin.Text}

}\r\n
\r\n
\r\n starPressed(pin)}\r\n />\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import './Pins.scss'\n\nimport React from 'react'\n\nimport Pin from '../Pin/Pin'\n\nexport default function Pins(props) {\n return (\n <>\n {props.pins &&\n props.pins.map(pin => {\n return \n })}\n\n
\n Browse the map for more!{' '}\n \n 😄\n \n
\n \n )\n}\n","export const SET_PRIZES_ERROR = 'SET_PRIZES_ERROR'\nexport const CLEAR_PRIZES_ERROR = 'CLEAR_PRIZES_ERROR'\n","import axios from 'axios'\n\nimport * as actions from '../actionTypes/prizesActionTypes'\nimport common from '../common'\nimport safePick from '../utils/safePick'\n\nconst setPrizesError = errorMessage => ({\n type: actions.SET_PRIZES_ERROR,\n error: errorMessage || 'Unknown error occured',\n})\n\nexport const clearPrizesError = () => ({\n type: actions.CLEAR_PRIZES_ERROR,\n})\n\nexport const getPrizeCodeInfo = prizeCode => async (dispatch, getState) => {\n try {\n const prizeCodeInfo = await axios\n .get(`${common.baseUrl}/Challenges/GetPrizeCodeInfo/${prizeCode}`, {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n })\n .then(response => response.data)\n\n return prizeCodeInfo\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setPrizesError(errorMessage))\n }\n}\n\nexport const givePrizeToUser =\n (code, challengeId, userId) => async (dispatch, getState) => {\n try {\n await axios.post(\n `${common.baseUrl}/Challenges/GivePrize`,\n { code, challengeId, userId },\n {\n headers: {\n Authorization: `${localStorage.getItem(\n 'TokenType'\n )} ${localStorage.getItem('AccessToken')}`,\n },\n }\n )\n } catch (error) {\n const errorMessage = safePick(error, 'response', 'data', 'Errors', [0])\n dispatch(setPrizesError(errorMessage))\n }\n }\n","import './Prizes.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport moment from 'moment'\nimport {\n clearPrizesError,\n getPrizeCodeInfo,\n givePrizeToUser,\n} from '../../actions/prizesActions'\nimport common from '../../common'\n\nexport default function Prizes() {\n const dispatch = useDispatch()\n\n const prizesState = useSelector(state => state.prizes)\n\n if (prizesState.error) {\n dispatch(clearPrizesError())\n }\n\n const [searched, setSearched] = useState(false)\n const [prizeCode, setPrizeCode] = useState()\n const [prizeCodeInfo, setPrizeCodeInfo] = useState()\n\n const searchPrizeCode = async () => {\n if (prizeCode) {\n const prizeCodeInfoResponse = await dispatch(getPrizeCodeInfo(prizeCode))\n setPrizeCodeInfo(prizeCodeInfoResponse)\n setSearched(true)\n }\n }\n\n const givePrize = async () => {\n await dispatch(\n givePrizeToUser(\n prizeCode,\n prizeCodeInfo.Challenge.ID,\n prizeCodeInfo.User.ID\n )\n )\n await searchPrizeCode()\n }\n\n const handleClearPrizeCode = () => {\n setPrizeCode('')\n setPrizeCodeInfo(null)\n setSearched(false)\n }\n\n return (\n <>\n
Prizes
\n\n
\n
\n setPrizeCode(e.target.value)}\n placeholder='Search prize code...'>\n\n {!prizeCodeInfo ? (\n searchPrizeCode()}>\n Search\n \n ) : (\n handleClearPrizeCode()}\n />\n )}\n
\n\n {!prizeCodeInfo && searched && (\n
Prize code not found!
\n )}\n\n {prizeCodeInfo && (\n
\n
\n \n
\n

\n {prizeCodeInfo.User.FullName}\n

\n

{prizeCodeInfo.User.Email}

\n
\n
\n\n
\n
\n
Completed:
\n
\n {moment\n .utc(prizeCodeInfo.CompletedTime)\n .local()\n .format('H:mm / DD.MM.YYYY')}\n
\n
\n
\n
Business:
\n
\n {prizeCodeInfo.Challenge.Business.Name}\n
\n
\n
\n
Location:
\n
\n {prizeCodeInfo.Challenge.BusinessPin.Name}\n
\n
\n {/*
\n
Address:
\n
\n {prizeCodeInfo.Challenge.BusinessPin.LocationName}\n
\n
*/}\n
\n
Challenge title:
\n
\n {prizeCodeInfo.Challenge.Title}\n
\n
\n
\n
Challenge description:
\n
\n {prizeCodeInfo.Challenge.Description}\n
\n
\n
\n
Prize:
\n
\n {prizeCodeInfo.Challenge.Prize}\n
\n
\n
\n
Prize description:
\n
\n {prizeCodeInfo.Challenge.PrizeDescription}\n
\n
\n
\n
Prizes (given / total):
\n
\n {prizeCodeInfo.GivenPrizesCount} /{' '}\n {prizeCodeInfo.Challenge.NoOfPrizes}\n
\n
\n
\n
Challenge finishes:
\n
\n {prizeCodeInfo.Challenge.NoOfFinishes}\n
\n
\n
\n
Challenge tasks:
\n
\n {prizeCodeInfo.Challenge.Steps?.map((x, index) => (\n taskClicked(index)}\n >\n \n {x.Position + 1}\n \n {x.ChallengeStepType.Name}\n
\n ))}\n
\n
\n
\n\n
\n {prizeCodeInfo.IsCollected ? (\n
\n

\n \n

\n

The prize has been given

\n

\n Go to challenges and create new offers for your customers!\n

\n
\n ) : (\n
\n {/*

\n \n

*/}\n

The prize has not been given

\n
givePrize()}>\n Give Prize!\n
\n
\n )}\n
\n
\n )}\n \n \n )\n}\n","import './Home.scss'\n\nimport React, { useEffect, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Modal } from 'react-responsive-modal'\nimport { useHistory } from 'react-router-dom'\n\nimport { updateShownBusinesses } from '../../actions/businessesActions'\nimport { updateShownChallenges } from '../../actions/challengesActions'\nimport { updateShownLocations } from '../../actions/locationsActions'\nimport { updateShownPins } from '../../actions/pinsActions'\nimport { logOut } from '../../actions/usersActions'\nimport common from '../../common'\nimport AddBusiness from '../AddBusiness/AddBusiness'\nimport AddChallenge from '../AddChallenge/AddChallenge'\nimport AddChallengeTask from '../AddChallengeTask/AddChallengeTask'\nimport AddLocation from '../AddLocation/AddLocation'\nimport Approvals from '../Approvals/Approvals'\nimport OngoingChallenges from '../Approvals/OngoingChallenges'\nimport BusinessDetails from '../BusinessDetails/BusinessDetails'\nimport Businesses from '../Businesses/Businesses'\nimport ChallengeDetails from '../ChallengeDetails/ChallengeDetails'\nimport Challenges from '../Challenges/Challenges'\nimport ChallengeTask from '../ChallengeTask/ChallengeTask'\nimport ContactUs from '../ContactUs/ContactUs'\nimport LocationDetails from '../LocationDetails/LocationDetails'\nimport Locations from '../Locations/Locations'\nimport Map from '../Map/Map'\nimport MenuPage from '../MenuPage/MenuPage'\nimport OpenHours from '../OpenHours/OpenHours'\nimport PinsContent from '../Pins/Pins'\nimport PrivacyPolicy from '../PrivacyPolicy/PrivacyPolicy'\nimport Prizes from '../Prizes/Prizes'\n\nexport default function Home() {\n const dispatch = useDispatch()\n const history = useHistory()\n const currentUser = useSelector(state => state.users.currentUser)\n const mapPins = useSelector(state => state.pins.mapPins)\n const shownPins = useSelector(state => state.pins.shownPins)\n const businesses = useSelector(state => state.businesses.businesses)\n const selectedBusiness = useSelector(\n state => state.businesses.currentBusiness\n )\n const selectedLocation = useSelector(state => state.locations.currentLocation)\n const selectedChallenge = useSelector(\n state => state.challenges.currentChallenge\n )\n const locations = useSelector(state => state.locations.locations)\n const challenges = useSelector(state => state.challenges.challenges)\n\n const [modalPageContent, setModalPageContent] = useState()\n const [firstPageContent, setFirstPageContent] = useState()\n const [secondPageContent, setSecondPageContent] = useState()\n const [thirdPageContent, setThirdPageContent] = useState()\n\n const [userMenuOpen, setUerMenuOpen] = useState(false)\n const [menuPageOpen, setMenuPageOpen] = useState(true)\n const [firstPageOpen, setFirstPageOpen] = useState(false)\n const [secondPageOpen, setSecondPageOpen] = useState(false)\n const [thirdPageOpen, setThirdPageOpen] = useState(false)\n const [clickedMenuOption, setClickedMenuOption] = useState()\n\n const setUerMenuOpenStatus = status => {\n setUerMenuOpen(status)\n }\n\n const togglePages = () => {\n if (menuPageOpen) {\n setMenuPageOpen(false)\n setClickedMenuOption(null)\n setFirstPageOpen(false)\n setSecondPageOpen(false)\n setThirdPageOpen(false)\n } else {\n setMenuPageOpen(true)\n }\n }\n\n const handleFirstPageContent = pageContent => {\n const closePageAndDependents = () => {\n setFirstPageOpen(false)\n setSecondPageOpen(false)\n setThirdPageOpen(false)\n setClickedMenuOption(null)\n }\n\n if (!pageContent) {\n closePageAndDependents()\n return\n }\n\n if (firstPageOpen && firstPageContent === pageContent) {\n closePageAndDependents()\n } else {\n // set clicked menu\n setClickedMenuOption(pageContent)\n // close dependents\n setSecondPageOpen(false)\n setThirdPageOpen(false)\n // update page\n setFirstPageContent(pageContent)\n setMenuPageOpen(true)\n setFirstPageOpen(true)\n }\n }\n\n const handleSecondPageContent = (pageContent, keepPageOpen) => {\n const closePageAndDependents = () => {\n setSecondPageOpen(false)\n setThirdPageOpen(false)\n }\n\n if (!pageContent) {\n closePageAndDependents()\n return\n }\n\n if (!keepPageOpen && secondPageOpen && secondPageContent === pageContent) {\n closePageAndDependents()\n } else {\n // close dependents\n setThirdPageOpen(false)\n // update page\n setSecondPageContent(pageContent)\n setSecondPageOpen(true)\n }\n }\n\n const handleThirdPageContent = (pageContent, keepPageOpen) => {\n const closePageAndDependents = () => {\n setThirdPageOpen(false)\n }\n\n if (!pageContent) {\n closePageAndDependents()\n return\n }\n\n if (!keepPageOpen && thirdPageOpen && thirdPageContent === pageContent) {\n closePageAndDependents()\n } else {\n // update page\n setThirdPageContent(pageContent)\n setThirdPageOpen(true)\n }\n }\n\n const showPinsPage = status => {\n if (status) {\n // open\n handleFirstPageContent('Pins')\n } else {\n // close\n setFirstPageOpen(false)\n }\n }\n\n const handleLogOut = () => {\n dispatch(logOut)\n history.push('/')\n window.location.reload(false)\n }\n\n const clearSearchInput = () => {\n let mapSearchBox = document.getElementById('map-search-box')\n mapSearchBox.value = ''\n }\n\n const renderFirstPageContent = () => {\n switch (firstPageContent) {\n case 'Pins':\n if (mapPins?.length > 0 && (!shownPins || shownPins.length === 0)) {\n dispatch(updateShownPins(mapPins.slice(0, 25)))\n }\n return \n case 'Businesses':\n if (!businesses || businesses.length === 0) {\n dispatch(updateShownBusinesses())\n }\n return (\n \n )\n case 'Locations':\n if (!locations?.length) {\n dispatch(updateShownLocations())\n }\n return (\n \n )\n case 'Challenges':\n return (\n \n )\n case 'Approvals':\n return (\n \n )\n case 'Prizes':\n return \n default:\n return <>\n }\n }\n\n const renderSecondPageContent = () => {\n switch (secondPageContent) {\n ////////// Businesses //////////\n case 'AddBusiness':\n return \n case 'EditBusiness':\n return (\n \n )\n case 'BusinessDetails':\n return (\n \n )\n\n ////////// Locations //////////\n case 'AddLocation':\n return (\n \n )\n case 'EditLocation':\n return (\n \n )\n case 'LocationDetails':\n return (\n \n )\n\n ////////// Challenges //////////\n case 'AddChallenge':\n return (\n \n )\n case 'EditChallenge':\n return (\n \n )\n case 'ChallengeDetails':\n return (\n \n )\n\n ////////// Approvals //////////\n case 'Approvals':\n return (\n \n )\n\n default:\n return <>\n }\n }\n\n const renderThirdPageContent = () => {\n ////////// Challenge Tasks //////////\n switch (thirdPageContent) {\n case 'ChallengeTask':\n return \n case 'AddChallengeTask':\n return (\n \n )\n\n ////////// Open Hours //////////\n case 'OpenHours':\n return \n\n ////////// User Submits //////////\n case 'UserSubmits':\n return (\n \n )\n default:\n return <>\n }\n }\n\n const renderModalPage = () => {\n ////////// PrivacyPolicy & ContactUs //////////\n switch (modalPageContent) {\n case 'PrivacyPolicy':\n return \n case 'ContactUs':\n return \n default:\n return <>\n }\n }\n\n useEffect(() => {\n const path = window.location.pathname\n if (path === '/privacy-policy' || path === '/user-privacy-policy') {\n setModalPageContent('PrivacyPolicy')\n }\n\n dispatch(updateShownBusinesses())\n dispatch(updateShownLocations())\n dispatch(updateShownChallenges())\n }, [dispatch])\n\n return (\n <>\n {/* ===== header bar ===== */}\n
\n \n \n\n clearSearchInput()}\n />\n
\n \n\n
\n
\n\n {(currentUser._isAdmin || currentUser._isBusinessOwner) && (\n togglePages()}>\n {firstPageOpen ? (\n \n ) : (\n \n )}\n \n )}\n\n {/* ===== left ===== */}\n {menuPageOpen &&\n (currentUser._isAdmin ||\n currentUser._isBusinessOwner ||\n currentUser._isBusinessManager) && (\n \n )}\n\n {firstPageOpen &&
{renderFirstPageContent()}
}\n\n {secondPageOpen && (\n
{renderSecondPageContent()}
\n )}\n\n {thirdPageOpen &&
{renderThirdPageContent()}
}\n\n {/* ===== right ===== */}\n
\n
\n \n {currentUser.FullName}\n setUerMenuOpen(status => !status)}>\n {userMenuOpen ? (\n PinApp logo\n ) : (\n PinApp logo\n )}\n
\n
\n\n {userMenuOpen && (\n
\n
setModalPageContent('ContactUs')}>\n Contact Us\n
\n
setModalPageContent('PrivacyPolicy')}>\n Privacy Policy\n
\n
handleLogOut()}>Log Out
\n
\n )}\n \n\n {/* ===== map ===== */}\n \n\n {/* ===== modal ===== */}\n {\n setModalPageContent(null)\n history.push('/')\n }}\n center>\n {renderModalPage()}\n \n \n )\n}\n","import './ForgotPassword.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport {\n clearUsersError,\n forgotPassword,\n setForgotPwEmailSent,\n} from '../../../../actions/usersActions'\n\nexport default function ForgotPassword() {\n const dispatch = useDispatch()\n const usersState = useSelector(state => state.users)\n const [email, setEmail] = useState()\n\n // error handling\n if (usersState.error) {\n // TODO: show a nice pop-up\n alert(usersState.error)\n dispatch(clearUsersError())\n }\n\n // success handling\n if (usersState.forgotPasswordEmailSent) {\n // TODO: show a nice pop-up\n alert('Email sent!')\n // TODO: clear email input\n dispatch(setForgotPwEmailSent(null))\n }\n\n const emailChanged = e => {\n let { value } = e.target\n setEmail(value)\n }\n\n const sendForgotPasswordEmail = () => {\n if (email) {\n dispatch(forgotPassword(email))\n } else {\n // TODO: show a nice pop-up\n alert('Please fill in the email!')\n }\n }\n\n return (\n <>\n

Forgot your password?

\n
\n Write down your email and we'll send you a reset password link\n
\n \n \n Send Email\n \n \n )\n}\n","import './LogIn.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\n\nimport {\n authenicate,\n clearUsersError,\n getCurrentUserRoles,\n} from '../../../../actions/usersActions'\n\nexport default function LogIn() {\n const dispatch = useDispatch()\n const usersState = useSelector(state => state.users)\n const [authData, setAuthData] = useState({})\n const [stayLoggedIn, setStayLoggedIn] = useState(true)\n\n // error handling\n if (usersState.error) {\n // TODO: show a nice pop-up\n alert(usersState.error)\n dispatch(clearUsersError())\n }\n\n const authDataChanged = e => {\n let { name, value } = e.target\n setAuthData({ ...authData, [name]: value })\n }\n\n const handleLoginKeyDown = e => {\n if (e.key === 'Enter') {\n login()\n }\n }\n\n const login = async () => {\n await dispatch(authenicate(authData.email, authData.password, stayLoggedIn))\n dispatch(getCurrentUserRoles())\n }\n\n // const facebookLogin = () => {\n // return\n // }\n\n return (\n <>\n
\n \n

\n LogIn\n

\n \n\n \n

SignUp

\n \n
\n\n handleLoginKeyDown(e)}\n />\n handleLoginKeyDown(e)}\n />\n\n \n
Forgot Password
\n \n\n
\n
\n setStayLoggedIn(!stayLoggedIn)}\n />\n \n Stay Logged In\n \n
\n
\n\n
\n {\n login()\n }}>\n LogIn\n \n {/* {\n facebookLogin()\n }}>\n facebook\n */}\n
\n \n )\n}\n","import './ResetPassword.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\n\nimport {\n clearUsersError,\n resetPassword,\n} from '../../../../actions/usersActions'\n\nexport default function ResetPassword() {\n const dispatch = useDispatch()\n const usersState = useSelector(state => state.users)\n const { error } = usersState\n\n const params = new URLSearchParams(window.location.search)\n const email = params.get('email')\n const passwordToken = params.get('passwordToken')\n\n const [createPassword, setCreatePassword] = useState({\n newPassword: '',\n repeatNewPassword: '',\n error: '',\n })\n\n // error handling\n if (usersState.error) {\n // TODO: show a nice pop-up\n alert(usersState.error)\n dispatch(clearUsersError())\n }\n\n const handleNewPassword = e => {\n const { value, name } = e.target\n setCreatePassword({ ...createPassword, [name]: value })\n }\n\n const handleResetPassword = () => {\n const { newPassword, repeatNewPassword } = createPassword\n const credentials = {\n email,\n passwordToken,\n newPassword,\n }\n\n if (newPassword && newPassword === repeatNewPassword) {\n dispatch(resetPassword(credentials))\n setCreatePassword({\n ...createPassword,\n error: '',\n })\n } else if (!newPassword && !repeatNewPassword) {\n setCreatePassword({\n ...createPassword,\n error: 'Please type the new password',\n })\n } else {\n setCreatePassword({\n ...createPassword,\n error: 'Password does not match confirm password',\n })\n }\n }\n\n const returnError = () => {\n let resetPasswordError\n if (createPassword.error) {\n resetPasswordError = createPassword.error\n } else if (error) {\n resetPasswordError = error\n }\n if (resetPasswordError) {\n return
{resetPasswordError}!
\n }\n }\n\n return (\n
\n

Reset Password for {email}

\n \n \n {returnError()}\n \n Reset Password\n \n
\n )\n}\n","import './SignUp.scss'\n\nimport React, { useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Link } from 'react-router-dom'\n\nimport { clearUsersError, signUp } from '../../../../actions/usersActions'\n\nexport default function SignUp() {\n const dispatch = useDispatch()\n const usersState = useSelector(state => state.users)\n const [signUpData, setSignUpData] = useState({})\n\n const businessSignUp = window.location.pathname === '/business-signup'\n\n // error handling\n if (usersState.error) {\n // TODO: show a nice pop-up\n alert(usersState.error)\n dispatch(clearUsersError())\n }\n\n const signUpDataChanged = e => {\n let { name, value } = e.target\n let newSignUpData = { ...signUpData, [name]: value }\n setSignUpData(newSignUpData)\n }\n\n const handleSignUp = () => {\n if (businessSignUp) {\n dispatch(signUp({ ...signUpData, business: true }))\n } else {\n dispatch(signUp(signUpData))\n }\n }\n\n return (\n <>\n
\n {!businessSignUp && (\n \n

LogIn

\n \n )}\n\n {!businessSignUp && (\n \n

\n SignUp\n

\n \n )}\n\n {businessSignUp && (\n

\n Business SignUp\n

\n )}\n
\n\n \n \n \n \n {!businessSignUp && (\n \n
Privacy Policy
\n \n )}\n {businessSignUp && (\n \n
Privacy Policy
\n \n )}\n \n Sign Up\n \n \n )\n}\n","import '../../App.scss'\nimport './Welcome.scss'\n\nimport React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport ContactUs from '../ContactUs/ContactUs'\nimport PrivacyPolicy from '../PrivacyPolicy/PrivacyPolicy'\nimport ForgotPassword from './components/ForgotPassword/ForgotPassword'\nimport LogIn from './components/LogIn/LogIn'\nimport ResetPassword from './components/ResetPassword/ResetPassword'\nimport SignUp from './components/SignUp/SignUp'\n\nexport default function Welcome() {\n const path = window.location.pathname\n\n const renderRightPage = () => {\n switch (path) {\n case '/':\n case '/login':\n return \n case '/signup':\n case '/business-signup':\n return \n case '/forgot-password':\n return \n case '/reset-password':\n return \n case '/contact-us':\n return \n case '/privacy-policy':\n case '/business-privacy-policy':\n return (\n
\n \n
\n )\n default:\n return <>\n }\n }\n\n const renderRightPageLink = () => {\n switch (path) {\n case '/':\n case '/login':\n case '/signup':\n return (\n \n \n \n )\n case '/forgot-password':\n case '/reset-password':\n case '/contact-us':\n return (\n \n \n \n )\n case '/privacy-policy':\n return (\n \n \n \n )\n case '/business-privacy-policy':\n return (\n \n \n \n )\n default:\n return <>\n }\n }\n\n return (\n
\n
\n
\n Discover local boutiques, touristic places, activities, events,\n festivals and more around you.\n
\n \n

Welcome

\n
PinApp Technology
\n

- City as a Playground -

\n
\n Win discounts and prizes for taking challenges from local businesses.\n
\n\n
\n \n \n \n \n \n \n
\n
\n\n
\n {renderRightPageLink()}\n\n
{renderRightPage()}
\n
\n
\n )\n}\n","import './App.scss'\n\nimport React, { useEffect, useState } from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { BrowserRouter, Redirect, Route, Switch } from 'react-router-dom'\n\nimport { getCurrentUser, getCurrentUserRoles } from './actions/usersActions'\nimport FullScreen from './components/FullScreen/FullScreen'\nimport Home from './components/Home/Home'\nimport Welcome from './components/Welcome/Welcome'\n\nexport default function App() {\n const dispatch = useDispatch()\n const [loading, setLoading] = useState(false)\n const currentUser = useSelector(state => state.users.currentUser)\n\n const haveToken = () =>\n localStorage.getItem('TokenType') && localStorage.getItem('AccessToken')\n\n useEffect(() => {\n const requestCurrentUser = async () => {\n setLoading(true)\n await dispatch(getCurrentUser())\n await dispatch(getCurrentUserRoles())\n setLoading(false)\n }\n\n if (haveToken()) {\n requestCurrentUser()\n }\n }, [dispatch])\n\n if (loading || (haveToken() && !currentUser)) {\n // Loading\n return <>\n } else if (currentUser) {\n return (\n // Authenticated\n \n \n \n \n {/*FB*/}\n } />\n \n \n )\n } else {\n return (\n // Not authenticated\n \n \n \n \n \n \n \n \n \n \n \n {/*FB*/}\n } />\n \n \n )\n }\n}\n","import * as actions from '../actionTypes/businessesActionTypes'\n\nlet initialState = {\n businesses: [],\n currentBusiness: null,\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case actions.SET_BUSINESSES_ERROR:\n return {\n ...state,\n error: action.error,\n }\n\n case actions.CLEAR_BUSINESSES_ERROR:\n return {\n ...state,\n error: null,\n }\n\n case actions.UPDATE_LIST_OF_BUSINESSES:\n const businesses = [action.businessList || []]\n return { ...state, businesses }\n\n case actions.SET_CURRENT_BUSINESS:\n const currentBusiness = state.businesses[0].find(x => x.Id === action.ID)\n return { ...state, currentBusiness }\n\n case actions.DELETE_BUSINESS:\n const businessIndex = state.businesses[0].findIndex(\n c => c.Id === action.businessId\n )\n state.businesses[0].splice(businessIndex, 1)\n const businesses2 = [...state.businesses]\n return { ...state, businesses: businesses2 }\n\n default:\n return state\n }\n}\n","import * as actions from '../actionTypes/challengesActionTypes'\n\nlet initialState = {\n challenges: [],\n currentChallenge: null,\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case actions.SET_CHALLENGES_ERROR:\n return {\n ...state,\n error: action.error,\n }\n\n case actions.CLEAR_CHALLENGES_ERROR:\n return {\n ...state,\n error: null,\n }\n\n case actions.UPDATE_LIST_OF_CHALLENGES:\n const challenges = [action.challengeList || []]\n return { ...state, challenges }\n\n case actions.SET_CURRENT_CHALLENGE:\n const currentChallenge = state.challenges[0].find(x => x.ID === action.ID)\n return { ...state, currentChallenge }\n\n case actions.SET_CHALLENGES_STEP_TYPES:\n return { ...state, stepTypes: action.stepTypes }\n\n case actions.SET_CHALLENGES_LOCATIONS:\n return { ...state, locations: action.locations }\n\n case actions.UPDATE_CURRENT_CHALLENGE_DATA:\n return { ...state, currentChallenge: action.challenge }\n\n case actions.SET_CURRENT_CHALLENGE_TASKS:\n return { ...state, currentChallengeTasks: action.tasks }\n\n case actions.SET_CURRENT_CHALLENGE_TASK_INDEX:\n return { ...state, currentChallengeTaskIndex: action.index }\n\n case actions.UPDATE_SELECTED_TASK:\n let newCurrentChallengeTasks = []\n\n const selectedTasks = state.currentChallengeTasks\n\n if (\n typeof action.challengeTaskIndex == 'number' &&\n action.challengeTaskIndex < selectedTasks?.length\n ) {\n selectedTasks[action.challengeTaskIndex] = action.challengeTask\n newCurrentChallengeTasks = [...selectedTasks]\n } else {\n if (selectedTasks) {\n newCurrentChallengeTasks = [...selectedTasks, action.challengeTask]\n } else {\n newCurrentChallengeTasks = [action.challengeTask]\n }\n }\n\n return { ...state, currentChallengeTasks: newCurrentChallengeTasks }\n\n case actions.DELETE_CHALLENGE:\n const challengeIndex = state.challenges[0].findIndex(\n c => c.Id === action.challengeId\n )\n state.challenges[0].splice(challengeIndex, 1)\n const challenges2 = [...state.challenges]\n return { ...state, challenges: challenges2 }\n\n case actions.UPDATE_CURRENT_STEPS_TO_APPROVE:\n return {\n ...state,\n stepsToApprove: action.stepsToApprove,\n }\n\n case actions.UPDATE_CURRENT_STEPS:\n return {\n ...state,\n currentChallengeUserSubmits: action.steps,\n }\n\n case actions.SET_CURRENT_CHALLENGE_SUBMIT_ID:\n return {\n ...state,\n currentChallengeSubmitId: action.currentChallengeSubmitId,\n }\n\n case actions.CLICKED_FROM_SEE_ALL_BUTTON:\n return {\n ...state,\n displayedBySeeAllButton: action.displayedBySeeAllButton,\n }\n\n case actions.SET_CHALLENGE_STEP_SUBMIT_AS_APPROVED:\n const stepsToApprove = state.stepsToApprove?.map(x =>\n x.ID === action.challengeStepSubmitID\n ? { ...x, Approved: true }\n : { ...x }\n )\n const currentChallengeUserSubmits =\n state.currentChallengeUserSubmits?.map(x =>\n x.ID === action.challengeStepSubmitID\n ? { ...x, Approved: true }\n : { ...x }\n )\n return {\n ...state,\n stepsToApprove,\n currentChallengeUserSubmits,\n }\n\n case actions.SET_CHALLENGE_STEP_SUBMITS_AS_APPROVED:\n let stepsToApprove2\n let currentChallengeUserSubmits2\n\n if (action.challengeId) {\n stepsToApprove2 = state.stepsToApprove.map(x =>\n x.RejectionMessage || x.ChallengeID !== action.challengeId\n ? { ...x }\n : { ...x, Approved: true }\n )\n currentChallengeUserSubmits2 = state.currentChallengeUserSubmits?.map(\n x =>\n x.RejectionMessage || x.ChallengeID !== action.challengeId\n ? { ...x }\n : { ...x, Approved: true }\n )\n }\n\n if (action.challengeSubmitsIds) {\n stepsToApprove2 = state.stepsToApprove.map(x =>\n x.RejectionMessage || action.challengeSubmitsIds.indexOf(x.ID) === -1\n ? { ...x }\n : { ...x, Approved: true }\n )\n currentChallengeUserSubmits2 = state.currentChallengeUserSubmits?.map(\n x =>\n x.RejectionMessage ||\n action.challengeSubmitsIds.indexOf(x.ID) === -1\n ? { ...x }\n : { ...x, Approved: true }\n )\n }\n\n return {\n ...state,\n stepsToApprove: stepsToApprove2,\n currentChallengeUserSubmits: currentChallengeUserSubmits2,\n }\n\n case actions.SET_CHALLENGE_STEP_SUBMIT_REJECTION_MESSAGE:\n const stepsToApprove3 = state.stepsToApprove.map(x =>\n x.ID === action.challengeStepSubmitID\n ? { ...x, RejectionMessage: action.rejectionMessage }\n : { ...x }\n )\n return {\n ...state,\n stepsToApprove: stepsToApprove3,\n }\n\n default:\n return state\n }\n}\n","import * as actions from '../actionTypes/locationsActionTypes'\n\nlet initialState = {\n locations: [],\n locationTypes: [],\n currentLocation: null,\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case actions.SET_LOCATIONS_ERROR:\n return {\n ...state,\n error: action.error,\n }\n\n case actions.CLEAR_LOCATIONS_ERROR:\n return {\n ...state,\n error: null,\n }\n\n case actions.UPDATE_LIST_OF_LOCATIONS:\n const locations = [action.locationList || []]\n return { ...state, locations }\n\n case actions.GET_LOCATION_TYPES:\n const locationTypes = action.locationTypes\n return { ...state, locationTypes }\n\n case actions.SET_CURRENT_LOCATION:\n const currentLocation = state.locations[0].find(x => x.ID === action.ID)\n return { ...state, currentLocation }\n\n case actions.SET_CURRENT_LOCATION_OPEN_HOURS:\n const currentLocationData = state.currentLocation\n return {\n ...state,\n currentLocation: {\n ...currentLocationData,\n OpenHours: action.openHours,\n },\n }\n\n case actions.DELETE_LOCATION:\n const locationIndex = state.locations[0].findIndex(\n l => l.ID === action.locationID\n )\n state.locations[0].splice(locationIndex, 1)\n const locations2 = [...state.locations]\n return { ...state, locations: locations2 }\n\n default:\n return state\n }\n}\n","import * as actions from '../actionTypes/pinsActionTypes'\n\nlet initialState = {\n mapPins: [],\n}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case actions.SET_PINS_ERROR:\n return {\n ...state,\n error: action.error,\n }\n\n case actions.CLEAR_PINS_ERROR:\n return {\n ...state,\n error: null,\n }\n\n case actions.MAP_PINS_RECEIVED:\n const mapPinsIds = state.mapPins.map(x => x.ID)\n const newMapPins = action.mapPins.filter(\n x => mapPinsIds.indexOf(x.ID) === -1\n )\n return {\n ...state,\n newMapPins,\n mapPins: state.mapPins.concat(newMapPins),\n }\n\n case actions.UPDATE_SHOWN_PINS:\n return {\n ...state,\n shownPins: action.pins,\n }\n\n case actions.UPDATE_GIVEN_STAR_VALUE:\n const pinIndex = state.shownPins.findIndex(p => p.ID === action.pinID)\n state.shownPins[pinIndex].StarGiven = action.starValue\n const shownPins = [...state.shownPins]\n\n return { ...state, shownPins }\n\n default:\n return state\n }\n}\n","import * as actions from '../actionTypes/prizesActionTypes'\n\nlet initialState = {}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case actions.SET_PRIZES_ERROR:\n return {\n ...state,\n error: action.error,\n }\n\n case actions.CLEAR_PRIZES_ERROR:\n return {\n ...state,\n error: null,\n }\n\n default:\n return state\n }\n}\n","import * as actions from '../actionTypes/usersActionTypes'\n\nlet initialState = {}\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case actions.SET_USERS_ERROR:\n return {\n ...state,\n error: action.error,\n currentUser: null,\n }\n\n case actions.CLEAR_USERS_ERROR:\n return {\n ...state,\n error: null,\n }\n\n case actions.CURRENT_USER_RECEIVED:\n return {\n ...state,\n currentUser: action.currentUser,\n }\n\n case actions.CURRENT_USER_ROLES_RECEIVED:\n return {\n ...state,\n currentUser: {\n ...state.currentUser,\n _isAdmin: action.currentUserRoles.includes('Administrator'),\n _isBusinessOwner: action.currentUserRoles.includes('BusinessOwner'),\n _isBusinessManager:\n action.currentUserRoles.includes('BusinessManager'),\n _isBetaTester: action.currentUserRoles.includes('BetaTester'),\n },\n }\n\n case actions.FORGOT_PASSWORD_EMAIL_SENT:\n return {\n ...state,\n forgotPasswordEmailSent: action.emailSent,\n }\n\n case actions.CONTACT_US_EMAIL_SENT:\n return {\n ...state,\n contactUsEmailSent: action.emailSent,\n }\n\n default:\n return state\n }\n}\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 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 (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 { composeWithDevTools } from '@redux-devtools/extension'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { Provider } from 'react-redux'\nimport { applyMiddleware, createStore } from 'redux'\nimport thunk from 'redux-thunk'\n\nimport App from './App'\nimport rootReducer from './reducers/rootReducer'\nimport * as serviceWorker from './serviceWorker'\n\nconst store = createStore(\n rootReducer(),\n composeWithDevTools(applyMiddleware(thunk))\n)\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n)\n\nserviceWorker.unregister()\n","import { combineReducers } from 'redux'\n\nimport businessesReducer from './businessesReducer'\nimport challengesReducer from './challengesReducer'\nimport locationsReducer from './locationsReducer'\nimport pinsReducer from './pinsReducer'\nimport prizesReducer from './prizesReducer'\nimport usersReducer from './usersReducer'\n\nexport default initialState =>\n combineReducers({\n pins: pinsReducer,\n users: usersReducer,\n businesses: businessesReducer,\n locations: locationsReducer,\n challenges: challengesReducer,\n prizes: prizesReducer,\n })\n"],"sourceRoot":""}