{"version":3,"sources":["components/AlertTemplate/icons/BaseIcon.js","components/AlertTemplate/icons/InfoIcon.js","components/AlertTemplate/icons/SuccessIcon.js","components/AlertTemplate/icons/ErrorIcon.js","components/AlertTemplate/icons/CloseIcon.js","components/AlertTemplate/AlertTemplate.js","components/Analytics.js","components/Layout.js","components/PaymentRequestForm/error.js","components/PaymentRequestForm/ErrorMessage.js","components/PaymentRequestForm/Result.js","components/PaymentRequestForm/CheckoutForm.js","components/PaymentRequestForm/PaymentRequestForm.js","components/Subscribe/GetRecommendations.js","components/Subscribe/SimpleTrial.js","components/Subscribe/AppSumo.js","aws-exports.js","components/Billing/Billing.js","graphql/queries.js","graphql/subscriptions.js","graphql/mutations.js","components/ErrorBoundary.js","components/StockList/StockList.js","components/StockPicks/StockPicks.js","components/StockPicks/StockPicksSkeleton.js","components/UpdateAmountToInvest.js","components/AmntToInvest/AmntToInvest.js","components/ScheduledReports/ScheduledReports.js","components/UpgradeBadge/UpgradeBadge.js","components/SkeletonLoader/SkeletonLoader.js","components/Portfolio/Portfolio.js","components/ConnectPortfolio.js","components/MyTheme.js","components/TransactionHistory/TransactionHistory.js","components/PortfolioTracker/PortfolioTracker.js","components/StockChart.js","components/SearchAddStock/SearchAddStock.js","components/StockPage/StockPage.js","components/NotFoundPage/NotFoundPage.js","components/ProductTour/ProductTour.js","components/Sidebar/NavLinks.js","components/Sidebar/Sidebar.js","components/Header/MySignOut.js","components/SearchMenuItem.js","components/Header/Search.js","components/Header/SearchPlaceholder.js","components/Header/Header.js","components/BigLogo.js","components/SignLogo.js","components/SignBg.js","AuthProtectedApp.js","App.js","serviceWorker.js","index.js","components/Subscribe/logo-w.svg","components/Subscribe/photo.png","components/StockList/fallback-logo.png","components/Billing/logos/unknown.svg","components/Billing/logos/visa.svg","components/Billing/logos/american-express.svg","components/Billing/logos/diners-club.svg","components/Billing/logos/discover.svg","components/Billing/logos/jcb.svg","components/Billing/logos/mastercard.svg","components/Billing/logos/unionpay.svg","components/Sidebar/logo-min.svg","logo.svg","logo-min.svg"],"names":["BaseIcon","color","pushRight","children","xmlns","width","height","viewBox","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","style","marginRight","minWidth","marginLeft","InfoIcon","cx","cy","r","x1","y1","x2","y2","SuccessIcon","points","ErrorIcon","CloseIcon","alertStyle","backgroundColor","padding","textTransform","borderRadius","display","fontSize","justifyContent","alignItems","boxShadow","boxSizing","buttonStyle","border","cursor","AlertTemplate","message","options","close","type","flex","onClick","initGA","ReactGA","initialize","logPageView","window","FS","getCurrentSessionURL","set","page","location","pathname","fullStoryUrl","pageview","logEvent","category","action","label","event","Layout","GA_INITIALIZED","this","props","React","Component","handleError","error","errors","length","response","data","ErrorMessage","className","role","d","Result","subscriptionIncomplete","href","invoiceUrl","CARD_OPTIONS","iconStyle","base","iconColor","fontWeight","fontFamily","fontSmoothing","invalid","CardField","onChange","Field","id","placeholder","required","autoComplete","value","htmlFor","SubmitButton","processing","disabled","DEFAULT_STATE","cardComplete","paymentMethod","email","name","paymentComplete","CheckoutForm","handleSubmit","a","preventDefault","stripe","elements","state","getElement","focus","setState","createPaymentMethod","card","CardElement","billing_details","payload","console","log","myInit","headers","body","API","post","then","status","latest_invoice","hosted_invoice_url","catch","onSubmit","target","complete","ELEMENT_OPTIONS","paymentRequestButton","theme","PaymentRequestForm","canMakePayment","hasCheckedAvailability","errorMessage","paymentRequest","createPaymentRequest","price","country","currency","total","amount","requestPayerName","requestPayerEmail","on","stripePromise","loadStripe","process","apiVersion","GetRecommendations","InjectedCheckoutForm","template","position","timeout","offset","transition","containerStyle","marginBottom","src","logo","alt","photo","rel","script","document","createElement","async","appendChild","SimpleTrial","callInProgress","trialComplete","handleChange","bind","submit","trim","alert","trialForm","ev","thankYouMessage","withAlert","AppSumo","username","code","redeemForm","awsmobile","Billing","cardBrand","e","cardChange","brand","brandLogo","visaLogo","masterCard","americanExpress","discoverLogo","dinersClub","jcbLogo","unionPay","unknownLogo","isUserInPremiumGroup","paymentCallInProgress","subscriptionCancelled","subscriptionIncompleteExpired","showUpdateCard","brandLogoCurrent","cardLoaded","isSubscriptionCancelled","poll","cancelSubscription","renewSubscription","getCard","updateCard","showUpdateCardForm","getInvoices","isSubscriptionIncomplete","Auth","currentSession","bypassCache","session","refreshToken","getRefreshToken","currentAuthenticatedUser","user","refreshSession","err","updatedSession","currentUserCredentials","credentials","userPoolId","Amplify","_config","aws_user_pools_id","params","Logins","getIdToken","getJwtToken","refresh","updatedCredentials","refreshUserCredentials","premiumGroup","groups","accessToken","includes","idToken","fn","callback","errback","interval","endTime","Number","Date","setTimeout","p","Error","createToken","token","subscriptionExist","loadCardsAndInvoices","del","put","get","invoices","map","invoice","key","number","created","toLocaleDateString","lines","period","start","end","description","cardError","cardPlaceHolder","highlightColor","opacity","fillRule","clipRule","incompleteSubscription","noSubscription","cardFront","last4","textAlign","exp_month","exp_year","toString","substr","cardBack","dynamicCard","staticAddCard","cancelledSubscription","activeSubscription","daysLeft","trialEnd","now","Math","round","trialSubscription","expiredTrialSubscription","pastDueSubscription","invoicesPlaceHolder","margin","invoiceList","isTrial","subscriptionPastDue","subscriptionStatus","cards","injectStripe","listTransactionHistorys","onCreatePortfolioStock","onCreateSettings","onUpdateSettings","createPortfolioStock","updatePortfolioStock","deletePortfolioStock","updateSettings","ErrorBoundary","errorInfo","whiteSpace","componentStack","StockList","apiName","hovered","hoveredId","modal","modalId","disableButton","handleSharesAmountChange","toggleModal","targetInput","createRef","stock","path","symbol","input","sharesNumber","sharesNumberDiffWithRecommended","recommended","graphql","graphqlOperation","mutations","updateAmountToInvest","amountToDeduct","result","currentSettings","listSettingss","items","amountToInvest","handleMessage","current","success","fallbackLogo","stocks","title","stockList","onMouseEnter","showRemoveButton","onMouseLeave","hideRemoveButton","onError","addDefaultSrc","to","Modal","isOpen","fade","toggle","zIndex","ModalHeader","ModalBody","Input","defaultValue","innerRef","Button","stroke-width","stroke-linecap","stroke-linejoin","changePercent","addStock","addToPortfolio","removeFromPortfolio","StockPicks","StockPicksSkeleton","UpdateAmountToInvest","isAmountToInvestInputValid","undefined","indexOf","isNaN","Form","FormGroup","AmntToInvest","amountToInvestSetting","loading","getAmountToInvest","getSettings","subscribeForUpdates","subscriptions","owner","subscribe","next","loadingTitle","selectedDict","1","2","3","4","ScheduledReports","onDateChange","date","weeklyDays","biweeklyDays","updateInProgress","existingReport","existingReportId","getScheduledReports","object","Object","keys","find","getInitStateForSchedulePicker","scheduledReports","stringSelection","getKeyByValue","frequency","selected","parseInt","startDate","onDays","nextRun","index","push","splice","sort","today","LocalDate","nextRunDay","dayOfWeek","daysToNextBusinessDay","plusDays","closestPickedDayOfWeek","DayOfWeek","of","nextBusinessDay","with","TemporalAdjusters","year","getFullYear","month","getMonth","getDate","nextRunDate","equals","MONDAY","toUTCString","persistScheduledReport","processPersistenceSuccess","processPersistenceFailure","processSubscriptionError","updateCurrentUserGroups","Row","onRadioBtnClick","checked","ButtonGroup","onWeeklyDaysCheckboxBtnClick","active","onBiweeklyDaysCheckboxBtnClick","minDate","updateScheduledReports","cancelReports","UpgradeBadge","flexGrow","SkeletonLoader","circle","COLORS","CustomLabel","value1","value2","x","y","textAnchor","dominantBaseline","dy","alignmentBaseline","renderCustomizedLabel","RADIAN","PI","midAngle","outerRadius","percent","sin","cos","sx","sy","mx","my","ex","ey","toFixed","Portfolio","buyBadge","stockPicks","tickersWithShares","filter","b","tickersHold","tickersHoldRecommended","recommendedTickersAdd","recommendedTickersSell","flexWrap","loop","renderer","autoplay","animationData","stockPlaceholder","isClickToPauseDisabled","exact","piePlaceholder","pieLoading","onPieEnter","el","innerRadius","paddingAngle","labelLine","dataKey","startAngle","endAngle","content","reduce","o","toLocaleString","entry","components","showAmountToInvest","showReportSchedule","ConnectPortfolio","subscriptionsArr","buyBadgeShow","onUpdatePortfolioStockSubscription","updatePortfolioStockData","getStocks","onDeletePortfolioStockSubscription","deletePortfolioStockData","onCreatePortfolioStockSubscription","createPortfolioStockData","onUpdateSettingsSubscription","onCreateSettingsSubscription","getDefaultState","getPortfolio","getStockPicks","subscribeForStockUpdates","loadStocks","forEach","subscription","unsubscribe","MyTheme","container","flexDirection","formContainer","formSection","formField","sectionHeader","sectionBody","sectionFooter","sectionFooterPrimaryContent","sectionFooterSecondaryContent","button","photoPickerButton","photoPlaceholder","signInButton","signInButtonIcon","signInButtonContent","amazonSignInButton","facebookSignInButton","googleSignInButton","oAuthSignInButton","formRow","strike","strikeContent","actionRow","hint","radio","inputLabel","toast","navBar","nav","navRight","navItem","navButton","TransactionHistory","isLoading","transactionHistory","nextToken","queries","thItem","ListGroupItem","createdAt","transactionSkeleton","ListGroup","getHistoryItems","queryFilter","limit","historyItems","historyItem","stateHistoryItems","mergedHistoryItems","concat","CustomTooltip","portfolioValue","valuePortfolio","valueBenchmark","PortfolioTracker","change","recommendedOnly","containerWidth","containerHeight","getTooltip","getChart","node","formatedDate","timePart","getHours","getMinutes","datePart","activeLink","serie","periodName","handlePeriodChange","ch0","ch1","chartData","i","chartLoading","benchmarkValue","stopColor","stopOpacity","hide","domain","activeDot","baseLine","fillOpacity","handlePeriodClick","benchmarkSymbols","dataPointsForPortfolioTracker","initialPortfolioValue","dataPoints","benchmarks","benchmark","benchmarkData","memo","useRef","useEffect","innerHTML","ref","SearchAddStock","isAddStockInputValid","toUpperCase","latestPrice","StockPage","rating","averageValue","stockId","match","getPortfolioStock","evaluatedStock","getEvaluatedStocks","prevProps","prevState","getStockEvaluation","getCurrentStockFromPortfolio","ratingTextColor","NotFoundPage","ProductTour","align","frameborder","allow","allowfullscreen","NavLinks","navLink","Sidebar","sidebarMin","showPortfolioPieCharts","menuOpen","closeMenu","logger","Logger","Constants","SignOut","signOut","Hub","listen","onHubCapsule","_isMounted","findState","authState","authData","stateFromStorage","capsule","channel","JSON","parse","localStorage","getItem","removeItem","debug","googleSignOut","facebookSignOut","amazonSignOut","auth0SignOut","provider","opts","changeState","I18n","AuthPiece","SearchMenuItem","_handleClick","onMouseDown","conditionalClassNames","defaultProps","noop","menuItemContainer","Search","allowNew","multiple","query","_renderMenu","results","menuProps","idx","grouped","groupBy","option","text","item","search","inputClear","_typeahead","instance","getInstance","clear","blur","_handleSearch","makeAndHandleRequest","res","renderMenu","onFocus","topStocksPanel","labelKey","minLength","onSearch","iexId","SearchPlaceholder","history","useHistory","topStocks","backgroundImage","Header","logoSwitch","pageNameVisible","pageName","headerEl","searchInput","setPathName","nextProps","AlwaysOn","UncontrolledButtonDropdown","inNavbar","DropdownToggle","caret","DropdownMenu","right","DropdownItem","header","logoMin","hidePageName","hideHeaderEl","showHeaderEl","hidetopStocksPanel","size","Avatar","getRandomColor","withRouter","BigLogo","logoStyle","SignLogo","signBgStyle","SignBg","sidebarStyle","condition","sidebarCol","appCol","configure","aws_exports","AuthProtectedApp","showComponent","component","c","hasOwnProperty","showStockAddForm","assign","setItem","String","sidebarSwitch","apiKey","headerStyle","signUpConfig","hiddenDefaults","withAuthenticator","App","isLocalhost","Boolean","hostname","registerValidSW","swUrl","config","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","TagManager","gtmId","ReactDOM","render","getElementById","URL","origin","addEventListener","fetch","ready","unregister","reload","checkValidServiceWorker","module","exports"],"mappings":"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","file":"static/js/main.7b8b7646.chunk.js","sourcesContent":["import React from \"react\";\n\nconst BaseIcon = ({ color, pushRight = true, children }) => (\n \n {children}\n \n);\n\nexport default BaseIcon;\n","import React from \"react\";\nimport BaseIcon from \"./BaseIcon\";\n\nconst InfoIcon = () => (\n \n \n \n \n \n);\n\nexport default InfoIcon;\n","import React from \"react\";\nimport BaseIcon from \"./BaseIcon\";\n\nconst SuccessIcon = () => (\n \n \n \n);\n\nexport default SuccessIcon;\n","import React from \"react\";\nimport BaseIcon from \"./BaseIcon\";\n\nconst ErrorIcon = () => (\n \n \n \n \n \n);\n\nexport default ErrorIcon;\n","import React from \"react\";\nimport BaseIcon from \"./BaseIcon\";\n\nconst CloseIcon = () => (\n \n \n \n \n);\n\nexport default CloseIcon;\n","import React from \"react\";\nimport InfoIcon from \"./icons/InfoIcon\";\nimport SuccessIcon from \"./icons/SuccessIcon\";\nimport ErrorIcon from \"./icons/ErrorIcon\";\nimport CloseIcon from \"./icons/CloseIcon\";\n\nconst alertStyle = {\n backgroundColor: \"#ffffff\",\n color: \"#4A4A4A\",\n padding: \"10px\",\n textTransform: \"none\",\n borderRadius: \"12px\",\n display: \"flex\",\n fontSize: \"12px\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n boxShadow: \"0px 16px 34px rgba(166, 184, 255, 0.273738)\",\n width: \"300px\",\n boxSizing: \"border-box\"\n};\n\nconst buttonStyle = {\n marginLeft: \"20px\",\n border: \"none\",\n backgroundColor: \"transparent\",\n cursor: \"pointer\",\n color: \"#FFFFFF\"\n};\n\nconst AlertTemplate = ({ message, options, style, close }) => {\n return (\n
\n {options.type === \"info\" && }\n {options.type === \"success\" && }\n {options.type === \"error\" && }\n {message}\n \n
\n );\n};\n\nexport default AlertTemplate;\n","import ReactGA from 'react-ga'\n\nexport const initGA = () => {\n ReactGA.initialize('UA-163373138-2')\n}\n\nexport const logPageView = () => {\n if (window.FS && window.FS.getCurrentSessionURL) {\n ReactGA.set({ page: window.location.pathname, fullStoryUrl: window.FS.getCurrentSessionURL()})\n } else {\n ReactGA.set({ page: window.location.pathname })\n }\n ReactGA.pageview(window.location.pathname)\n}\n\nexport const logEvent = (category = '', action = '', label = '') => {\n if (category && action && label) {\n ReactGA.event({ category, action, label })\n }\n}\n\nexport const logException = (description = '', fatal = false) => {\n if (description) {\n ReactGA.exception({ description, fatal })\n }\n}","import React from 'react'\nimport { initGA, logPageView } from './Analytics'\n\nexport default class Layout extends React.Component {\n componentDidMount () {\n if (!window.GA_INITIALIZED) {\n initGA()\n window.GA_INITIALIZED = true\n logPageView()\n }\n }\n render () {\n return (\n
\n {this.props.children}\n
\n )\n }\n}","const handleError = function(error) {\n const errorMessage = \"Error processing operation\";\n\n if (\n error &&\n error.errors &&\n error.errors.length > 0 &&\n error.errors[0].message\n ) {\n return error.errors[0].message\n } else if (\n error &&\n error.response &&\n error.response.data &&\n error.response.data.message\n ) {\n return error.response.data.message\n } else if (error && error.message) {\n return error.message;\n } else {\n return errorMessage;\n }\n }\n\nexport default handleError;","import React from 'react';\n\nconst ErrorMessage = ({ children }) => (\n
\n \n \n \n \n {children}\n
\n);\n\nexport default ErrorMessage;\n\n","import React from 'react';\n\nfunction Result(props) {\n if (props.subscriptionIncomplete) {\n return (\n
\n\n
\n Payment failed\n
\n
\n Your card may have been declined or another payment error occured.\n
\n
\n Please finalize your payment using this link\n
\n
\n )\n }\n return (\n
\n\n
\n Payment successful\n
\n
\n Thank you for subscribing!\n
\n
\n Login to wealthX app, using your username and password that will be sent shortly to your email\n
\n
\n )\n}\n\nexport default Result;\n","import React from \"react\";\nimport { CardElement } from \"@stripe/react-stripe-js\";\nimport { API } from \"aws-amplify\";\nimport handleError from './error'\nimport ErrorMessage from './ErrorMessage'\nimport Result from './Result'\nimport { logEvent } from '../Analytics'\n\nconst CARD_OPTIONS = {\n iconStyle: \"solid\",\n style: {\n base: {\n iconColor: \"#c4f0ff\",\n color: \"#4a4a4a\",\n fontWeight: 500,\n fontFamily: \"Roboto, Open Sans, Segoe UI, sans-serif\",\n fontSize: \"14px\",\n fontSmoothing: \"antialiased\",\n \":-webkit-autofill\": {\n color: \"#fce883\",\n },\n \"::placeholder\": {\n color: \"#87BBFD\",\n },\n },\n invalid: {\n iconColor: \"#FFC7EE\",\n color: \"#eb1c26\",\n },\n },\n};\n\nconst CardField = ({ onChange }) => (\n
\n \n
\n);\n\nconst Field = ({\n label,\n id,\n type,\n placeholder,\n required,\n autoComplete,\n value,\n onChange,\n}) => (\n
\n \n \n
\n);\n\nconst SubmitButton = ({ processing, error, children, disabled }) => (\n \n {processing ? \"Processing...\" : children}\n \n);\n\nconst DEFAULT_STATE = {\n error: null,\n cardComplete: false,\n processing: false,\n paymentMethod: null,\n email: \"\",\n name: \"\",\n paymentComplete: false\n};\n\nclass CheckoutForm extends React.Component {\n constructor(props) {\n super(props);\n this.state = DEFAULT_STATE;\n }\n\n handleSubmit = async (event) => {\n event.preventDefault();\n\n const { stripe, elements } = this.props;\n const { email, name, error, cardComplete } = this.state;\n\n if (!stripe || !elements) {\n // Stripe.js has not loaded yet. Make sure to disable\n // form submission until Stripe.js has loaded.\n return;\n }\n\n if (error) {\n elements.getElement(\"card\").focus();\n return;\n }\n\n if (cardComplete) {\n this.setState({ processing: true });\n }\n\n const payload = await stripe.createPaymentMethod({\n type: \"card\",\n card: elements.getElement(CardElement),\n billing_details: {\n email,\n name,\n },\n });\n\n if (payload.error) {\n this.setState({ error: payload.error });\n } else {\n this.setState({ paymentMethod: payload.paymentMethod });\n let apiName = \"createSubscription\"; // replace this with your api name.\n let path = \"/create-subscription\"; //replace this with the path you have configured on your API\n console.log(payload.paymentMethod);\n let myInit = {\n headers: { \"Content-Type\": \"application/json\" },\n body: payload.paymentMethod// replace this with attributes you need\n };\n\n API.post(apiName, path, myInit)\n .then((response) => {\n if (response.status === 'active') {\n this.setState({\n processing: false,\n paymentComplete: true\n });\n } else {\n this.setState({\n processing: false,\n subscriptionIncomplete: true,\n paymentComplete: true,\n invoiceUrl: response.latest_invoice.hosted_invoice_url\n });\n }\n\n logEvent('Button', 'Click', 'Subscribe');\n }).catch(error => {\n this.setState({\n error : { message: handleError(error) }\n });\n this.setState({ processing: false });\n });\n // const paymentMethodId = this.paymentMethod.id;\n // if (latestInvoicePaymentIntentStatus === 'requires_payment_method') {\n // // Update the payment method and retry invoice payment\n // const invoiceId = localStorage.getItem('latestInvoiceId');\n // this.retryInvoiceWithNewPaymentMethod({\n // customerId,\n // paymentMethodId,\n // invoiceId,\n // priceId,\n // });\n // } else {\n // // Create the subscription\n // this.createSubscription({ customerId, paymentMethodId, priceId });\n // }\n\n }\n };\n\n render() {\n const { error, processing, name, email, paymentComplete, subscriptionIncomplete, invoiceUrl } = this.state;\n const { stripe } = this.props;\n return paymentComplete ? () :\n (\n \n {error && {error.message}}\n
\n {\n this.setState({ name: event.target.value });\n }}\n />\n {\n this.setState({ email: event.target.value });\n }}\n />\n
\n
\n {\n this.setState({\n error: event.error,\n cardComplete: event.complete,\n });\n }}\n />\n
\n\n \n Subscribe\n \n

Your account will be created automatically, once payment is processed

\n \n );\n\n }\n}\n\nexport default CheckoutForm;","import React from 'react';\nimport { API } from \"aws-amplify\";\nimport {\n PaymentRequestButtonElement\n} from \"@stripe/react-stripe-js\";\n\nimport CheckoutForm from './CheckoutForm'\nimport handleError from './error'\nimport ErrorMessage from './ErrorMessage'\nimport Result from './Result'\nimport { logEvent } from '../Analytics'\n\nconst ELEMENT_OPTIONS = {\n style: {\n paymentRequestButton: {\n theme: 'dark'\n },\n },\n};\n\nclass PaymentRequestForm extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n canMakePayment: false,\n hasCheckedAvailability: false,\n errorMessage: null,\n paymentComplete: false\n };\n }\n\n async componentDidUpdate() {\n const {stripe} = this.props;\n\n if (stripe && !this.paymentRequest) {\n // Create PaymentRequest after Stripe.js loads.\n this.createPaymentRequest(stripe);\n }\n }\n\n async createPaymentRequest(stripe) {\n let price = 2995;\n if (this.props.price) {\n price = this.props.price;\n }\n this.paymentRequest = stripe.paymentRequest({\n country: 'US',\n currency: 'usd',\n total: {\n label: 'wealthX - Personal Investor',\n amount: price,\n },\n requestPayerName: true,\n requestPayerEmail: true,\n });\n\n this.paymentRequest.on('paymentmethod', async (event) => {\n console.log('[PaymentMethod]: ', event.paymentMethod);\n console.log('[PaymentMethodEvent]: ', event);\n this.setState({paymentMethod: event.paymentMethod});\n\n let apiName = \"createSubscription\"; // replace this with your api name.\n let path = \"/create-subscription\"; //replace this with the path you have configured on your API\n let myInit = {\n headers: { \"Content-Type\": \"application/json\" },\n body: this.state.paymentMethod // replace this with attributes you need\n };\n\n API.post(apiName, path, myInit)\n .then((response) => {\n if (response.status === 'active') {\n this.setState({\n paymentComplete: true\n });\n } else {\n this.setState({\n subscriptionIncomplete: true,\n paymentComplete: true,\n invoiceUrl: response.latest_invoice.hosted_invoice_url\n });\n }\n logEvent('Button', 'Click', 'Subscribe');\n event.complete('success');\n }).catch(error => {\n let errorMessage = handleError(error);\n this.setState({\n errorMessage: errorMessage\n });\n event.complete('fail');\n });;\n });\n\n const canMakePaymentRes = await this.paymentRequest.canMakePayment();\n if (canMakePaymentRes) {\n this.setState({canMakePayment: true, hasCheckedAvailability: true});\n } else {\n this.setState({canMakePayment: false, hasCheckedAvailability: true});\n }\n }\n\n render() {\n const {\n canMakePayment,\n paymentMethod,\n errorMessage,\n hasCheckedAvailability,\n subscriptionIncomplete,\n invoiceUrl,\n paymentComplete\n } = this.state;\n\n return paymentComplete ? () : (\n
\n {errorMessage && {errorMessage}}\n {canMakePayment && (\n
\n {\n if (paymentMethod) {\n event.preventDefault();\n this.setState({\n errorMessage:\n 'You can only use the PaymentRequest button once. Refresh the page to start over.',\n });\n }\n }}\n\n options={{\n ...ELEMENT_OPTIONS,\n paymentRequest: this.paymentRequest,\n }}\n />\n

Your account will be created automatically, once payment is processed

\n
\n )}\n {!canMakePayment && hasCheckedAvailability &&\n \n }\n\n \n );\n }\n\n}\n\nexport default PaymentRequestForm;","import React, { Component } from \"react\";\nimport { Provider as AlertProvider } from \"react-alert\";\n\nimport { Elements, ElementsConsumer } from \"@stripe/react-stripe-js\";\nimport { loadStripe } from \"@stripe/stripe-js\";\n\nimport AlertTemplate from \"../AlertTemplate/AlertTemplate\";\nimport Layout from \"../Layout\";\nimport PaymentRequestForm from \"../PaymentRequestForm/PaymentRequestForm\";\n\nimport \"./Subscribe.css\";\nimport \"./GetRecommendations.css\";\nimport logo from \"./logo-w.svg\";\nimport photo from \"./photo.png\";\n\nconst stripePromise = loadStripe(process.env.REACT_APP_STRIPE_KEY, {\n apiVersion: \"2020-08-27\",\n});\n\nclass GetRecommendations extends Component {\n render() {\n const options = {\n position: \"bottom right\",\n timeout: 5000,\n offset: \"30px\",\n transition: \"fade\",\n containerStyle: {\n marginBottom: \"70px\",\n },\n };\n\n const price = 495\n const InjectedCheckoutForm = () => (\n \n {({ elements, stripe }) => (\n \n )}\n \n );\n const priceString = price / 100;\n return (\n \n \n
\n \n
\n
\n
\n \"wealthX\n
\n
\n

\n Get my stock recommendations for $29.95 ${priceString}/month\n

\n

\n for the first year\n

\n
\n
\n \"wealthX\"\n
\n
\n \n

\n {\" \"}\n By subscribing you agree to our\n
\n \n Terms of Service\n \n

\n
\n
\n
\n
\n
\n
\n );\n }\n\n componentDidMount () {\n const script = document.createElement(\"script\");\n\n script.src = \"https://fdf6ad0f00fe4294b0d4d3e3c56ee3d1.js.ubembed.com\";\n script.async = true;\n\n document.body.appendChild(script);\n }\n}\n\nexport default GetRecommendations;\n","import React, { Component } from \"react\";\nimport { API } from \"aws-amplify\";\n\nimport { withAlert } from \"react-alert\";\nimport { logEvent } from '../Analytics'\n\nimport Layout from \"../Layout\";\n\nimport \"./Subscribe.css\";\nimport \"./GetRecommendations.css\";\n\nimport logo from \"./logo-w.svg\";\nimport photo from \"./photo.png\";\n\nclass SimpleTrial extends Component {\n constructor(props) {\n super(props);\n this.state = {\n callInProgress: false,\n trialComplete: false\n };\n this.handleChange = this.handleChange.bind(this);\n this.submit = this.submit.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n handleChange(name, event) {\n this.setState({\n [name]: event.target.value.trim()\n });\n }\n\n async submit(event) {\n event.preventDefault();\n this.setState({\n callInProgress: true\n });\n\n if (this.state.email) {\n let apiName = \"createSubscription\";\n let path = \"/create-subscription\";\n let myInit = {\n headers: { \"Content-Type\": \"application/json\" },\n body: {\"trialEmail\": this.state.email}\n };\n\n API.post(apiName, path, myInit)\n .then((response) => {\n console.log(response);\n this.setState({\n callInProgress: false,\n trialComplete: true\n });\n logEvent('Button', 'Click', 'StartMyFree14DayTrial');\n }).catch(error => {\n this.handleError(error);\n });\n } else {\n this.handleError(\"Email not provided\");\n }\n\n }\n\n handleError(error) {\n const errorMessage = \"Error starting trial\";\n this.setState({\n callInProgress: false\n })\n\n if (error) {\n if(error.response && error.response.data && error.response.data.message) {\n this.props.alert.error(errorMessage + \": \" + error.response.data.message);\n } else {\n this.props.alert.error(errorMessage + \": \" + error);\n }\n } else {\n this.props.alert.error(errorMessage);\n }\n }\n\n render() {\n\n const trialForm =

\n Try our recommendations absolutely FREE for 14 days\n

\n
\n
\n
\n {\n this.handleChange(\"email\", ev);\n }}\n />\n
\n
\n \n
\n const thankYouMessage =
\n

\n Thank you for trying our recommendations!\n

\n\n
\n Login to wealthX app, using username and password sent to your email\n
\n
\n return (\n\n \n
\n
\n
\n \"wealthX\n
\n
\n {this.state.trialComplete ? (thankYouMessage) : (trialForm)}\n
\n
\n \"wealthX\"\n
\n
\n

\n {\" \"}\n By subscribing you agree to our\n
\n \n Terms of Service\n \n

\n
\n
\n
\n
\n );\n }\n\n}\n\nexport default withAlert()(SimpleTrial);","import React, { Component } from \"react\";\nimport { API } from \"aws-amplify\";\n\nimport { withAlert } from \"react-alert\";\nimport { logEvent } from '../Analytics'\n\nimport Layout from \"../Layout\";\n\nimport \"./Subscribe.css\";\nimport \"./GetRecommendations.css\";\n\nimport logo from \"./logo-w.svg\";\nimport photo from \"./photo.png\";\n\nclass AppSumo extends Component {\n constructor(props) {\n super(props);\n this.state = {\n callInProgress: false,\n trialComplete: false\n };\n this.handleChange = this.handleChange.bind(this);\n this.submit = this.submit.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n handleChange(name, event) {\n this.setState({\n [name]: event.target.value.trim()\n });\n }\n\n async submit(event) {\n event.preventDefault();\n this.setState({\n callInProgress: true\n });\n\n if (this.state.email && this.state.username && this.state.code) {\n let apiName = \"createSubscription\";\n let path = \"/create-subscription\";\n let myInit = {\n headers: { \"Content-Type\": \"application/json\" },\n body: {\n \"username\" : this.state.username,\n \"email\": this.state.email,\n \"appsumoCode\": this.state.code\n }\n };\n\n API.post(apiName, path, myInit)\n .then((response) => {\n console.log(response);\n this.setState({\n callInProgress: false,\n trialComplete: true\n });\n logEvent('Button', 'Click','AppSumoCodeRedeemed');\n }).catch(error => {\n this.handleError(error);\n });\n } else {\n this.handleError(\"Please fill in all required fields\");\n }\n\n }\n\n handleError(error) {\n const errorMessage = \"Error redeeming code\";\n this.setState({\n callInProgress: false\n })\n\n if (error) {\n if(error.response && error.response.data && error.response.data.message) {\n this.props.alert.error(errorMessage + \": \" + error.response.data.message);\n } else {\n this.props.alert.error(errorMessage + \": \" + error);\n }\n } else {\n this.props.alert.error(errorMessage);\n }\n }\n\n render() {\n\n const redeemForm =

\n Redeem wealthX AppSumo code below\n

\n

\n If you have wealthX account, please login to account and redeem at billing page\n

\n
\n
\n
\n {\n this.handleChange(\"username\", ev);\n }}\n />\n
\n
\n {\n this.handleChange(\"email\", ev);\n }}\n />\n
\n
\n {\n this.handleChange(\"code\", ev);\n }}\n />\n
\n
\n \n
\n const thankYouMessage =
\n

\n Your AppSumo coupon has been redeemed successfully\n

\n\n
\n Login to wealthX app, using username and password sent to your email\n
\n
\n return (\n\n \n
\n
\n
\n \"wealthX\n
\n
\n {this.state.trialComplete ? (thankYouMessage) : (redeemForm)}\n
\n
\n \"wealthX\"\n
\n
\n

\n {\" \"}\n By subscribing you agree to our\n
\n \n Terms of Service\n \n

\n
\n
\n
\n
\n );\n }\n\n componentDidMount() {\n\n }\n\n}\n\nexport default withAlert()(AppSumo);","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"us-east-1\",\n \"aws_content_delivery_bucket\": \"app.wealthx.ai-prod\",\n \"aws_content_delivery_bucket_region\": \"us-east-1\",\n \"aws_content_delivery_url\": \"http://app.wealthx.ai-prod.s3-website-us-east-1.amazonaws.com\",\n \"aws_cognito_identity_pool_id\": \"us-east-1:93e513a4-87e2-4b36-99e3-0ed51915e8f4\",\n \"aws_cognito_region\": \"us-east-1\",\n \"aws_user_pools_id\": \"us-east-1_gr64m6PMP\",\n \"aws_user_pools_web_client_id\": \"2b2slj70sbe0bp2bpn11f2btgo\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OFF\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_appsync_graphqlEndpoint\": \"https://b2wlq5iddzfmvjzpdtmowqn4bm.appsync-api.us-east-1.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"us-east-1\",\n \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"subscription\",\n \"endpoint\": \"https://079nmbtiz6.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n },\n {\n \"name\": \"stripeWebhookHandler\",\n \"endpoint\": \"https://v3oy9enrgb.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n },\n {\n \"name\": \"getStockPrice\",\n \"endpoint\": \"https://kpmwnn3om4.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n },\n {\n \"name\": \"paymentSource\",\n \"endpoint\": \"https://4qtjy2uss1.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n },\n {\n \"name\": \"invoices\",\n \"endpoint\": \"https://pbp6452xsi.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n },\n {\n \"name\": \"createSubscription\",\n \"endpoint\": \"https://z37axaaii1.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n },\n {\n \"name\": \"stockPicks\",\n \"endpoint\": \"https://8850w0nb46.execute-api.us-east-1.amazonaws.com/prod\",\n \"region\": \"us-east-1\"\n }\n ]\n};\n\n\nexport default awsmobile;\n","import React, { Component } from \"react\";\n\nimport { Auth, API } from \"aws-amplify\";\nimport Amplify from \"@aws-amplify/core\";\n\nimport { CardElement, injectStripe } from \"react-stripe-elements\";\nimport { withAlert } from \"react-alert\";\n\nimport visaLogo from \"./logos/visa.svg\";\nimport americanExpress from \"./logos/american-express.svg\";\nimport dinersClub from \"./logos/diners-club.svg\";\nimport discoverLogo from \"./logos/discover.svg\";\nimport jcbLogo from \"./logos/jcb.svg\";\nimport masterCard from \"./logos/mastercard.svg\";\nimport unionPay from \"./logos/unionpay.svg\";\nimport unknownLogo from \"./logos/unknown.svg\";\nimport Layout from \"../Layout\";\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\nimport { logEvent } from '../Analytics'\n\nimport \"./Billing.css\";\n\nclass Billing extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isUserInPremiumGroup: false,\n paymentCallInProgress: false,\n subscriptionCancelled: false,\n subscriptionIncomplete: false,\n subscriptionIncompleteExpired: false,\n showUpdateCard: true,\n brandLogo: unknownLogo,\n brandLogoCurrent: \"\",\n cardLoaded: false\n };\n this.submit = this.submit.bind(this);\n this.isUserInPremiumGroup = this.isUserInPremiumGroup.bind(this);\n this.isSubscriptionCancelled = this.isSubscriptionCancelled.bind(this);\n this.poll = this.poll.bind(this);\n this.handleError = this.handleError.bind(this);\n this.cancelSubscription = this.cancelSubscription.bind(this);\n this.renewSubscription = this.renewSubscription.bind(this);\n this.getCard = this.getCard.bind(this);\n this.updateCard = this.updateCard.bind(this);\n this.showUpdateCardForm = this.showUpdateCardForm.bind(this);\n this.getInvoices = this.getInvoices.bind(this);\n this.isSubscriptionIncomplete = this.isSubscriptionIncomplete.bind(\n this\n );\n this.cardChange = this.cardChange.bind(this);\n }\n\n refreshUserCredentials() {\n Auth.currentSession({ bypassCache: true })\n .then((session) => {\n let refreshToken = session.getRefreshToken();\n Auth.currentAuthenticatedUser()\n .then((user) => {\n user.refreshSession(\n refreshToken,\n (err, updatedSession) => {\n Auth.currentUserCredentials().then(\n (credentials) => {\n const userPoolId =\n Amplify._config.aws_user_pools_id;\n credentials.params.Logins[\n \"cognito-idp.us-east-1.amazonaws.com/\" +\n userPoolId\n ] = updatedSession\n .getIdToken()\n .getJwtToken();\n credentials.refresh(\n (updatedCredentials) => {\n console.log(\n \"Credentials has been refreshed\",\n credentials\n );\n }\n );\n }\n );\n }\n );\n })\n .catch((err) => this.handleError(err));\n })\n .catch((err) => this.handleError(err));\n }\n\n async isUserInPremiumGroup() {\n this.refreshUserCredentials();\n const premiumGroup = \"personal\";\n let session = await Auth.currentSession({ bypassCache: false });\n const groups = session.accessToken.payload[\"cognito:groups\"];\n return groups && groups.includes(premiumGroup);\n }\n\n async isSubscriptionCancelled() {\n this.refreshUserCredentials();\n let session = await Auth.currentSession({ bypassCache: false });\n const subscriptionCancelled =\n session.idToken.payload[\"custom:stripe_cust_subs_st\"];\n return subscriptionCancelled && subscriptionCancelled === \"cancelled\";\n }\n\n async isSubscriptionIncomplete() {\n this.refreshUserCredentials();\n let session = await Auth.currentSession({ bypassCache: false });\n const subscriptionCancelled =\n session.idToken.payload[\"custom:stripe_cust_subs_st\"];\n return subscriptionCancelled && subscriptionCancelled === \"incomplete\";\n }\n\n async poll(fn, callback, errback, timeout, interval) {\n var endTime = Number(new Date()) + (timeout || 2000);\n interval = interval || 100;\n\n (async function p() {\n // If the condition is met, we're done!\n if (await fn()) {\n callback();\n }\n // If the condition isn't met but the timeout hasn't elapsed, go again\n else if (Number(new Date()) < endTime) {\n setTimeout(p, interval);\n }\n // Didn't match and too much time, reject!\n else {\n errback(new Error(\"timed out for \" + fn + \": \" + arguments));\n }\n })();\n }\n\n async submit(ev) {\n // User clicked submit\n this.setState({\n paymentCallInProgress: true,\n });\n let token = await this.props.stripe.createToken({\n name: this.state.email,\n });\n\n if (token && !token.error) {\n let apiName = \"subscription\"; // replace this with your api name.\n let path = \"/subscription\"; //replace this with the path you have configured on your API\n let myInit = {\n headers: { \"Content-Type\": \"application/json\" },\n body: {\n token: token.token.id,\n }, // replace this with attributes you need\n };\n\n logEvent('Button', 'Click', 'Subscribe');\n\n API.post(apiName, path, myInit)\n .then((response) => {\n if (response.status === \"active\") {\n this.poll(\n this.isUserInPremiumGroup,\n async function () {\n this.setState({\n subscriptionExist: true,\n isUserInPremiumGroup: true,\n paymentCallInProgress: false,\n });\n await this.loadCardsAndInvoices();\n }.bind(this),\n this.handleError,\n 60000,\n 2500\n );\n } else if (response.status === \"incomplete\") {\n this.poll(\n this.isSubscriptionIncomplete,\n function () {\n this.setState({\n paymentCallInProgress: false,\n subscriptionIncomplete: true,\n });\n }.bind(this),\n this.handleError,\n 60000,\n 2500\n );\n } else {\n this.setState({ paymentCallInProgress: false });\n this.props.alert.error(\n \"Subscription error. Please check payment card details\"\n );\n }\n })\n .catch((error) => {\n this.handleError(error);\n this.setState({\n paymentCallInProgress: false,\n });\n });\n } else {\n if (token && token.error) {\n this.handleError(token.error);\n } else {\n this.handleError();\n }\n this.setState({\n paymentCallInProgress: false,\n });\n }\n }\n\n async cancelSubscription() {\n let apiName = \"subscription\"; // replace this with your api name.\n let path = \"/subscription\"; //replace this with the path you have configured on your API\n this.setState({\n paymentCallInProgress: true,\n });\n API.del(apiName, path)\n .then((response) => {\n this.poll(\n this.isSubscriptionCancelled,\n function () {\n this.setState({\n subscriptionCancelled: true,\n paymentCallInProgress: false,\n });\n }.bind(this),\n this.handleError,\n 60000,\n 2500\n );\n })\n .catch((error) => {\n this.setState({\n subscriptionCancelled: false,\n paymentCallInProgress: false,\n });\n this.handleError(error);\n });\n }\n\n async renewSubscription() {\n let apiName = \"subscription\"; // replace this with your api name.\n let path = \"/subscription\"; //replace this with the path you have configured on your API\n\n this.setState({\n paymentCallInProgress: true,\n });\n API.put(apiName, path)\n .then((response) => {\n this.poll(\n this.isSubscriptionCancelled,\n function () {\n this.setState({\n subscriptionCancelled: false,\n paymentCallInProgress: false,\n });\n }.bind(this),\n this.handleError,\n 60000,\n 2500\n );\n })\n .catch((error) => {\n this.setState({\n subscriptionCancelled: true,\n paymentCallInProgress: false,\n });\n this.handleError(error);\n });\n }\n\n async getCard() {\n let apiName = \"paymentSource\"; // replace this with your api name.\n let path = \"/payment/source\"; //replace this with the path you have configured on your API\n return await API.get(apiName, path);\n }\n\n async showUpdateCardForm(e) {\n e.preventDefault();\n this.setState({\n showUpdateCard: true,\n });\n }\n\n async updateCard(ev) {\n // User clicked submit\n this.setState({\n paymentCallInProgress: true,\n });\n let { token } = await this.props.stripe.createToken({\n name: this.state.email,\n });\n if (token) {\n let apiName = \"paymentSource\"; // replace this with your api name.\n let path = \"/payment/source\"; //replace this with the path you have configured on your API\n let myInit = {\n headers: { \"Content-Type\": \"application/json\" },\n body: {\n token: token.id,\n }, // replace this with attributes you need\n };\n\n API.put(apiName, path, myInit)\n .then((response) => {\n this.setState({\n card: response.card,\n });\n })\n .catch((error) => {\n this.setState({\n paymentCallInProgress: false,\n });\n this.handleError(error);\n });\n } else {\n this.setState({\n paymentCallInProgress: false\n });\n }\n }\n\n async getInvoices() {\n let apiName = \"invoices\"; // replace this with your api name.\n let path = \"/invoices\"; //replace this with the path you have configured on your API\n API.get(apiName, path)\n .then((response) => {\n this.setState({\n invoices: response,\n });\n })\n .catch((error) => {\n console.log(error);\n this.handleError(error);\n });\n }\n\n cardBrand = (e) => {\n this.cardChange(e);\n switch (e.brand) {\n case \"visa\":\n this.setState({ brandLogo: visaLogo });\n break;\n case \"mastercard\":\n this.setState({ brandLogo: masterCard });\n break;\n case \"amex\":\n this.setState({ brandLogo: americanExpress });\n break;\n case \"discover\":\n this.setState({ brandLogo: discoverLogo });\n break;\n case \"diners\":\n this.setState({ brandLogo: dinersClub });\n break;\n case \"jcb\":\n this.setState({ brandLogo: jcbLogo });\n break;\n case \"unionpay\":\n this.setState({ brandLogo: unionPay });\n break;\n case \"unknown\":\n this.setState({ brandLogo: unknownLogo });\n break;\n\n default:\n break;\n }\n };\n\n render() {\n let invoices;\n if (\n this.state.invoices &&\n this.state.invoices.invoices &&\n this.state.invoices.invoices.length > 0\n ) {\n invoices = this.state.invoices.invoices.map((invoice) => (\n
\n
\n \n {invoice.number}\n \n

\n {new Date(\n invoice.created * 1000\n ).toLocaleDateString(\"en-US\")}\n

\n

\n {new Date(\n invoice.lines.data[0].period.start * 1000\n ).toLocaleDateString(\"en-US\")}{\" \"}\n -{\" \"}\n {new Date(\n invoice.lines.data[0].period.end * 1000\n ).toLocaleDateString(\"en-US\")}\n

\n

\n ${invoice.total / 100}\n

\n

{invoice.status}

\n
\n
\n

{invoice.lines.data[0].description}

\n
\n
\n ));\n }\n\n let updateCard =
\n {\n this.cardBrand(\n e\n );\n }}\n />\n \n Add/Update Card\n \n
\n\n let cardPlaceHolder =
\n
\n \n
\n
\n \n \n \n \n
\n \n \n
\n
\n \n \n
\n
\n \n
\n \n\n const incompleteSubscription =
\n

\n There was a problem charging your card.\n Subscription is currently in incomplete\n state.\n

\n

\n Please make sure the information entered\n is correct or use another card\n

\n \n \n Subscribe with new card\n \n
\n\n const noSubscription =
\n
\n
\n
\n
\n

\n Upgrade to unlock stock picks.\n

\n

\n Personal Investor Plan at $29.95/month\n

\n
\n
\n\n {(this.state.subscriptionIncomplete ||\n this.state.subscriptionIncompleteExpired) ? (\n
\n {incompleteSubscription}\n
\n ) : (\n
\n

Enter Card Details

\n \n \n Subscribe\n \n
\n )}\n
\n
\n\n const cardFront =
\n
\n \n \n \n \n
\n
\n \n ****\n \n \n ****\n \n \n ****\n \n \n {this.state.card && this.state.card.last4}\n \n
\n
\n \n Card Holder\n

{this.props.username}

\n
\n \n Expires\n

\n {this.state.card &&\n

\n {this.state.card.exp_month} / {this.state.card.exp_year.toString().substr(2)}\n
\n }\n

\n
\n \n \n\n const cardBack =
\n
\n \n \n \n \n
\n
\n {updateCard}\n
\n
\n\n const dynamicCard =
\n
\n {cardFront}\n {cardBack}\n
\n
\n\n const staticAddCard =
\n
\n
\n
\n \n \n \n \n
\n
\n {updateCard}\n
\n
\n
\n
\n\n const cancelledSubscription =
\n
\n

\n The subscription is currently\n cancelled\n

\n \n Renew subscription\n \n
\n
\n\n const activeSubscription =
\n
\n

\n The subscription is currently active\n

\n \n Cancel subscription\n \n
\n
\n const daysLeft = (this.state.trialEnd * 1000 - Date.now()) > 0 ? Math.round((this.state.trialEnd * 1000 - Date.now()) / (24 * 60 * 60 * 1000)) : 0;\n const trialSubscription =
\n
\n

\n The subscription is currently in trial\n

\n

\n {daysLeft} days left\n

\n
\n
\n\n const expiredTrialSubscription =
\n
\n

\n Trial subscription has expired\n

\n

\n To continue using premium features, please add card above or pay the last open invoice directly by following invoice id link\n

\n
\n
\n const pastDueSubscription =
\n
\n

\n The subscription is past due\n

\n

\n To continue using premium features, please add/update the card above or pay the last open invoice directly by following invoice id link\n

\n \n Cancel subscription\n \n
\n
\n\n\n const invoicesPlaceHolder =
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n\n const invoiceList =
\n

View invoices

\n
\n
\n

#

\n

Date Created

\n

Service Period

\n

Total

\n

Status

\n
\n
{invoices}
\n
\n
\n return (\n \n {this.state.subscriptionExist ? (\n
\n
\n

Welcome Premium user

\n {this.state.isTrial ? (\n
\n {this.state.card != null ? (\n dynamicCard\n ) : (\n staticAddCard\n )}\n {Date.now() >= (this.state.trialEnd * 1000)? (\n expiredTrialSubscription\n ) : (\n trialSubscription\n )}\n
\n ) : (\n
\n {this.state.subscriptionCancelled ? (\n
\n {this.state.card != null ? (\n dynamicCard\n ) : (\n staticAddCard\n )}\n {cancelledSubscription}\n
\n ) : (\n
\n {this.state.cardLoaded ? (\n
\n {this.state.card != null ? (\n dynamicCard\n ) : (\n staticAddCard\n )}\n {this.state.subscriptionPastDue ? (\n
\n {pastDueSubscription}\n
\n ) : (\n
\n {activeSubscription}\n
\n )}\n
\n ) : (\n cardPlaceHolder\n )}\n
\n )}\n
\n )}\n
\n {this.state.invoices &&\n this.state.invoices.invoices &&\n this.state.invoices.invoices.length > 0 ? (\n invoiceList\n ) : (\n invoicesPlaceHolder\n )}\n
\n ) : (\n
\n {noSubscription}\n
\n )}\n\n
\n );\n }\n\n cardChange(event) {\n if (event.error) {\n this.setState({\n cardError: true,\n });\n } else {\n this.setState({\n cardError: false,\n });\n }\n }\n async componentDidMount() {\n const premiumGroup = \"personal\";\n\n Auth.currentSession({ bypassCache: false })\n .then((data) => {\n const subscriptionStatus =\n data.idToken.payload[\"custom:stripe_cust_subs_st\"];\n if (subscriptionStatus) {\n this.setState({\n subscriptionExist: true\n });\n if (subscriptionStatus === \"trialing\") {\n const trialEnd = data.idToken.payload[\"custom:stripe_trial_end\"];\n this.setState({\n isTrial: true,\n trialEnd: trialEnd,\n showUpdateCard: true\n });\n }\n if (subscriptionStatus === \"cancelled\") {\n this.setState({\n subscriptionCancelled: true,\n });\n }\n if (subscriptionStatus === \"incomplete\") {\n this.setState({\n subscriptionIncomplete: true,\n });\n }\n if (subscriptionStatus === \"incomplete_expired\") {\n this.setState({\n subscriptionIncompleteExpired: true,\n });\n }\n if (subscriptionStatus === \"past_due\") {\n this.setState({\n subscriptionPastDue: true,\n });\n }\n } else {\n this.setState({\n subscriptionExist: false\n });\n }\n\n const groups = data.accessToken.payload[\"cognito:groups\"];\n if (groups && groups.includes(premiumGroup)) {\n this.setState({\n isUserInPremiumGroup: true,\n });\n }\n })\n .catch((err) =>\n this.props.alert.error(\"Error loading user group data\")\n );\n await this.loadCardsAndInvoices();\n }\n\n async loadCardsAndInvoices() {\n let cards = await this.getCard();\n if (cards.cards && cards.cards.length > 0) {\n console.log(cards.cards)\n this.setState({\n cardLoaded: true,\n card: cards.cards[0].card\n });\n } else {\n this.setState({\n cardLoaded: true,\n card: null\n });\n }\n await this.getInvoices();\n if (this.state.card) {\n switch (this.state.card.brand) {\n case \"visa\":\n this.setState({ brandLogoCurrent: visaLogo });\n break;\n case \"mastercard\":\n this.setState({ brandLogoCurrent: masterCard });\n break;\n case \"amex\":\n this.setState({ brandLogoCurrent: americanExpress });\n break;\n case \"discover\":\n this.setState({ brandLogoCurrent: discoverLogo });\n break;\n case \"diners\":\n this.setState({ brandLogoCurrent: dinersClub });\n break;\n case \"jcb\":\n this.setState({ brandLogoCurrent: jcbLogo });\n break;\n case \"unionpay\":\n this.setState({ brandLogoCurrent: unionPay });\n break;\n case \"Unknown\":\n this.setState({ brandLogoCurrent: unknownLogo });\n break;\n default:\n break;\n }\n }\n }\n\n handleError(error) {\n const errorMessage = \"Error processing operation\";\n\n if (\n error &&\n error.errors &&\n error.errors.length > 0 &&\n error.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + error.errors[0].message\n );\n } else if (\n error &&\n error.response &&\n error.response.data &&\n error.response.data.error\n ) {\n this.props.alert.error(\n errorMessage + \": \" + error.response.data.error\n );\n } else if (error && error.message) {\n this.props.alert.error(error.message);\n } else {\n console.log(error);\n this.props.alert.error(errorMessage);\n }\n }\n}\n\nexport default injectStripe(withAlert()(Billing));\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const dataPointsForPortfolioTracker = /* GraphQL */ `\n query DataPointsForPortfolioTracker(\n $limit: Int\n $period: String\n $benchmarkSymbols: [String]\n $recommendedOnly: Boolean\n ) {\n dataPointsForPortfolioTracker(\n limit: $limit\n period: $period\n benchmarkSymbols: $benchmarkSymbols\n recommendedOnly: $recommendedOnly\n ) {\n items {\n x\n y\n owner\n }\n benchmarks {\n items {\n x\n y\n owner\n }\n name\n }\n initialPortfolioValue\n nextToken\n }\n }\n`;\nexport const getEvaluatedStocks = /* GraphQL */ `\n query GetEvaluatedStocks($id: ID!) {\n getEvaluatedStocks(id: $id) {\n id\n rating\n averageValue\n owner\n }\n }\n`;\nexport const getPortfolio = /* GraphQL */ `\n query GetPortfolio(\n $filter: ModelPortfolioStockFilterInput\n $limit: Int\n $nextToken: String\n ) {\n getPortfolio(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n nextToken\n }\n }\n`;\nexport const getPortfolioStock = /* GraphQL */ `\n query GetPortfolioStock($id: ID!) {\n getPortfolioStock(id: $id) {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n }\n`;\nexport const listPortfolioStocks = /* GraphQL */ `\n query ListPortfolioStocks(\n $filter: ModelPortfolioStockFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPortfolioStocks(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n nextToken\n }\n }\n`;\nexport const getSettings = /* GraphQL */ `\n query GetSettings($id: ID!) {\n getSettings(id: $id) {\n id\n amountToInvest\n agreementAccepted\n owner\n }\n }\n`;\nexport const listSettingss = /* GraphQL */ `\n query ListSettingss(\n $filter: ModelSettingsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listSettingss(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n amountToInvest\n agreementAccepted\n owner\n }\n nextToken\n }\n }\n`;\nexport const getScheduledReports = /* GraphQL */ `\n query GetScheduledReports($id: ID!) {\n getScheduledReports(id: $id) {\n id\n frequency\n onDays\n startDate\n nextRun\n owner\n }\n }\n`;\nexport const listScheduledReportss = /* GraphQL */ `\n query ListScheduledReportss(\n $filter: ModelScheduledReportsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listScheduledReportss(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n frequency\n onDays\n startDate\n nextRun\n owner\n }\n nextToken\n }\n }\n`;\nexport const getEvaluatedStock = /* GraphQL */ `\n query GetEvaluatedStock($id: ID!) {\n getEvaluatedStock(id: $id) {\n id\n rating\n averageValue\n owner\n }\n }\n`;\nexport const listEvaluatedStocks = /* GraphQL */ `\n query ListEvaluatedStocks(\n $filter: ModelEvaluatedStockFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listEvaluatedStocks(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n rating\n averageValue\n owner\n }\n nextToken\n }\n }\n`;\nexport const getTransactionHistory = /* GraphQL */ `\n query GetTransactionHistory($id: ID!) {\n getTransactionHistory(id: $id) {\n id\n symbol\n price\n sharesNumber\n createdAt\n owner\n }\n }\n`;\nexport const listTransactionHistorys = /* GraphQL */ `\n query ListTransactionHistorys(\n $filter: ModelTransactionHistoryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTransactionHistorys(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n symbol\n price\n sharesNumber\n createdAt\n owner\n }\n nextToken\n }\n }\n`;\nexport const getPortfolioTracker = /* GraphQL */ `\n query GetPortfolioTracker($id: ID!) {\n getPortfolioTracker(id: $id) {\n x\n y\n owner\n }\n }\n`;\nexport const listPortfolioTrackers = /* GraphQL */ `\n query ListPortfolioTrackers(\n $filter: ModelPortfolioTrackerFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPortfolioTrackers(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n x\n y\n owner\n }\n benchmarks {\n items {\n x\n y\n owner\n }\n name\n }\n initialPortfolioValue\n nextToken\n }\n }\n`;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const onCreatePortfolioStock = /* GraphQL */ `\n subscription OnCreatePortfolioStock($owner: String!) {\n onCreatePortfolioStock(owner: $owner) {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n }\n`;\nexport const onUpdatePortfolioStock = /* GraphQL */ `\n subscription OnUpdatePortfolioStock($owner: String!) {\n onUpdatePortfolioStock(owner: $owner) {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n }\n`;\nexport const onDeletePortfolioStock = /* GraphQL */ `\n subscription OnDeletePortfolioStock($owner: String!) {\n onDeletePortfolioStock(owner: $owner) {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n }\n`;\nexport const onCreateSettings = /* GraphQL */ `\n subscription OnCreateSettings($owner: String!) {\n onCreateSettings(owner: $owner) {\n id\n amountToInvest\n owner\n }\n }\n`;\nexport const onUpdateSettings = /* GraphQL */ `\n subscription OnUpdateSettings($owner: String!) {\n onUpdateSettings(owner: $owner) {\n id\n amountToInvest\n owner\n }\n }\n`;\nexport const onDeleteSettings = /* GraphQL */ `\n subscription OnDeleteSettings($owner: String!) {\n onDeleteSettings(owner: $owner) {\n id\n amountToInvest\n owner\n }\n }\n`;\nexport const onCreateScheduledReports = /* GraphQL */ `\n subscription OnCreateScheduledReports($owner: String!) {\n onCreateScheduledReports(owner: $owner) {\n id\n frequency\n onDays\n startDate\n nextRun\n owner\n }\n }\n`;\nexport const onUpdateScheduledReports = /* GraphQL */ `\n subscription OnUpdateScheduledReports($owner: String!) {\n onUpdateScheduledReports(owner: $owner) {\n id\n frequency\n onDays\n startDate\n nextRun\n owner\n }\n }\n`;\nexport const onDeleteScheduledReports = /* GraphQL */ `\n subscription OnDeleteScheduledReports($owner: String!) {\n onDeleteScheduledReports(owner: $owner) {\n id\n frequency\n onDays\n startDate\n nextRun\n owner\n }\n }\n`;\nexport const onCreateEvaluatedStock = /* GraphQL */ `\n subscription OnCreateEvaluatedStock($owner: String) {\n onCreateEvaluatedStock(owner: $owner) {\n id\n rating\n averageValue\n owner\n }\n }\n`;\nexport const onUpdateEvaluatedStock = /* GraphQL */ `\n subscription OnUpdateEvaluatedStock($owner: String) {\n onUpdateEvaluatedStock(owner: $owner) {\n id\n rating\n averageValue\n owner\n }\n }\n`;\nexport const onDeleteEvaluatedStock = /* GraphQL */ `\n subscription OnDeleteEvaluatedStock($owner: String) {\n onDeleteEvaluatedStock(owner: $owner) {\n id\n rating\n averageValue\n owner\n }\n }\n`;\nexport const onCreateTransactionHistory = /* GraphQL */ `\n subscription OnCreateTransactionHistory($owner: String!) {\n onCreateTransactionHistory(owner: $owner) {\n id\n symbol\n price\n sharesNumber\n createdAt\n owner\n }\n }\n`;\nexport const onUpdateTransactionHistory = /* GraphQL */ `\n subscription OnUpdateTransactionHistory($owner: String!) {\n onUpdateTransactionHistory(owner: $owner) {\n id\n symbol\n price\n sharesNumber\n createdAt\n owner\n }\n }\n`;\nexport const onDeleteTransactionHistory = /* GraphQL */ `\n subscription OnDeleteTransactionHistory($owner: String!) {\n onDeleteTransactionHistory(owner: $owner) {\n id\n symbol\n price\n sharesNumber\n createdAt\n owner\n }\n }\n`;\nexport const onCreatePortfolioTracker = /* GraphQL */ `\n subscription OnCreatePortfolioTracker($owner: String!) {\n onCreatePortfolioTracker(owner: $owner) {\n x\n y\n owner\n }\n }\n`;\nexport const onUpdatePortfolioTracker = /* GraphQL */ `\n subscription OnUpdatePortfolioTracker($owner: String!) {\n onUpdatePortfolioTracker(owner: $owner) {\n x\n y\n owner\n }\n }\n`;\nexport const onDeletePortfolioTracker = /* GraphQL */ `\n subscription OnDeletePortfolioTracker($owner: String!) {\n onDeletePortfolioTracker(owner: $owner) {\n x\n y\n owner\n }\n }\n`;\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const createPortfolioStock = /* GraphQL */ `\n mutation CreatePortfolioStock($input: CreatePortfolioStockInput!) {\n createPortfolioStock(input: $input) {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n }\n`;\nexport const updatePortfolioStock = /* GraphQL */ `\n mutation UpdatePortfolioStock($input: UpdatePortfolioStockInput!) {\n updatePortfolioStock(input: $input) {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n }\n`;\nexport const deletePortfolioStock = /* GraphQL */ `\n mutation DeletePortfolioStock($input: DeletePortfolioStockInput!) {\n deletePortfolioStock(input: $input) {\n id\n symbol\n sharesNumber\n sharesNumberDiffWithRecommended\n price\n averageCost\n recommended\n changePercent\n owner\n }\n }\n`;\nexport const createSettings = /* GraphQL */ `\n mutation CreateSettings($input: CreateSettingsInput!) {\n createSettings(input: $input) {\n id\n amountToInvest\n agreementAccepted\n owner\n }\n }\n`;\nexport const updateSettings = /* GraphQL */ `\n mutation UpdateSettings($input: UpdateSettingsInput!) {\n updateSettings(input: $input) {\n id\n amountToInvest\n agreementAccepted\n owner\n }\n }\n`;\nexport const deleteSettings = /* GraphQL */ `\n mutation DeleteSettings($input: DeleteSettingsInput!) {\n deleteSettings(input: $input) {\n id\n amountToInvest\n agreementAccepted\n owner\n }\n }\n`;\nexport const createScheduledReports = /* GraphQL */ `\n mutation CreateScheduledReports($input: CreateScheduledReportsInput!) {\n createScheduledReports(input: $input) {\n id\n frequency\n onDays\n startDate\n nextRun\n owner\n }\n }\n`;\nexport const updateScheduledReports = /* GraphQL */ `\n mutation UpdateScheduledReports($input: UpdateScheduledReportsInput!) {\n updateScheduledReports(input: $input) {\n id\n frequency\n onDays\n startDate\n nextRun\n owner\n }\n }\n`;\nexport const deleteScheduledReports = /* GraphQL */ `\n mutation DeleteScheduledReports($input: DeleteScheduledReportsInput!) {\n deleteScheduledReports(input: $input) {\n id\n frequency\n onDays\n startDate\n nextRun\n owner\n }\n }\n`;\nexport const createEvaluatedStock = /* GraphQL */ `\n mutation CreateEvaluatedStock($input: CreateEvaluatedStockInput!) {\n createEvaluatedStock(input: $input) {\n id\n rating\n averageValue\n owner\n }\n }\n`;\nexport const updateEvaluatedStock = /* GraphQL */ `\n mutation UpdateEvaluatedStock($input: UpdateEvaluatedStockInput!) {\n updateEvaluatedStock(input: $input) {\n id\n rating\n averageValue\n owner\n }\n }\n`;\nexport const deleteEvaluatedStock = /* GraphQL */ `\n mutation DeleteEvaluatedStock($input: DeleteEvaluatedStockInput!) {\n deleteEvaluatedStock(input: $input) {\n id\n rating\n averageValue\n owner\n }\n }\n`;\nexport const createTransactionHistory = /* GraphQL */ `\n mutation CreateTransactionHistory($input: CreateTransactionHistoryInput!) {\n createTransactionHistory(input: $input) {\n id\n symbol\n price\n sharesNumber\n createdAt\n owner\n }\n }\n`;\nexport const updateTransactionHistory = /* GraphQL */ `\n mutation UpdateTransactionHistory($input: UpdateTransactionHistoryInput!) {\n updateTransactionHistory(input: $input) {\n id\n symbol\n price\n sharesNumber\n createdAt\n owner\n }\n }\n`;\nexport const deleteTransactionHistory = /* GraphQL */ `\n mutation DeleteTransactionHistory($input: DeleteTransactionHistoryInput!) {\n deleteTransactionHistory(input: $input) {\n id\n symbol\n price\n sharesNumber\n createdAt\n owner\n }\n }\n`;\nexport const createPortfolioTracker = /* GraphQL */ `\n mutation CreatePortfolioTracker($input: CreatePortfolioTrackerInput!) {\n createPortfolioTracker(input: $input) {\n x\n y\n owner\n }\n }\n`;\nexport const updatePortfolioTracker = /* GraphQL */ `\n mutation UpdatePortfolioTracker($input: UpdatePortfolioTrackerInput!) {\n updatePortfolioTracker(input: $input) {\n x\n y\n owner\n }\n }\n`;\nexport const deletePortfolioTracker = /* GraphQL */ `\n mutation DeletePortfolioTracker($input: DeletePortfolioTrackerInput!) {\n deletePortfolioTracker(input: $input) {\n x\n y\n owner\n }\n }\n`;\n","import React from 'react';\n\nexport default class ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { error: null, errorInfo: null };\n }\n\n componentDidCatch(error, errorInfo) {\n // Catch errors in any components below and re-render with error message\n this.setState({\n error: error,\n errorInfo: errorInfo\n })\n // You can also log error messages to an error reporting service here\n }\n\n render() {\n if (this.state.errorInfo) {\n // Error path\n return (\n
\n

Something went wrong.

\n
\n {this.state.error && this.state.error.toString()}\n
\n {this.state.errorInfo.componentStack}\n
\n
\n );\n }\n // Normally, just render children\n return this.props.children;\n }\n}","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Input, Button, Modal, ModalHeader, ModalBody } from \"reactstrap\";\n\nimport { API } from \"aws-amplify\";\nimport * as queries from \"../../graphql/queries\";\nimport * as mutations from \"../../graphql/mutations\";\nimport { graphqlOperation } from \"aws-amplify\";\n\nimport ErrorBoundary from \"../ErrorBoundary\";\n\nimport { withAlert } from \"react-alert\";\nimport \"./StockList.css\";\nimport fallbackLogo from \"./fallback-logo.png\";\n\nclass StockList extends Component {\n constructor(props) {\n super(props);\n this.apiName = \"getStockPrice\";\n this.state = {\n hovered: false,\n hoveredId: \"\",\n modal: false,\n modalId: \"\",\n disableButton: false,\n };\n this.handleSharesAmountChange = this.handleSharesAmountChange.bind(\n this\n );\n this.toggleModal = this.toggleModal.bind(this);\n this.targetInput = React.createRef();\n }\n\n async addStock(stock) {\n this.setState({ disableButton: true });\n let path = \"/v1/stock/\" + stock.symbol + \"/price\";\n API.get(this.apiName, path)\n .then((response) => {\n const input = {\n symbol: stock.symbol,\n sharesNumber: stock.sharesNumberDiffWithRecommended,\n recommended: true,\n sharesNumberDiffWithRecommended: 0,\n price: response.data,\n };\n\n API.graphql(\n graphqlOperation(mutations.createPortfolioStock, { input })\n ).catch((error) => {\n this.handleError(\n error,\n \"Error adding \" + stock.symbol + \" to portfolio\"\n );\n });\n this.updateAmountToInvest(\n stock.sharesNumberDiffWithRecommended * stock.price\n );\n })\n .catch((error) => {\n console.log(error);\n this.handleError(\n error,\n \"Could not fetch price for \" + stock.symbol\n );\n this.setState({ disableButton: false });\n });\n }\n\n async updateAmountToInvest(amountToDeduct) {\n let result = await API.graphql(graphqlOperation(queries.listSettingss));\n let currentSettings = result.data.listSettingss.items[0];\n const input = {\n id: currentSettings.id,\n amountToInvest:\n Math.round(\n Number(currentSettings.amountToInvest - amountToDeduct) *\n 100\n ) / 100,\n };\n this.setState({ disableButton: false });\n await API.graphql(\n graphqlOperation(mutations.updateSettings, { input })\n ).catch((error) => {\n this.handleError(error, \"Error updating amount to invest\");\n });\n }\n\n async addToPortfolio(stock) {\n this.setState({ disableButton: true });\n let path = \"/v1/stock/\" + stock.symbol + \"/price\";\n API.get(this.apiName, path)\n .then((response) => {\n console.log(response);\n const input = {\n id: stock.id,\n sharesNumber:\n stock.sharesNumber +\n stock.sharesNumberDiffWithRecommended,\n recommended: true,\n sharesNumberDiffWithRecommended: 0,\n price: response.data,\n };\n API.graphql(\n graphqlOperation(mutations.updatePortfolioStock, { input })\n )\n .then((response) => {\n this.handleMessage(\n \"Added \" +\n stock.sharesNumberDiffWithRecommended +\n \" shares of \" +\n stock.symbol +\n \" to portfolio\"\n );\n })\n .catch((error) => {\n this.handleError(\n error,\n \"Error adding \" +\n stock.sharesNumber +\n \" to \" +\n stock.symbol\n );\n });\n this.updateAmountToInvest(\n stock.sharesNumberDiffWithRecommended * input.price\n );\n })\n .catch((error) => {\n console.log(error);\n this.handleError(\n error,\n \"Could not fetch price for \" + stock.symbol\n );\n this.setState({ disableButton: false });\n });\n }\n\n showRemoveButton(id) {\n this.setState({ hovered: true, hoveredId: id });\n }\n\n hideRemoveButton() {\n this.setState({ hovered: false });\n }\n\n toggleModal(id) {\n this.setState({\n modalId: id,\n modal: !this.state.modal,\n });\n }\n\n handleSharesAmountChange(stock, event) {\n const targetInput = this.targetInput.current;\n // console.log(`current input value = ${targetInput.value}`);\n if (Number(targetInput.value) === 0) {\n const input = {\n id: stock.id,\n };\n API.graphql(\n graphqlOperation(mutations.deletePortfolioStock, { input })\n ).catch((error) => {\n this.handleError(\n error,\n \"Error updating amount of shares for \" + stock.symbol\n );\n });\n } else {\n if (stock.sharesNumber !== targetInput.value) {\n const input = {\n id: stock.id,\n sharesNumber: targetInput.value,\n recommended: stock.recommended,\n sharesNumberDiffWithRecommended:\n stock.sharesNumberDiffWithRecommended,\n price: stock.price,\n };\n API.graphql(\n graphqlOperation(mutations.updatePortfolioStock, { input })\n )\n .then((response) => {\n this.handleMessage(\n \"Stock \" +\n stock.symbol +\n \" shares number updated to \" +\n targetInput.value\n );\n })\n .catch((error) => {\n this.handleError(\n error,\n \"Error updating amount of shares for \" +\n stock.symbol\n );\n });\n } else {\n this.handleMessage(\"amount of shares not changed\");\n }\n }\n this.toggleModal();\n }\n\n async removeFromPortfolio(stock) {\n const input = {\n id: stock.id,\n };\n this.setState({ disableButton: true });\n await API.graphql(\n graphqlOperation(mutations.deletePortfolioStock, { input })\n )\n .then((response) => {\n this.handleMessage(\n \"Stock \" + stock.symbol + \" removed from portfolio\"\n );\n this.setState({ disableButton: false });\n })\n .catch((error) => {\n this.handleError(\n error,\n \"Error removing stock \" + stock.symbol + \" from portfolio\"\n );\n });\n }\n\n handleMessage(message) {\n this.props.alert.success(message, { type: \"success\" });\n }\n\n handleError(error, errorMessage) {\n if (\n error.errors &&\n error.errors.length > 0 &&\n error.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + error.errors[0].message,\n {\n type: \"danger\",\n }\n );\n } else {\n this.props.alert.error(errorMessage, { type: \"danger\" });\n }\n }\n\n addDefaultSrc(ev) {\n ev.target.src = fallbackLogo;\n }\n\n render() {\n const stocks = this.props.stocks;\n const title = this.props.title;\n\n const stockList = stocks.map((symbol) => (\n this.showRemoveButton(symbol.id)}\n onMouseLeave={() => this.hideRemoveButton()}\n >\n
\n \n
\n
\n
\n

\n \n {symbol.symbol}\n \n

\n {symbol.recommended && (\n
\n
R
\n
\n )}\n {!symbol.recommended && (\n
\n
E
\n
\n )}\n
\n \n {symbol.sharesNumber > 0 && (\n this.toggleModal(symbol.id)}\n className=\"sharesLink\"\n >\n {symbol.sharesNumber} shares{\" \"}\n \n
\n \n \n Enter shares for {symbol.symbol}\n \n \n
\n \n {\n this.handleSharesAmountChange(\n symbol\n );\n }}\n >\n Update\n \n
\n
\n \n
\n
\n {this.state.hovered &&\n this.state.hoveredId === symbol.id &&\n symbol.sharesNumberDiffWithRecommended >=\n 0 &&\n symbol.sharesNumber !== 0 && (\n \n // this.removeFromPortfolio(symbol)\n // }\n >\n \n \n \n \n
\n )}\n \n )}\n \n \n
\n

${symbol.price}

\n {symbol.changePercent >= 0 && (\n \n {Math.round(symbol.changePercent * 10000) / 100}%\n \n )}\n {symbol.changePercent < 0 && (\n \n {Math.round(symbol.changePercent * 10000) / 100}%\n \n )}\n
\n {symbol.sharesNumberDiffWithRecommended > 0 &&\n symbol.sharesNumber === 0 && (\n
\n this.addStock(symbol)}\n disabled={this.state.disableButton}\n >\n Buy {symbol.sharesNumberDiffWithRecommended}\n \n \n \n \n
\n )}\n {symbol.sharesNumberDiffWithRecommended > 0 &&\n symbol.sharesNumber > 0 && (\n
\n this.addToPortfolio(symbol)}\n disabled={this.state.disableButton}\n >\n Add {symbol.sharesNumberDiffWithRecommended}\n \n \n \n \n
\n )}\n {symbol.sharesNumberDiffWithRecommended < 0 &&\n symbol.sharesNumber > 0 && (\n
\n this.removeFromPortfolio(symbol)}\n disabled={this.state.disableButton}\n >\n Sell {symbol.sharesNumberDiffWithRecommended}\n \n \n \n \n
\n )}\n {symbol.sharesNumberDiffWithRecommended === 0 &&\n symbol.sharesNumber > 0 && (\n
\n \n Hold\n \n
\n )}\n {this.state.hovered &&\n this.state.hoveredId === symbol.id &&\n symbol.sharesNumberDiffWithRecommended >= 0 &&\n symbol.sharesNumber !== 0 && (\n this.removeFromPortfolio(symbol)}\n >\n \n \n \n \n \n )}\n \n ));\n return (\n
\n {/**/}\n
\n

{title}

\n
\n
{stockList}
\n
\n );\n }\n}\n\nexport default withAlert()(StockList);\n","import React, { Component } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport ErrorBoundary from \"../ErrorBoundary\";\n\nimport { withAlert } from \"react-alert\";\nimport \"./StockPicks.css\";\nimport fallbackLogo from \"../StockList/fallback-logo.png\";\n\nclass StockPicks extends Component {\n addDefaultSrc(ev) {\n ev.target.src = fallbackLogo;\n }\n\n render() {\n const stocks = this.props.stocks;\n const title = this.props.title;\n\n const stockList = stocks.map((symbol) => (\n \n \n {/*
*/}\n \n {/*
*/}\n \n
\n

{symbol}

\n
\n \n ));\n\n return (\n
\n {/**/}\n
\n

{title}

\n
\n \n
{stockList}
\n
\n
\n );\n }\n}\n\nexport default withAlert()(StockPicks);\n","import React, { Component } from \"react\";\n\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\nimport \"./StockPicks.css\";\n\nexport default class StockPicksSkeleton extends Component {\n render() {\n return (\n \n
\n

TODAY'S PICKS

\n
\n {/*
*/}\n
\n {/*
*/}\n
\n
\n {}\n
\n
\n {}\n
\n
\n {/*
*/}\n\n {/*
*/}\n
\n
\n {}\n
\n
\n {}\n
\n
\n {/*
*/}\n\n {/*
*/}\n
\n
\n {}\n
\n
\n {}\n
\n
\n {/*
*/}\n\n {/*
*/}\n
\n
\n {}\n
\n
\n {}\n
\n
\n {/*
*/}\n\n {/*
*/}\n
\n
\n {}\n
\n
\n {}\n
\n
\n {/*
*/}\n\n
\n
\n {}\n
\n
\n {}\n
\n
\n {/*
*/}\n
\n
\n );\n }\n}\n","import React, { Component } from \"react\";\n\nimport { API } from \"aws-amplify\";\nimport { graphqlOperation } from \"aws-amplify\";\n\nimport { Button, Form, FormGroup, Input } from \"reactstrap\";\n\nimport * as mutations from \"../graphql/mutations\";\n\nimport { withAlert } from \"react-alert\";\n\nclass UpdateAmountToInvest extends Component {\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.submit = this.submit.bind(this);\n }\n\n handleChange(name, event) {\n this.setState({\n [name]: event.target.value.trim()\n });\n }\n\n async submit(event, currentSettings) {\n event.preventDefault();\n\n if (this.isAmountToInvestInputValid()) {\n if (\n this.props.currentSettings === undefined ||\n this.props.currentSettings.id === undefined\n ) {\n const input = {\n amountToInvest: this.state.amountToInvest\n };\n await API.graphql(\n graphqlOperation(mutations.createSettings, { input })\n ).catch(error => {\n this.handleError(error);\n });\n } else {\n const input = {\n id: this.props.currentSettings.id,\n amountToInvest: this.state.amountToInvest\n };\n await API.graphql(\n graphqlOperation(mutations.updateSettings, { input })\n ).catch(error => {\n this.handleError(error);\n });\n }\n }\n }\n\n handleError(error) {\n const errorMessage = \"Error updating amount to invest\";\n\n if (\n error.errors &&\n error.errors.length > 0 &&\n error.errors[0].message\n ) {\n if (\n error.errors[0].message.indexOf(\n \"ConditionalCheckFailedException\"\n ) >= 0\n ) {\n this.props.alert.error(\n errorMessage + \": settings object exists in DB\"\n );\n } else {\n this.props.alert.error(\n errorMessage + \": \" + error.errors[0].message\n );\n }\n } else {\n this.props.alert.error(errorMessage);\n }\n }\n\n isAmountToInvestInputValid() {\n if (this.state === null || !this.state.amountToInvest) {\n this.props.alert.error('Please enter \"Amount to invest\"');\n return false;\n }\n if (isNaN(this.state.amountToInvest)) {\n this.props.alert.error(\n '\"Amount to invest\" field should be a number'\n );\n return false;\n }\n\n if (this.state.amountToInvest <= 0) {\n this.props.alert.error(\n '\"Amount to invest\" field should be a positive integer'\n );\n return false;\n }\n return true;\n }\n\n render() {\n return (\n
\n

Amount to invest:

\n
\n \n
\n {\n this.handleChange(\"amountToInvest\", ev);\n }}\n />\n \n
\n
\n
\n
\n );\n }\n}\n\nexport default withAlert()(UpdateAmountToInvest);\n","import React, { Component } from \"react\";\n\nimport { Auth, API, graphqlOperation } from \"aws-amplify\";\n\nimport * as queries from \"../../graphql/queries\";\nimport * as subscriptions from \"../../graphql/subscriptions\";\n\nimport UpdateAmountToInvest from \"../UpdateAmountToInvest\";\n\nimport { withAlert } from \"react-alert\";\n\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\nimport Layout from \"../Layout\";\nimport \"./AmntToInvest.css\";\n\nclass AmntToInvest extends Component {\n constructor(props) {\n super(props);\n this.state = {\n amountToInvestSetting: { amountToInvest: \"loading...\" },\n loading: true,\n };\n this.getAmountToInvest();\n }\n\n async getAmountToInvest() {\n const errorMessage = \"Error loading amount to invest\";\n Auth.currentAuthenticatedUser({\n bypassCache: false, // Optional, By default is false. If set to true, this call will send a request to Cognito to get the latest user data\n })\n .then((user) => {\n const username = \"settings_\" + user.username;\n API.graphql(\n graphqlOperation(queries.getSettings, { id: username })\n )\n .then((response) => {\n const amountToInvestSetting = response.data.getSettings;\n if (amountToInvestSetting === null) {\n this.setState({\n amountToInvestSetting: { amountToInvest: 0 },\n loading: false,\n });\n } else {\n this.setState({\n amountToInvestSetting: amountToInvestSetting,\n loading: false,\n });\n }\n })\n .catch((err) => {\n this.setState({\n amountToInvestSetting: {\n amountToInvest:\n \"error loading amount to invest\",\n },\n loading: false,\n });\n if (\n err.errors &&\n err.errors.length > 0 &&\n err.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + err.errors[0].message,\n { type: \"danger\" }\n );\n } else {\n this.props.alert.error(errorMessage, {\n type: \"danger\",\n });\n }\n });\n this.subscribeForUpdates(user.username);\n })\n .catch((err) => {\n this.props.alert.error(\n errorMessage + \": settings id malformed\",\n {\n type: \"danger\",\n }\n );\n });\n }\n\n async subscribeForUpdates(username) {\n API.graphql(\n graphqlOperation(subscriptions.onCreateSettings, {\n owner: username,\n })\n ).subscribe({\n next: ({ value: { data } }) => {\n let amountToInvestSetting = data.onCreateSettings;\n this.setState({\n amountToInvestSetting: amountToInvestSetting,\n });\n },\n error: (error) => {\n const errorMessage = \"Error refreshing amount to invest\";\n if (\n error.errors &&\n error.errors.length > 0 &&\n error.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + error.errors[0].message,\n { type: \"danger\" }\n );\n } else {\n this.props.alert.error(errorMessage, {\n type: \"danger\",\n });\n }\n },\n });\n API.graphql(\n graphqlOperation(subscriptions.onUpdateSettings, {\n owner: username,\n })\n ).subscribe({\n next: ({ value: { data } }) => {\n console.log(data);\n let amountToInvestSetting = data.onUpdateSettings;\n this.setState({\n amountToInvestSetting: amountToInvestSetting,\n });\n },\n error: (error) => {\n const errorMessage = \"Error refreshing amount to invest\";\n if (\n error.errors &&\n error.errors.length > 0 &&\n error.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + error.errors[0].message,\n { type: \"danger\" }\n );\n } else {\n this.props.alert.error(errorMessage, {\n type: \"danger\",\n });\n }\n },\n });\n }\n\n render() {\n let loadingTitle;\n if (this.state.loading) {\n loadingTitle = (\n
\n \n \n \n \n \n \n
\n );\n }\n return (\n \n
\n {loadingTitle}\n {this.state.loading === false && (\n
\n

Current amount to invest:

\n \n $\n {\n this.state.amountToInvestSetting\n .amountToInvest\n }\n \n \n
\n )}\n
\n
\n );\n }\n}\n\nexport default withAlert()(AmntToInvest);\n","import React, { Component } from \"react\";\nimport { Row, ButtonGroup, Button } from \"reactstrap\";\nimport Calendar from \"react-calendar\";\n\nimport { Auth, API, graphqlOperation } from \"aws-amplify\";\n\nimport * as mutations from \"../../graphql/mutations\";\nimport * as queries from \"../../graphql/queries\";\nimport * as subscriptions from \"../../graphql/subscriptions\";\nimport { LocalDate, TemporalAdjusters, DayOfWeek } from \"js-joda\";\n\nimport { withAlert } from \"react-alert\";\n\nimport Layout from \"../Layout\";\nimport \"./ScheduledReports.css\";\n\nconst selectedDict = {\n 1: \"DAILY\",\n 2: \"WEEKLY\",\n 3: \"BIWEEKLY\",\n 4: \"MONTHLY\",\n};\n\nclass ScheduledReports extends Component {\n constructor(props) {\n super(props);\n this.state = {\n date: new Date(),\n weeklyDays: [],\n biweeklyDays: [],\n updateInProgress: false,\n existingReport: false,\n existingReportId: \"\",\n };\n this.getScheduledReports();\n }\n\n getKeyByValue(object, value) {\n return Object.keys(object).find((key) => object[key] === value);\n }\n\n getScheduledReports() {\n const errorMessage = \"Error getting scheduled report\";\n Auth.currentAuthenticatedUser({\n bypassCache: false, // Optional, By default is false. If set to true, this call will send a request to Cognito to get the latest user data\n })\n .then((user) => {\n const id = \"scheduledReports_\" + user.username;\n this.setState({\n existingReportId: id,\n });\n API.graphql(\n graphqlOperation(queries.getScheduledReports, { id: id })\n )\n .then((response) => {\n let existingReport = response.data.getScheduledReports;\n if (existingReport !== null) {\n this.setState({\n existingReport: true,\n });\n this.getInitStateForSchedulePicker(existingReport);\n }\n })\n .catch((err) => {\n this.props.alert.error(errorMessage, {\n type: \"danger\",\n });\n });\n this.subscribeForUpdates(user.username);\n })\n .catch((err) => {\n this.props.alert.error(\n errorMessage + \": could not get current user\",\n {\n type: \"danger\",\n }\n );\n });\n }\n\n getInitStateForSchedulePicker(scheduledReports) {\n if (scheduledReports != null) {\n const stringSelection = this.getKeyByValue(\n selectedDict,\n scheduledReports.frequency\n );\n const selected = Number.parseInt(stringSelection);\n if (Number.isNaN(selected)) {\n return null;\n }\n\n let weeklyDays = [];\n let biweeklyDays = [];\n let startDate = this.state.date;\n\n if (selected === 2) {\n weeklyDays = scheduledReports.onDays;\n }\n\n if (selected === 3) {\n biweeklyDays = scheduledReports.onDays;\n }\n\n if (selected === 4) {\n startDate = new Date(scheduledReports.startDate);\n }\n\n this.setState({\n selected: selected,\n date: startDate,\n weeklyDays: weeklyDays,\n biweeklyDays: biweeklyDays,\n nextRun: scheduledReports.nextRun,\n });\n }\n }\n\n onRadioBtnClick(selected) {\n if (this.state.selected && this.state.selected === selected) {\n this.setState({ selected: 0 });\n } else {\n this.setState({ selected });\n }\n }\n\n onDateChange = (date) => {\n this.setState({ date: date });\n };\n\n onWeeklyDaysCheckboxBtnClick(selected) {\n const index = this.state.weeklyDays.indexOf(selected);\n if (index < 0) {\n this.state.weeklyDays.push(selected);\n } else {\n this.state.weeklyDays.splice(index, 1);\n }\n this.state.weeklyDays.sort();\n this.setState({ weeklyDays: [...this.state.weeklyDays] });\n }\n\n onBiweeklyDaysCheckboxBtnClick(selected) {\n const index = this.state.biweeklyDays.indexOf(selected);\n if (index < 0) {\n this.state.biweeklyDays.push(selected);\n } else {\n this.state.biweeklyDays.splice(index, 1);\n }\n this.state.biweeklyDays.sort();\n this.setState({ biweeklyDays: [...this.state.biweeklyDays] });\n }\n\n updateScheduledReports() {\n this.setState({ updateInProgress: true });\n let input;\n const today = LocalDate.now();\n if (this.state.selected > 0) {\n if (this.state.selected === 1) {\n let nextRunDay;\n if (today.dayOfWeek().value() > 4) {\n const daysToNextBusinessDay =\n 7 + 1 - today.dayOfWeek().value();\n nextRunDay = today.plusDays(daysToNextBusinessDay);\n } else {\n nextRunDay = today.plusDays(1);\n }\n\n input = {\n frequency: selectedDict[this.state.selected],\n nextRun: nextRunDay,\n };\n }\n\n if (this.state.selected === 2) {\n if (this.state.weeklyDays.length === 0) {\n this.props.alert.error(\n \"Please select weekdays to run reports on\",\n {\n type: \"danger\",\n }\n );\n this.setState({ updateInProgress: false });\n return null;\n }\n\n const closestPickedDayOfWeek = DayOfWeek.of(\n this.state.weeklyDays[0]\n );\n const nextBusinessDay = today.with(\n TemporalAdjusters.next(closestPickedDayOfWeek)\n );\n\n input = {\n frequency: selectedDict[this.state.selected],\n onDays: this.state.weeklyDays,\n nextRun: nextBusinessDay,\n };\n }\n if (this.state.selected === 3) {\n if (this.state.biweeklyDays.length === 0) {\n this.props.alert.error(\n \"Please select weekdays to run reports on\",\n {\n type: \"danger\",\n }\n );\n this.setState({ updateInProgress: false });\n return null;\n }\n\n const closestPickedDayOfWeek = DayOfWeek.of(\n this.state.biweeklyDays[0]\n );\n const nextBusinessDay = today.with(\n TemporalAdjusters.next(closestPickedDayOfWeek)\n );\n input = {\n frequency: selectedDict[this.state.selected],\n onDays: this.state.biweeklyDays,\n nextRun: nextBusinessDay,\n };\n }\n if (this.state.selected === 4) {\n const year = this.state.date.getFullYear();\n const month = this.state.date.getMonth() + 1; // native JS month starts from 0\n const date = this.state.date.getDate();\n let nextRunDate = LocalDate.of(year, month, date);\n\n if (nextRunDate.equals(LocalDate.now())) {\n // increment by one day as we can not run today\n nextRunDate = nextRunDate.plusDays(1);\n }\n\n if (nextRunDate.dayOfWeek().value() > 5) {\n nextRunDate = nextRunDate.with(\n TemporalAdjusters.next(DayOfWeek.MONDAY)\n );\n }\n input = {\n frequency: selectedDict[this.state.selected],\n startDate: this.state.date.toUTCString(),\n nextRun: nextRunDate,\n };\n }\n }\n this.setState({\n nextRun: input.nextRun.toString(),\n });\n this.persistScheduledReport(input);\n }\n\n persistScheduledReport(input) {\n if (this.state.existingReport) {\n input.id = this.state.existingReportId;\n API.graphql(\n graphqlOperation(mutations.updateScheduledReports, { input })\n )\n .then((response) => {\n this.processPersistenceSuccess();\n })\n .catch((err) => {\n this.processPersistenceFailure();\n });\n } else {\n API.graphql(\n graphqlOperation(mutations.createScheduledReports, { input })\n )\n .then((response) => {\n this.processPersistenceSuccess();\n })\n .catch((err) => {\n this.processPersistenceFailure();\n });\n }\n }\n\n cancelReports() {\n this.setState({ updateInProgress: true });\n if (this.state.existingReport) {\n const input = {\n id: this.state.existingReportId,\n };\n API.graphql(\n graphqlOperation(mutations.deleteScheduledReports, { input })\n )\n .then((response) => {\n this.setState({\n updateInProgress: false,\n existingReport: false,\n });\n this.props.alert.success(\n \"Scheduled report cancelled successfully\",\n {\n type: \"success\",\n }\n );\n })\n .catch((err) => {\n this.setState({ updateInProgress: false });\n this.props.alert.error(\n \"Error cancelling scheduled report\",\n {\n type: \"danger\",\n }\n );\n });\n }\n }\n\n processPersistenceSuccess() {\n this.setState({ updateInProgress: false });\n this.props.alert.success(\"Scheduled report updated successfully\", {\n type: \"success\",\n });\n }\n\n processPersistenceFailure() {\n this.setState({ updateInProgress: false });\n this.props.alert.error(\"Error updating scheduled report\", {\n type: \"danger\",\n });\n }\n\n async subscribeForUpdates(username) {\n API.graphql(\n graphqlOperation(subscriptions.onCreateScheduledReports, {\n owner: username,\n })\n ).subscribe({\n next: ({ value: { data } }) => {\n this.setState({\n existingReport: true,\n });\n },\n error: (error) => {\n this.processSubscriptionError(error);\n },\n });\n API.graphql(\n graphqlOperation(subscriptions.onDeleteScheduledReports, {\n owner: username,\n })\n ).subscribe({\n next: ({ value: { data } }) => {\n this.setState({\n date: new Date(),\n weeklyDays: [],\n biweeklyDays: [],\n updateInProgress: false,\n existingReport: false,\n selected: 0,\n });\n },\n error: (error) => {\n this.processSubscriptionError(error);\n },\n });\n }\n\n processSubscriptionError(error) {\n const errorMessage = \"Error refreshing scheduled reports\";\n if (\n error.errors &&\n error.errors.length > 0 &&\n error.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + error.errors[0].message,\n {\n type: \"danger\",\n }\n );\n } else {\n this.props.alert.error(errorMessage, { type: \"danger\" });\n }\n }\n\n updateCurrentUserGroups() {\n const premiumGroup = \"personal\";\n Auth.currentSession({ bypassCache: false })\n .then((data) => {\n const groups = data.accessToken.payload[\"cognito:groups\"];\n if (groups && groups.includes(premiumGroup)) {\n this.setState({\n isUserInPremiumGroup: true,\n });\n }\n })\n .catch((err) => console.log(err));\n }\n\n componentDidMount() {\n this.updateCurrentUserGroups();\n }\n\n render() {\n let nextRun = this.state.nextRun;\n if (!this.state.isUserInPremiumGroup) {\n nextRun = \"halted - upgrade!\";\n }\n return (\n \n
\n
\n
\n

\n Your next report will arrive:{\" \"}\n \n {nextRun}\n \n

\n
\n
\n \n Reports are sent out on business days only\n before market opens\n \n

Please choose report frequency

\n
\n
\n this.onRadioBtnClick(1)}\n checked={this.state.selected === 1}\n />\n \n {this.state.selected === 1 && (\n
\n Every business day\n
\n )}\n
\n
\n
\n this.onRadioBtnClick(2)}\n checked={this.state.selected === 2}\n />\n \n
\n
\n {this.state.selected === 2 && (\n \n \n this.onWeeklyDaysCheckboxBtnClick(\n 1\n )\n }\n active={this.state.weeklyDays.includes(\n 1\n )}\n >\n Mo\n \n \n this.onWeeklyDaysCheckboxBtnClick(\n 2\n )\n }\n active={this.state.weeklyDays.includes(\n 2\n )}\n >\n Tue\n \n \n this.onWeeklyDaysCheckboxBtnClick(\n 3\n )\n }\n active={this.state.weeklyDays.includes(\n 3\n )}\n >\n Wed\n \n \n this.onWeeklyDaysCheckboxBtnClick(\n 4\n )\n }\n active={this.state.weeklyDays.includes(\n 4\n )}\n >\n Thu\n \n \n this.onWeeklyDaysCheckboxBtnClick(\n 5\n )\n }\n active={this.state.weeklyDays.includes(\n 5\n )}\n >\n Fri\n \n \n )}\n
\n
\n
\n
\n this.onRadioBtnClick(3)}\n checked={this.state.selected === 3}\n />\n \n
\n
\n {this.state.selected === 3 && (\n \n \n this.onBiweeklyDaysCheckboxBtnClick(\n 1\n )\n }\n active={this.state.biweeklyDays.includes(\n 1\n )}\n >\n Mo\n \n \n this.onBiweeklyDaysCheckboxBtnClick(\n 2\n )\n }\n active={this.state.biweeklyDays.includes(\n 2\n )}\n >\n Tue\n \n \n this.onBiweeklyDaysCheckboxBtnClick(\n 3\n )\n }\n active={this.state.biweeklyDays.includes(\n 3\n )}\n >\n Wed\n \n \n this.onBiweeklyDaysCheckboxBtnClick(\n 4\n )\n }\n active={this.state.biweeklyDays.includes(\n 4\n )}\n >\n Thu\n \n \n this.onBiweeklyDaysCheckboxBtnClick(\n 5\n )\n }\n active={this.state.biweeklyDays.includes(\n 5\n )}\n >\n Fri\n \n \n )}\n
\n
\n
\n
\n this.onRadioBtnClick(4)}\n checked={this.state.selected === 4}\n />\n \n
\n
\n {this.state.selected === 4 && (\n \n )}\n
\n
\n
\n
\n {(!this.state.selected ||\n this.state.updateInProgress) && (\n \n )}\n {this.state.selected > 0 &&\n !this.state.updateInProgress && (\n \n this.updateScheduledReports()\n }\n >\n Update\n \n )}\n
\n
\n {this.state.existingReport &&\n this.state.updateInProgress && (\n \n Cancel Reports\n \n )}\n {this.state.existingReport &&\n !this.state.updateInProgress && (\n this.cancelReports()}\n >\n Cancel Reports\n \n )}\n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default withAlert()(ScheduledReports);\n","import React from \"react\";\nimport \"./UpgradeBadge.css\";\nimport { Link } from \"react-router-dom\";\n\nfunction UpgradeBadge(props) {\n return (\n
\n
\n

TODAY'S PICKS

\n
\n
\n
\n
\n

29.95$

\n
\n
\n

/ month

\n

to unlock stock picks

\n
\n
\n \n \n \n
\n
\n
\n
\n );\n}\n\nexport default UpgradeBadge;\n","import React, { Component } from \"react\";\n\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\nimport \"../StockList/StockList.css\";\nimport \"./SkeletonLoader.css\";\n\nexport default class SkeletonLoader extends Component {\n render() {\n return (\n
\n
\n
\n

LOADING

\n
\n
\n \n
\n
\n
\n {\" \"}\n {\n \n }\n
\n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n {}\n
\n
\n
\n
\n
\n {\" \"}\n {\n \n }\n
\n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n {}\n
\n
\n
\n
\n
\n {\" \"}\n {\n \n }\n
\n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n {}\n
\n
\n
\n
\n
\n {\" \"}\n {\n \n }\n
\n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n {}\n
\n
\n
\n
\n
\n {\" \"}\n {\n \n }\n
\n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n

\n {}\n

\n \n {}\n \n
\n
\n {}\n
\n
\n
\n
\n
\n
\n );\n }\n}\n","import React, { Component } from \"react\";\nimport { Link, Route } from \"react-router-dom\";\n\nimport { Auth } from \"aws-amplify\";\n\nimport StockList from \"../StockList/StockList\";\nimport StockPicks from \"../StockPicks/StockPicks\";\nimport StockPicksSkeleton from \"../StockPicks/StockPicksSkeleton\";\nimport AmountToInvest from \"../AmntToInvest/AmntToInvest\";\nimport ErrorBoundary from \"../ErrorBoundary\";\nimport ScheduledReports from \"../ScheduledReports/ScheduledReports\";\nimport { NavLink } from \"react-router-dom\";\n\nimport { withAlert } from \"react-alert\";\n\nimport {\n PieChart,\n Pie,\n Cell,\n Tooltip,\n ResponsiveContainer,\n Label,\n} from \"recharts\";\nimport UpgradeBadge from \"../UpgradeBadge/UpgradeBadge\";\nimport \"./Portfolio.css\";\n\nimport Lottie from \"react-lottie\";\nimport pieLoading from \"./pieLoading.json\";\nimport piePlaceholder from \"./piePlaceholder.json\";\nimport stockPlaceholder from \"./stockPlaceholder.json\";\nimport SkeletonLoader from \"../SkeletonLoader/SkeletonLoader\";\n\nconst COLORS = [\n \"#6B4FF3\",\n \"#826AF9\",\n \"#5f27cd\",\n \"#feca57\",\n \"#FFA500\",\n \"#FFE700\",\n \"#FF6C40\",\n \"#ff6b6b\",\n \"#ee5253\",\n \"#ff9ff3\",\n \"#f368e0\",\n \"#2D99FF\",\n \"#505D6F\",\n \"#48dbfb\",\n \"#0abde3\",\n \"#2CD9C5\",\n \"#00d2d3\",\n \"#01a3a4\",\n \"#54a0ff\",\n \"#2e86de\",\n \"#5f27cd\",\n \"#341f97\",\n \"#341f97\",\n \"#576574\",\n \"#222f3e\",\n];\n\n// const renderCustomizedLabel = ({ name }) => {\n// return name;\n// };\n\nfunction CustomLabel({ viewBox, value1, value2 }) {\n const { cx, cy } = viewBox;\n return (\n \n \n {value1}\n \n \n {value2}\n \n \n );\n}\n\nconst renderCustomizedLabel = (props) => {\n const RADIAN = Math.PI / 180;\n const {\n cx,\n cy,\n midAngle,\n outerRadius,\n fill,\n name,\n percent,\n // payload\n } = props;\n const sin = Math.sin(-RADIAN * midAngle);\n const cos = Math.cos(-RADIAN * midAngle);\n const sx = cx + (outerRadius + 0) * cos;\n const sy = cy + (outerRadius + 0) * sin;\n const mx = cx + (outerRadius + 30) * cos;\n const my = cy + (outerRadius + 30) * sin;\n const ex = mx + (cos >= 0 ? 1 : -1) * 22;\n const ey = my;\n const textAnchor = cos >= 0 ? \"start\" : \"end\";\n\n if ((percent * 100).toFixed(0) >= 2) {\n return (\n \n {/* {payload.name} */}\n \n = 0 ? 1 : -1) * 5}\n y={ey}\n dy={3}\n textAnchor={textAnchor}\n fill=\"#505D6F\"\n >\n {name}\n \n \n );\n }\n};\n\nclass Portfolio extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isUserInPremiumGroup: false,\n buyBadge: \"hidden\",\n };\n this.updateCurrentUserGroups();\n }\n\n async updateCurrentUserGroups() {\n const premiumGroup = \"personal\";\n Auth.currentSession({ bypassCache: false })\n .then((data) => {\n const groups = data.accessToken.payload[\"cognito:groups\"];\n if (groups && groups.includes(premiumGroup)) {\n this.setState({\n isUserInPremiumGroup: true,\n });\n }\n })\n .catch((err) => console.log(err));\n }\n\n render() {\n var stockPicks = this.props.stockPicks;\n var tickersWithShares = this.props.stocks.filter(function (stock) {\n return stock.sharesNumber > 0;\n });\n\n tickersWithShares.sort(function (a, b) {\n return b.sharesNumber * b.price - a.sharesNumber * a.price;\n });\n\n var tickersHold = this.props.stocks.filter(function (stock) {\n return (\n stock.sharesNumberDiffWithRecommended === 0 &&\n stock.sharesNumber > 0 &&\n !stock.recommended\n );\n });\n var tickersHoldRecommended = this.props.stocks.filter(function (stock) {\n return (\n stock.sharesNumberDiffWithRecommended === 0 &&\n stock.sharesNumber > 0 &&\n stock.recommended\n );\n });\n var recommendedTickersAdd = this.props.stocks.filter(function (stock) {\n return (\n stock.recommended && stock.sharesNumberDiffWithRecommended > 0\n );\n });\n var recommendedTickersSell = this.props.stocks.filter(function (stock) {\n return stock.sharesNumberDiffWithRecommended < 0;\n });\n return (\n
\n
\n {this.state.isUserInPremiumGroup ? (\n
\n {!stockPicks && (\n
\n \n
\n )}\n {stockPicks && stockPicks.length > 0 && (\n \n )}\n
\n\n ) : (\n \n )}\n\n {this.props.loading === false && (\n
\n

PORTFOLIO BREAKDOWN

\n
\n )}\n {this.props.loading && (\n
\n
\n

\n PORTFOLIO BREAKDOWN\n

\n
\n \n
\n )}\n {this.props.loading === false &&\n tickersWithShares.length === 0 &&\n recommendedTickersAdd.length === 0 && (\n
\n
\n

YOUR PORTFOLIO IS EMPTY

\n
\n \n \n {!this.props.isUserInPremiumGroup && (\n

\n Take a product tour or\n add{\" \"}\n \n stocks from search\n .{\" \"}\n
\n
\n Upgrade to get our stock picks!\n

\n )}\n {this.props.isUserInPremiumGroup && (\n

\n Just add{\" \"}\n \n stocks from search or\n {\" \"}\n \n Update amount to invest
\n (set to a higher amount)\n
\n to see the stocks with BUY\n rating\n {\" \"}\n

\n )}\n
\n
\n )}\n\n {recommendedTickersAdd.length > 0 && (\n \n )}\n {recommendedTickersSell.length > 0 && (\n \n )}\n\n {(tickersHoldRecommended.length > 0 || tickersHold.length) >\n 0 && (\n
\n

HOLD RATING

\n
\n )}\n {tickersHoldRecommended.length > 0 && (\n \n )}\n {tickersHold.length > 0 && (\n \n )}\n
\n \n
\n \n {/* {this.props.components.showPortfolioPieCharts && ( */}\n {this.props.loading === false &&\n tickersWithShares.length === 0 && (\n \n )}\n {this.props.loading && (\n \n )}\n {this.props.loading === false &&\n tickersWithShares.length !== 0 && (\n
\n \n \n ({\n name: el.symbol,\n value:\n Math.round(\n el.sharesNumber *\n el.price *\n 100\n ) / 100,\n })\n )}\n // cx={175}\n // cy={150}\n innerRadius={90}\n outerRadius={120}\n fill=\"#8884d8\"\n paddingAngle={1}\n labelLine={false}\n dataKey=\"value\"\n startAngle={90}\n endAngle={-270}\n //isAnimationActive={false}\n label={\n renderCustomizedLabel\n }\n >\n {\n return (\n total +\n o.sharesNumber *\n o.price\n );\n },\n 0\n )\n .toLocaleString(\n \"en-US\",\n {\n style:\n \"currency\",\n currency:\n \"USD\",\n }\n )}\n value2=\"Total Invested\"\n />\n }\n >\n {tickersWithShares.map(\n (entry, index) => (\n \n )\n )}\n \n \n \n \n
\n )}\n {/* )} */}\n
\n {this.props.components.showAmountToInvest && (\n \n {this.state.isUserInPremiumGroup && (\n \n )}\n \n )}\n {this.props.components.showReportSchedule && (\n \n )}\n
\n \n \n );\n }\n}\n\nexport default withAlert()(Portfolio);\n","import React, { Component } from \"react\";\n\nimport { API, Auth, graphqlOperation } from \"aws-amplify\";\n\nimport * as queries from \"../graphql/queries\";\nimport * as subscriptions from \"../graphql/subscriptions\";\n\nimport Layout from \"./Layout\";\nimport Portfolio from \"./Portfolio/Portfolio\";\n\nimport { withAlert } from \"react-alert\";\n\nimport \"./StockList/StockList.css\";\n\nclass ConnectPortfolio extends Component {\n constructor(props) {\n super(props);\n this.state = {\n stocks: [],\n loading: true,\n subscriptionsArr: [],\n buyBadgeShow: false,\n };\n }\n\n getDefaultState() {\n return {\n data: {},\n errors: [],\n };\n }\n\n handleError(error, errorMessage) {\n if (\n error != null &&\n error.errors &&\n error.errors.length > 0 &&\n error.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + error.errors[0].message,\n {\n type: \"danger\",\n }\n );\n } else {\n this.props.alert.error(errorMessage, { type: \"danger\" });\n }\n }\n\n async subscribeForStockUpdates(username) {\n let subscriptionsArr = [];\n const onUpdatePortfolioStockSubscription = API.graphql(\n graphqlOperation(subscriptions.onUpdatePortfolioStock, {\n owner: username,\n })\n ).subscribe({\n next: (updatePortfolioStockData) => {\n this.getStocks().then((stocks) =>\n this.setState({ stocks: stocks })\n );\n },\n error: (error) => {\n this.handleError(error, \"Error refreshing stock list\");\n },\n });\n subscriptionsArr.push(onUpdatePortfolioStockSubscription);\n\n const onDeletePortfolioStockSubscription = API.graphql(\n graphqlOperation(subscriptions.onDeletePortfolioStock, {\n owner: username,\n })\n ).subscribe({\n next: (deletePortfolioStockData) => {\n this.getStocks().then((stocks) =>\n this.setState({ stocks: stocks })\n );\n },\n error: (error) => {\n this.handleError(error, \"Error refreshing stock list\");\n },\n });\n subscriptionsArr.push(onDeletePortfolioStockSubscription);\n\n const onCreatePortfolioStockSubscription = API.graphql(\n graphqlOperation(subscriptions.onCreatePortfolioStock, {\n owner: username,\n })\n ).subscribe({\n next: (createPortfolioStockData) => {\n let stock =\n createPortfolioStockData.value.data.onCreatePortfolioStock;\n console.log(stock);\n let message =\n \"Added \" +\n stock.sharesNumber +\n \" shares of \" +\n stock.symbol +\n \" to portfolio\";\n this.props.alert.success(message, { type: \"success\" });\n this.getStocks().then((stocks) =>\n this.setState({ stocks: stocks })\n );\n },\n error: (error) => {\n this.handleError(error, \"Error refreshing stock list\");\n },\n });\n subscriptionsArr.push(onCreatePortfolioStockSubscription);\n\n const onUpdateSettingsSubscription = API.graphql(\n graphqlOperation(subscriptions.onUpdateSettings, {\n owner: username,\n })\n ).subscribe({\n next: (onUpdateSettings) => {\n this.getStocks().then((stocks) =>\n this.setState({ stocks: stocks })\n );\n },\n error: (error) => {\n this.handleError(error, \"Error refreshing stock list\");\n },\n });\n subscriptionsArr.push(onUpdateSettingsSubscription);\n\n const onCreateSettingsSubscription = API.graphql(\n graphqlOperation(subscriptions.onCreateSettings, {\n owner: username,\n })\n ).subscribe({\n next: (onCreateSettings) => {\n this.getStocks().then((stocks) =>\n this.setState({ stocks: stocks })\n );\n },\n error: (error) => {\n this.handleError(error, \"Error refreshing stock list\");\n },\n });\n subscriptionsArr.push(onCreateSettingsSubscription);\n this.setState({ subscriptionsArr: subscriptionsArr });\n }\n\n async getStocks() {\n let { data } = this.getDefaultState();\n try {\n data = null;\n const limit = '{\"limit\": 100}';\n const response = await API.graphql(\n graphqlOperation(queries.getPortfolio, limit)\n );\n\n data = response.data;\n } catch (err) {\n this.handleError(err, \"Error loading portfolio\");\n return [];\n }\n if (data.getPortfolio) {\n return data.getPortfolio.items;\n } else {\n this.handleError(null, \"Could not load stocks\");\n return [];\n }\n }\n\n async loadStocks() {\n let stocks = await this.getStocks();\n this.setState({ stocks: stocks, buyBadgeShow: true, loading: false });\n }\n\n render() {\n return (\n \n \n \n );\n }\n\n getStockPicks() {\n let apiName = \"stockPicks\";\n let path = \"/picks\";\n\n API.get(apiName, path)\n .then((response) => {\n this.setState({\n stockPicks: response,\n });\n })\n .catch((error) => {\n this.handleError(error, \"Error loading stock picks\");\n });\n }\n\n componentDidMount() {\n const errorMessage = \"Error loading stock list\";\n const premiumGroup = \"personal\";\n Auth.currentSession({ bypassCache: false })\n .then((data) => {\n const groups = data.accessToken.payload[\"cognito:groups\"];\n if (groups && groups.includes(premiumGroup)) {\n this.setState({\n isUserInPremiumGroup: true,\n });\n this.getStockPicks();\n }\n })\n .catch((err) =>\n this.props.alert.error(\"Error loading user group data\")\n );\n Auth.currentAuthenticatedUser({\n bypassCache: false, // Optional, By default is false. If set to true, this call will send a request to Cognito to get the latest user data\n })\n .then((user) => {\n this.subscribeForStockUpdates(user.username);\n })\n .catch((err) => {\n this.props.alert.error(errorMessage, {\n type: \"danger\",\n });\n });\n this.loadStocks();\n }\n\n componentWillUnmount() {\n this.state.subscriptionsArr.forEach(function (subscription) {\n subscription.unsubscribe();\n });\n }\n}\n\nexport default withAlert()(ConnectPortfolio);\n","export const Container = {\n backgroundColor: \"#3556FF\",\n // height: \"100vh\",\n display: \"flex\",\n // flexWrap: \"wrap\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: \"1em\",\n};\nexport const FormContainer = {\n display: \"flex\",\n justifyContent: \"center\",\n margin: \"0\",\n};\nexport const FormSection = { borderRadius: \"6px\" };\nexport const FormField = {};\nexport const SectionHeader = { textAlign: \"center\" };\nexport const SectionBody = {};\nexport const SectionFooter = {};\nexport const SectionFooterPrimaryContent = {};\nexport const SectionFooterSecondaryContent = {};\nexport const Input = {\n border: \"1px solid #efefef\",\n borderRadius: \"6px\",\n color: \"#505d6f\",\n fontSize: \"12px\",\n padding: \"2em\",\n};\nexport const Button = { backgroundColor: \"#2246FF\", borderRadius: \"6px\" };\nexport const PhotoPickerButton = {};\nexport const PhotoPlaceholder = {};\nexport const SignInButton = {};\nexport const SignInButtonIcon = {};\nexport const SignInButtonContent = {};\nexport const Strike = {};\nexport const StrikeContent = {};\nexport const ActionRow = {};\nexport const FormRow = {};\nexport const A = {};\nexport const Hint = { textAlign: \"center\" };\nexport const Radio = {};\nexport const InputLabel = { display: \"none\" };\nexport const AmazonSignInButton = {};\nexport const FacebookSignInButton = {};\nexport const GoogleSignInButton = {};\nexport const OAuthSignInButton = {};\nexport const Toast = {};\nexport const NavBar = {};\nexport const NavRight = {};\nexport const Nav = {};\nexport const NavItem = {};\nexport const NavButton = {};\n\nconst MyTheme = {\n container: Container,\n formContainer: FormContainer,\n formSection: FormSection,\n formField: FormField,\n\n sectionHeader: SectionHeader,\n sectionBody: SectionBody,\n sectionFooter: SectionFooter,\n sectionFooterPrimaryContent: SectionFooterPrimaryContent,\n sectionFooterSecondaryContent: SectionFooterSecondaryContent,\n\n input: Input,\n button: Button,\n photoPickerButton: PhotoPickerButton,\n photoPlaceholder: PhotoPlaceholder,\n signInButton: SignInButton,\n signInButtonIcon: SignInButtonIcon,\n signInButtonContent: SignInButtonContent,\n amazonSignInButton: AmazonSignInButton,\n facebookSignInButton: FacebookSignInButton,\n googleSignInButton: GoogleSignInButton,\n oAuthSignInButton: OAuthSignInButton,\n\n formRow: FormRow,\n strike: Strike,\n strikeContent: StrikeContent,\n actionRow: ActionRow,\n a: A,\n\n hint: Hint,\n radio: Radio,\n inputLabel: InputLabel,\n toast: Toast,\n\n navBar: NavBar,\n nav: Nav,\n navRight: NavRight,\n navItem: NavItem,\n navButton: NavButton,\n};\n\nexport default MyTheme;\n","import React, { Component } from \"react\";\n\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport * as queries from \"../../graphql/queries\";\nimport { ListGroup, ListGroupItem } from \"reactstrap\";\n\nimport { withAlert } from \"react-alert\";\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\n\nimport Layout from \"../Layout\";\nimport \"./TransactionHistory.css\";\n\nclass TransactionHistory extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isLoading: true,\n transactionHistory: [],\n };\n }\n\n fetchNextPage(nextToken) {\n const errorMessage = \"Error loading transaction history\";\n API.graphql(\n graphqlOperation(queries.listTransactionHistorys, {\n nextToken: nextToken,\n })\n )\n .then((response) => {\n console.log(response.data.listTransactionHistorys.nextToken);\n if (response.data.listTransactionHistorys.nextToken !== null) {\n this.setState({\n nextToken:\n response.data.listTransactionHistorys.nextToken,\n });\n }\n this.setState({\n transactionHistory:\n response.data.listTransactionHistorys.items,\n });\n })\n .catch((err) => {\n console.log(err);\n if (\n err.errors &&\n err.errors.length > 0 &&\n err.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + err.errors[0].message,\n {\n type: \"danger\",\n }\n );\n } else {\n this.props.alert.error(errorMessage, { type: \"danger\" });\n }\n });\n }\n\n render() {\n const transactionHistory = this.state.transactionHistory.map(\n (thItem) => (\n \n
\n
\n {thItem.symbol}\n
\n
\n {thItem.sharesNumber > 0 && (\n \n \n \n \n BUY {thItem.sharesNumber}\n \n )}\n {thItem.sharesNumber < 0 && (\n \n \n \n \n SELL {thItem.sharesNumber}\n \n )}\n ${thItem.price}\n
\n
\n \n {thItem.createdAt.toLocaleString()}\n \n
\n
\n
\n )\n );\n\n const transactionSkeleton = \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n\n return (\n \n
\n \n

Transactions History

\n {this.state.isLoading ? (\n transactionSkeleton\n ) : (\n
{transactionHistory.length === 0 ? (\n
No transactions yet
\n ) : (\n transactionHistory\n )}
\n )}\n\n
\n {this.state.nextToken && (\n
\n \n
\n )}\n
\n
\n );\n }\n\n componentDidMount() {\n this.getHistoryItems();\n }\n\n getHistoryItems() {\n let limit = 10;\n const errorMessage = \"Error loading transaction history\";\n let queryFilter = {\n limit: limit,\n };\n if (this.state.nextToken && this.state.nextToken !== null) {\n queryFilter = {\n limit: limit,\n nextToken: this.state.nextToken,\n };\n }\n\n API.graphql(\n graphqlOperation(queries.listTransactionHistorys, queryFilter)\n )\n .then((response) => {\n this.setState({\n isLoading: false,\n nextToken: response.data.listTransactionHistorys.nextToken,\n });\n\n var historyItems = response.data.listTransactionHistorys.items;\n historyItems.forEach(function (historyItem) {\n var date = new Date(historyItem.createdAt);\n historyItem[\"createdAt\"] = date;\n });\n\n var stateHistoryItems = [];\n if (this.state.transactionHistory) {\n stateHistoryItems = this.state.transactionHistory;\n }\n\n var mergedHistoryItems = stateHistoryItems.concat(historyItems);\n\n this.setState({\n transactionHistory: mergedHistoryItems,\n });\n })\n .catch((err) => {\n console.log(err);\n this.setState({\n isLoading: false\n });\n if (\n err.errors &&\n err.errors.length > 0 &&\n err.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + err.errors[0].message,\n {\n type: \"danger\",\n }\n );\n } else {\n this.props.alert.error(errorMessage, { type: \"danger\" });\n }\n });\n }\n}\n\nexport default withAlert()(TransactionHistory);\n","import React, { Component } from \"react\";\nimport { API, graphqlOperation } from \"aws-amplify\";\nimport * as queries from \"../../graphql/queries\";\n\nimport Layout from \"../Layout\"\nimport { Button, Row } from \"reactstrap\";\n\nimport { withAlert } from \"react-alert\";\n\nimport {\n AreaChart,\n Area,\n XAxis,\n YAxis,\n Tooltip,\n ResponsiveContainer\n} from \"recharts\";\n\nimport Lottie from \"react-lottie\";\nimport chartLoading from \"./chartLoading.json\";\n\nimport \"./PortfolioTracker.css\";\n\nconst CustomTooltip = ({ active, payload, label, portfolioValue }) => {\n if (active && portfolioValue !== 0) {\n const valuePortfolio = payload ? payload[0].value : \"\";\n const valueBenchmark = payload ? payload[1].value : \"\";\n const date = new Date(parseInt(label)).toLocaleDateString();\n return (\n
\n
\n

Portfolio Value:

\n

${valuePortfolio.toFixed(2)}

\n
\n
\n

Benchmark SPY:

\n

${valueBenchmark.toFixed(2)}

\n
\n

{date}

\n
\n );\n }\n\n return null;\n};\n\nclass PortfolioTracker extends Component {\n constructor(props) {\n super(props);\n this.state = {\n data: [],\n portfolioValue: 0,\n change: 0,\n recommendedOnly: false,\n containerWidth: 0,\n containerHeight: 0,\n loading: false\n };\n this.getTooltip = this.getTooltip.bind(this);\n this.getChart = this.getChart.bind(this);\n }\n detectColor(node) {\n return node.color;\n }\n\n getTooltip(node) {\n let date = new Date(parseInt(node.id));\n let timePart = `${date.getHours()}:${date.getMinutes()}`;\n let datePart = `${date.getMonth()}/${date.getDate()}/${date.getFullYear()}`;\n let formatedDate;\n if (this.state.activeLink === \"1d\") {\n formatedDate = datePart + \" \" + timePart;\n } else {\n formatedDate = datePart;\n }\n return (\n
\n {node.data.map(d => (\n \n \n {d.serie.id}\n {\" \"}\n \n ${d.data.y.toFixed(2)}\n \n
\n ))}\n \n {formatedDate}\n \n \n );\n }\n\n handlePeriodClick(periodName) {\n switch (periodName) {\n case \"1d\":\n this.handlePeriodChange(\"1d\");\n this.setState({ activeLink: \"1d\" });\n break;\n case \"1m\":\n this.handlePeriodChange(\"1m\");\n this.setState({ activeLink: \"1m\" });\n break;\n case \"3m\":\n this.handlePeriodChange(\"3m\");\n this.setState({ activeLink: \"3m\" });\n break;\n case \"6m\":\n this.handlePeriodChange(\"6m\");\n this.setState({ activeLink: \"6m\" });\n break;\n case \"1y\":\n this.handlePeriodChange(\"1y\");\n this.setState({ activeLink: \"1y\" });\n break;\n case \"2y\":\n this.handlePeriodChange(\"2y\");\n this.setState({ activeLink: \"2y\" });\n break;\n case \"5y\":\n this.handlePeriodChange(\"5y\");\n this.setState({ activeLink: \"5y\" });\n break;\n default:\n throw Error(\"Unknown period\");\n }\n }\n\n render() {\n const data = this.state.data;\n const ch0 = data[0] ? data[0].data : [];\n const ch1 = data[1] ? data[1].data : [];\n const chartData = ch0.map((e, i) => ({\n x: e.x,\n \"Portfolio Value\": e.y,\n \"Benchmark SPY\": ch1[i].y\n }));\n return (\n \n
\n
\n {this.state.data.length === 0 &&
}\n\n {this.state.data.length !== 0 && (\n
\n
\n
\n

Portfolio Value

\n

\n {this.state.portfolioValue > 0 &&\n this.state.portfolioValue.toFixed(2)}\n {this.state.portfolioValue === 0 &&\n \"Not enough data points to calculate value\"}\n

\n

{this.state.benchmarkValue}

\n {this.state.change > 0 && (\n +{this.state.change} %\n )}\n {this.state.change < 0 && (\n {this.state.change} %\n )}\n
\n
\n \n this.setState({\n recommendedOnly: !this.state.recommendedOnly\n })\n }\n />\n \n
\n
\n\n \n
\n {this.state.loading ? (
): (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n } />\n \n \n \n \n )}\n \n
\n this.handlePeriodClick(\"1m\")}\n >\n 1m\n \n this.handlePeriodClick(\"3m\")}\n >\n 3m\n \n this.handlePeriodClick(\"6m\")}\n >\n 6m\n \n this.handlePeriodClick(\"1y\")}\n >\n 1y\n \n this.handlePeriodClick(\"2y\")}\n >\n 2y\n \n this.handlePeriodClick(\"5y\")}\n >\n 5y\n \n
\n
\n
\n
\n )}\n
\n
\n
\n );\n }\n\n handlePeriodChange(period) {\n this.getChart(period)\n this.setState({loading: true})\n }\n\n getChart(period) {\n let benchmarkSymbols = [\"SPY\"];\n API.graphql(\n graphqlOperation(queries.dataPointsForPortfolioTracker, {\n limit: 0,\n period: period,\n benchmarkSymbols: benchmarkSymbols,\n recommendedOnly: this.state.recommendedOnly\n })\n )\n .then(response => {\n const data = response.data.dataPointsForPortfolioTracker.items;\n const initialPortfolioValue =\n response.data.dataPointsForPortfolioTracker.initialPortfolioValue;\n\n let dataPoints = [\n {\n id: \"Portfolio Value\",\n color: \"rgb(34, 70, 255)\",\n data: data\n }\n ];\n if (data.length > 0) {\n this.setState({\n portfolioValue: data[data.length - 1].y,\n change:\n Math.round(\n ((data[data.length - 1].y - initialPortfolioValue) /\n initialPortfolioValue) *\n 100 *\n 100\n ) / 100\n });\n }\n\n let benchmarks = response.data.dataPointsForPortfolioTracker.benchmarks;\n benchmarks.forEach(function(benchmark) {\n let items = benchmark.items;\n if (items.length > 0) {\n let benchmarkData = {\n id: \"Benchmark \" + benchmark.name,\n color: \"rgb(243, 39, 64)\",\n data: items\n };\n dataPoints.push(benchmarkData);\n }\n });\n\n this.setState({\n data: dataPoints,\n loading: false\n });\n })\n .catch(err => {\n this.handleError(err, \"Error loading portfolio tracker\");\n });\n }\n componentDidMount() {\n const defaultPeriod = \"1y\";\n\n this.setState({\n activeLink: defaultPeriod,\n recommendedOnly: false\n });\n this.getChart(defaultPeriod);\n }\n\n handleError(error, errorMessage) {\n if (error.errors && error.errors.length > 0 && error.errors[0].message) {\n this.props.alert.error(errorMessage + \": \" + error.errors[0].message, {\n type: \"danger\"\n });\n } else {\n this.props.alert.error(errorMessage, { type: \"danger\" });\n }\n }\n}\n\nexport default withAlert()(PortfolioTracker);\n","// TradingViewWidget.jsx\nimport React, {useEffect, useRef, memo} from 'react';\n\nfunction StockChart({symbol}) {\n const container = useRef();\n\n useEffect(\n () => {\n const script = document.createElement(\"script\");\n script.src = \"https://s3.tradingview.com/external-embedding/embed-widget-advanced-chart.js\";\n script.type = \"text/javascript\";\n script.async = true;\n script.innerHTML = `\n {\n \"width\": \"100%\",\n \"height\": \"610\",\n \"symbol\": \"${symbol}\",\n \"interval\": \"D\",\n \"timezone\": \"Etc/UTC\",\n \"theme\": \"light\",\n \"style\": \"1\",\n \"locale\": \"en\",\n \"allow_symbol_change\": true,\n \"calendar\": false,\n \"support_host\": \"https://www.tradingview.com\"\n }`;\n container.current.appendChild(script);\n },\n []\n );\n\n return (\n \n );\n}\n\nexport default memo(StockChart);","import React, { Component } from \"react\";\nimport { Button, Form, FormGroup, Input } from \"reactstrap\";\n\nimport { API } from \"aws-amplify\";\nimport { graphqlOperation } from \"aws-amplify\";\n\nimport * as mutations from \"../../graphql/mutations\";\n\nimport { withAlert } from \"react-alert\";\n\nimport \"./SearchAddStock.css\";\n\nclass SearchAddStock extends Component {\n constructor(props) {\n super(props);\n this.apiName = \"getStockPrice\";\n this.state = {\n sharesNumber: 0\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.submit = this.submit.bind(this);\n }\n\n async createPortfolioStock(input) {\n API.graphql(graphqlOperation(mutations.createPortfolioStock, { input }))\n .then(result => {\n let message =\n \"Added \" +\n this.state.sharesNumber +\n \" shares of \" +\n this.props.symbol +\n \" to portfolio\";\n this.props.alert.success(message, { type: \"success\" });\n })\n .catch(err => {\n if (\n err.errors &&\n err.errors.length > 0 &&\n err.errors[0].message\n ) {\n if (\n err.errors[0].message.indexOf(\n \"ConditionalCheckFailedException\"\n ) >= 0\n ) {\n this.props.alert.error(\n \"Stock \" + input.symbol + \" already exists\",\n { type: \"danger\" }\n );\n } else {\n this.props.alert.error(\n \"Error adding stock: \" + err.errors[0].message,\n { type: \"danger\" }\n );\n }\n } else {\n this.props.alert.error(\"Error adding stock\", {\n type: \"danger\"\n });\n }\n });\n }\n\n async submit(event) {\n event.preventDefault();\n let path = \"/v1/stock/\" + this.props.symbol + \"/quote\";\n if (this.isAddStockInputValid()) {\n API.get(this.apiName, path)\n .then(response => {\n const input = {\n symbol: this.props.symbol.trim().toUpperCase(),\n sharesNumber: this.state.sharesNumber,\n recommended: false,\n sharesNumberDiffWithRecommended: 0,\n price: response.data.latestPrice\n };\n this.createPortfolioStock(input);\n })\n .catch(error => {\n this.props.alert.error(\n \"Error adding stock \" + this.props.symbol,\n {\n type: \"danger\"\n }\n );\n });\n }\n }\n\n isAddStockInputValid() {\n if (!this.props.symbol || this.props.symbol === \"\") {\n this.props.alert.error('\"Stock symbol\" must not be empty', {\n type: \"danger\"\n });\n return false;\n }\n\n if (isNaN(this.state.sharesNumber)) {\n this.props.alert.error(\n '\"Number of shares\" field should be a number',\n {\n type: \"danger\"\n }\n );\n return false;\n }\n\n if (this.state.sharesNumber <= 0) {\n this.props.alert.error(\n '\"Number of shares\" field should be a positive integer',\n { type: \"danger\" }\n );\n return false;\n }\n return true;\n }\n\n handleChange(name, event) {\n this.setState({\n [name]: event.target.value.trim()\n });\n }\n\n render() {\n return (\n
\n
\n \n {\n this.handleChange(\"sharesNumber\", ev);\n }}\n />\n \n \n
\n
\n );\n }\n}\n\nexport default withAlert()(SearchAddStock);\n","import React, { Component } from \"react\";\n\nimport { Auth, API, graphqlOperation } from \"aws-amplify\";\nimport * as queries from \"../../graphql/queries\";\nimport * as subscriptions from \"../../graphql/subscriptions\";\n\nimport Layout from \"../Layout\";\nimport StockChart from \"../StockChart\";\nimport SearchAddStock from \"../SearchAddStock/SearchAddStock\";\n\nimport { withAlert } from \"react-alert\";\n\nimport { Row } from \"reactstrap\";\n\nimport { Link } from \"react-router-dom\";\n\nimport Skeleton, { SkeletonTheme } from \"react-loading-skeleton\";\n\nimport \"./StockPage.css\";\nimport fallbackLogo from \"../StockList/fallback-logo.png\";\n\nclass StockPage extends Component {\n constructor(props) {\n super(props);\n this.apiName = \"getStockPrice\";\n this.state = {\n price: \"\",\n rating: \"\",\n averageValue: \"\",\n change: \"\",\n changePercent: \"\",\n isUserInPremiumGroup: false,\n sharesNumber: \"\",\n loading: true,\n };\n }\n\n async getCurrentStockFromPortfolio() {\n const errorMessage = \"Error loading shares number\";\n Auth.currentAuthenticatedUser({\n bypassCache: false, // Optional, By default is false. If set to true, this call will send a request to Cognito to get the latest user data\n })\n .then((user) => {\n const stockId =\n this.props.match.params.id + \"_\" + user.username;\n API.graphql(\n graphqlOperation(queries.getPortfolioStock, { id: stockId })\n )\n .then((response) => {\n if (\n response.data.getPortfolioStock === null ||\n response.data.getPortfolioStock.sharesNumber ===\n null\n ) {\n this.setState({ sharesNumber: 0 });\n } else {\n this.setState({\n sharesNumber:\n response.data.getPortfolioStock\n .sharesNumber,\n });\n }\n })\n .catch((err) => {\n console.log(err);\n this.setState({\n sharesNumber: \"error loading shares number\",\n });\n if (\n err.errors &&\n err.errors.length > 0 &&\n err.errors[0].message\n ) {\n this.props.alert.error(\n errorMessage + \": \" + err.errors[0].message,\n { type: \"danger\" }\n );\n } else {\n this.props.alert.error(errorMessage, {\n type: \"danger\",\n });\n }\n });\n })\n .catch((err) => {\n this.props.alert.error(errorMessage + \": stock id malformed\", {\n type: \"danger\",\n });\n });\n }\n\n async getStockEvaluation(stockId) {\n API.graphql(\n graphqlOperation(queries.getEvaluatedStocks, { id: stockId })\n )\n .then((response) => {\n const evaluatedStock = response.data.getEvaluatedStocks;\n if (evaluatedStock === null) {\n this.setState({\n rating: \"N/A\",\n averageValue: \"N/A\",\n loading: false,\n });\n } else {\n this.setState({\n rating: evaluatedStock.rating,\n averageValue: evaluatedStock.averageValue,\n loading: false,\n });\n }\n })\n .catch((err) => {\n const errorMessage = \"Error loading stock evaluation\";\n this.handleError(err, errorMessage);\n this.setState({ rating: \"N/A\", averageValue: \"N/A\" });\n });\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.match.params.id !== this.props.match.params.id) {\n this.getStockEvaluation(this.props.match.params.id);\n this.getCurrentStockFromPortfolio();\n }\n }\n\n componentDidMount() {\n const premiumGroup = \"personal\";\n Auth.currentSession({ bypassCache: false })\n .then((data) => {\n const groups = data.accessToken.payload[\"cognito:groups\"];\n if (groups && groups.includes(premiumGroup)) {\n this.getStockEvaluation(this.props.match.params.id);\n this.setState({\n isUserInPremiumGroup: true,\n loading: true,\n });\n }\n })\n .catch((err) => {\n const errorMessage = \"Could not retrieve user groups\";\n this.handleError(err, errorMessage);\n });\n this.getCurrentStockFromPortfolio();\n const errorMessage = \"Error refreshing stock shares number\";\n\n Auth.currentAuthenticatedUser({\n bypassCache: false, // Optional, By default is false. If set to true, this call will send a request to Cognito to get the latest user data\n })\n .then((user) => {\n API.graphql(\n graphqlOperation(subscriptions.onCreatePortfolioStock, {\n owner: user.username,\n })\n ).subscribe({\n next: (createPortfolioStockData) => {\n this.setState({\n sharesNumber:\n createPortfolioStockData.value.data\n .onCreatePortfolioStock.sharesNumber,\n });\n },\n error: (error) => {\n this.handleError(error, errorMessage);\n },\n });\n })\n .catch((err) => {\n this.props.alert.error(errorMessage, {\n type: \"danger\",\n });\n });\n }\n\n handleError(err, errorMessage) {\n if (err.errors && err.errors.length > 0 && err.errors[0].message) {\n this.props.alert.error(\n errorMessage + \": \" + err.errors[0].message,\n {\n type: \"danger\",\n }\n );\n } else {\n this.props.alert.error(errorMessage, { type: \"danger\" });\n }\n }\n\n addDefaultSrc(ev) {\n ev.target.src = fallbackLogo;\n }\n\n render() {\n var ratingTextColor = \"#4a4a4a\";\n if (this.state.rating === \"BUY\") {\n ratingTextColor = \"#2246FF\";\n }\n if (this.state.rating === \"SELL\") {\n ratingTextColor = \"#F32740\";\n }\n\n return (\n \n
\n
\n \n
\n
\n
\n \n
\n\n
\n
\n
\n {this.state.isUserInPremiumGroup && (\n
\n {this.state.loading ? (\n
\n \n \n

Rating

\n
\n \n \n

\n Est. fair value\n

\n
\n
\n ) : (\n
\n
\n \n \n {\n this\n .state\n .rating\n }\n {\" \"}\n

Rating

\n \n\n \n {this.state\n .averageValue\n .length ===\n 0 ? (\n \n ) : (\n \n {this\n .state\n .averageValue ===\n 0 &&\n \"N/A\"}\n {this\n .state\n .averageValue !==\n 0 && (\n
\n $\n {\n this\n .state\n .averageValue\n }\n
\n )}\n
\n )}\n

\n Est. fair\n value\n

\n
\n
\n
\n )}\n
\n )}\n {!this.state.isUserInPremiumGroup && (\n \n You are not getting rating &\n evaluations
\n \n Upgrade!\n \n
\n )}\n \n {this.state.sharesNumber.length ===\n 0 ? (\n \n \n

Shares

\n
\n ) : (\n this.state.sharesNumber > 0 && (\n \n {\n this.state\n .sharesNumber\n }\n

Shares

\n
\n )\n )}\n
\n
\n
\n
\n {this.state.sharesNumber === 0 && (\n \n )}\n
\n
\n
\n \n \n \n
\n
\n
\n );\n }\n}\n\nexport default withAlert()(StockPage);\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport Lottie from \"react-lottie\";\nimport stockPlaceholder from \"../Portfolio/stockPlaceholder.json\";\nimport \"./NotFoundPage.css\";\n\nfunction NotFoundPage() {\n return (\n
\n
\n

Ooops, page not found...

\n
\n \n
\n

\n Take a product tour or add stocks from search,{\" \"}\n Upgrade to find out what to buy\n or go to Portfolio\n

\n
\n
\n );\n}\n\nexport default NotFoundPage;\n","import React, { Component } from \"react\";\n\nimport Layout from \"../Layout\";\nimport \"./ProductTour.css\";\n\nclass ProductTour extends Component {\n constructor(props) {\n super(props);\n this.state = {\n };\n }\n\n render() {\n return (\n \n
\n

\n
\n
\n );\n }\n\n}\n\nexport default ProductTour;\n","import React, { Component } from \"react\";\nimport { NavLink } from \"react-router-dom\";\n\nexport default class NavLinks extends Component {\n render() {\n return (\n \n );\n }\n}\n","import React, { Component } from \"react\";\nimport \"./Sidebar.css\";\nimport { Link } from \"react-router-dom\";\nimport NavLinks from \"./NavLinks\";\n\nexport default class Sidebar extends Component {\n state = {\n sidebarMin: \"sidebarMax\"\n };\n\n closeMenu() {}\n\n render() {\n return (\n
\n
\n \n \"wealthX\"\n \n
\n \n \n
\n );\n }\n}\n","import * as React from \"react\";\nimport { I18n, ConsoleLogger as Logger, Hub } from \"@aws-amplify/core\";\nimport Auth from \"@aws-amplify/auth\";\n\nimport { AuthPiece } from \"aws-amplify-react\";\n\nconst logger = new Logger(\"SignOut\");\n\nconst Constants = {\n AUTH_SOURCE_KEY: \"amplify-react-auth-source\",\n AUTH0: \"auth0\",\n GOOGLE: \"google\",\n FACEBOOK: \"facebook\",\n AMAZON: \"amazon\",\n SIGN_IN_WITH_HOSTEDUI_KEY: \"amplify-react-signin-with-hostedUI\"\n};\n\nexport default class SignOut extends AuthPiece {\n constructor(props) {\n super(props);\n\n this.signOut = this.signOut.bind(this);\n Hub.listen(\"auth\", this);\n this.onHubCapsule = this.onHubCapsule.bind(this);\n this.state = {};\n }\n\n componentDidMount() {\n this._isMounted = true;\n this.findState();\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n findState() {\n if (!this.props.authState && !this.props.authData) {\n Auth.currentAuthenticatedUser()\n .then(user => {\n this.setState({\n authState: \"signedIn\",\n authData: user,\n stateFromStorage: true\n });\n })\n .catch(err => logger.error(err));\n } else if (this.props.stateFromStorage) {\n this.setState({\n stateFromStorage: true\n });\n }\n }\n\n onHubCapsule(capsule) {\n if (this._isMounted) {\n const { channel, payload } = capsule;\n if (channel === \"auth\" && payload.event === \"signIn\") {\n this.setState({\n authState: \"signedIn\",\n authData: payload.data\n });\n } else if (\n channel === \"auth\" &&\n payload.event === \"signOut\" &&\n !this.props.authState\n ) {\n this.setState({\n authState: \"signIn\"\n });\n }\n\n if (\n channel === \"auth\" &&\n payload.event === \"signIn\" &&\n !this.props.authState\n ) {\n this.setState({ stateFromStorage: true });\n }\n }\n }\n\n signOut() {\n let payload = {};\n try {\n payload =\n JSON.parse(localStorage.getItem(Constants.AUTH_SOURCE_KEY)) || {};\n localStorage.removeItem(Constants.AUTH_SOURCE_KEY);\n } catch (e) {\n logger.debug(\n `Failed to parse the info from ${\n Constants.AUTH_SOURCE_KEY\n } from localStorage with ${e}`\n );\n }\n logger.debug(\"sign out from the source\", payload);\n const {\n googleSignOut,\n facebookSignOut,\n amazonSignOut,\n auth0SignOut\n } = this.props;\n switch (payload.provider) {\n case Constants.GOOGLE:\n if (googleSignOut) googleSignOut();\n else logger.debug(\"No Google signout method provided\");\n break;\n case Constants.FACEBOOK:\n if (facebookSignOut) facebookSignOut();\n else logger.debug(\"No Facebook signout method provided\");\n break;\n case Constants.AMAZON:\n if (amazonSignOut) amazonSignOut();\n else logger.debug(\"No Amazon signout method provided\");\n break;\n case Constants.AUTH0:\n if (auth0SignOut) auth0SignOut(payload.opts);\n else logger.debug(\"No Auth0 signout method provided\");\n break;\n default:\n break;\n }\n\n if (!Auth || typeof Auth.signOut !== \"function\") {\n throw new Error(\n \"No Auth module found, please ensure @aws-amplify/auth is imported\"\n );\n }\n Auth.signOut()\n .then(() => {\n if (!this.state.stateFromStorage) {\n this.changeState(\"signedOut\");\n }\n })\n .catch(err => {\n logger.debug(err);\n this.error(err);\n });\n }\n\n render() {\n const { hide } = this.props;\n if (hide && hide.includes(SignOut)) {\n return null;\n }\n\n const authState = this.props.authState || this.state.authState;\n const signedIn = authState === \"signedIn\";\n\n if (!signedIn) {\n return null;\n }\n\n return
{I18n.get(\"Sign Out\")}
;\n }\n}\n","import cx from 'classnames';\nimport {noop} from 'lodash';\nimport React from 'react';\n\nimport {menuItemContainer} from 'react-bootstrap-typeahead';\n\nclass SearchMenuItem extends React.Component {\n render() {\n const {\n active,\n children,\n className,\n disabled,\n onMouseDown\n } = this.props;\n\n const conditionalClassNames = {\n active,\n disabled,\n };\n\n return (\n /* eslint-disable jsx-a11y/anchor-is-valid */\n \n \n {children}\n \n \n /* eslint-enable jsx-a11y/anchor-is-valid */\n );\n }\n\n _handleClick = (e) => {\n const {disabled, onClick} = this.props;\n e.preventDefault();\n !disabled && onClick(e);\n }\n}\n\nSearchMenuItem.defaultProps = {\n onClick: noop,\n};\n\nexport {SearchMenuItem};\nexport default menuItemContainer(SearchMenuItem);","import React, { Fragment } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"react-bootstrap-typeahead/css/Typeahead.css\";\nimport { groupBy, map, noop } from \"lodash\";\nimport { API } from \"aws-amplify\";\n\nimport SearchMenuItem from \"../SearchMenuItem\";\nimport ErrorBoundary from \"../ErrorBoundary\";\n\nimport { AsyncTypeahead, Highlighter, Menu } from \"react-bootstrap-typeahead\";\n\nimport \"./Search.css\";\n\nclass Search extends React.Component {\n state = {\n allowNew: false,\n isLoading: false,\n multiple: false,\n options: [],\n query: null,\n };\n\n _renderMenu = (results, menuProps) => {\n let idx = 0;\n const grouped = groupBy(results, (r) => r.symbol);\n\n const items = Object.keys(grouped)\n .sort()\n .map((symbol) => [\n map(grouped[symbol], (option) => {\n if (\n option &&\n option.symbol &&\n menuProps &&\n menuProps.text\n ) {\n const item = (\n \n \n \n {option.symbol}\n \n \n \n {option.name}\n \n \n \n \n );\n\n idx++;\n return item;\n }\n }),\n ]);\n\n return {items};\n };\n\n render() {\n const props = {};\n props.renderMenu = this._renderMenu;\n\n return (\n \n \n `${option.symbol} ${option.name}`}\n minLength={1}\n onSearch={this._handleSearch}\n onClick={this.props.topStocksPanel}\n // onInputChange={this.props.hideTopList}\n ref={(ref) => (this._typeahead = ref)}\n placeholder=\"Search stocks...\"\n onChange={this.inputClear}\n />\n \n \n );\n }\n\n inputClear = (value) => {\n if (value) {\n if (this._typeahead) {\n const instance = this._typeahead.getInstance();\n instance.clear();\n instance.blur();\n }\n }\n };\n\n _handleSearch = (query) => {\n this.setState({ query: query, isLoading: true });\n this.makeAndHandleRequest(query).then((res) => {\n this.setState({\n isLoading: false,\n options: res,\n });\n });\n };\n\n makeAndHandleRequest(query) {\n let apiName = \"getStockPrice\";\n let path = \"/v1/stock/ref-data/symbols\";\n return API.get(apiName, path)\n .then((response) => {\n console.log(response);\n const options = response.data.map((i) => ({\n symbol: i.symbol,\n id: i.iexId,\n name: i.name,\n }));\n return options;\n })\n .catch((error) => {\n console.log(error.response);\n });\n }\n}\nSearch.defaultProps = {\n onClick: noop,\n};\n\nexport default Search;\n","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport \"./Search.css\";\n\nfunction SearchPlaceholder(props) {\n const history = useHistory();\n return (\n
\n

MOST POPULAR

\n
\n {props.topStocks.map((stock) => {\n function handleClick() {\n // console.log(\"asd\");\n history.push(`/stock/${stock}`);\n }\n return (\n \n
\n

{stock}

\n
\n );\n })}\n \n \n );\n}\n\nexport default SearchPlaceholder;\n","import React, { Component } from \"react\";\nimport \"./Header.css\";\nimport {\n UncontrolledButtonDropdown,\n DropdownMenu,\n DropdownItem,\n DropdownToggle,\n} from \"reactstrap\";\n\nimport MySignOut from \"./MySignOut\";\nimport { Link, withRouter } from \"react-router-dom\";\nimport Search from \"./Search\";\nimport Avatar from \"react-avatar\";\n// import { slide as Menu } from \"react-burger-menu\";\nimport NavLinks from \"../Sidebar/NavLinks\";\nimport logoMin from \"../Sidebar/logo-min.svg\";\nimport SearchPlaceholder from \"./SearchPlaceholder\";\n\nconst topStocks = [\"FB\", \"VIAC\", \"GOOG\", \"AMZN\", \"LGF.A\", \"MSFT\", \"NFLX\", \"AAPL\"];\n\nclass Header extends Component {\n state = {\n menuOpen: false,\n // headerEl: true,\n logoSwitch: false,\n pageNameVisible: true,\n pageName: \"\",\n topStocksPanel: false,\n };\n\n hidePageName() {\n this.setState({\n pageNameVisible: false,\n });\n }\n\n handleStateChange(state) {\n this.setState({ menuOpen: state.isOpen, logoSwitch: state.isOpen });\n }\n\n closeMenu() {\n this.setState({ menuOpen: false });\n }\n\n hideHeaderEl() {\n this.setState((state) => ({ headerEl: false }));\n }\n hidetopStocksPanel() {\n this.setState({ topStocksPanel: true });\n console.log(this.state.topStocksPanel);\n }\n\n showHeaderEl() {\n this.setState({\n headerEl: true,\n searchInput: \"\",\n pageNameVisible: true,\n });\n }\n\n setPathName(pathname) {\n switch (pathname) {\n case \"/\":\n this.setState({\n pageName: \"Portfolio\",\n });\n break;\n case \"/portfoliotracker\":\n this.setState({\n pageName: \"Tracker\",\n });\n break;\n case \"/invest\":\n this.setState({\n pageName: \"Invest Amount\",\n });\n break;\n case \"/reports\":\n this.setState({\n pageName: \"Reports\",\n });\n break;\n case \"/transactionhistory\":\n this.setState({\n pageName: \"Transactions\",\n });\n break;\n default:\n this.setState({\n pageName: \"\",\n });\n break;\n }\n }\n\n componentDidMount() {\n this.setPathName(this.props.location.pathname);\n }\n\n componentWillReceiveProps(nextProps) {\n this.setPathName(nextProps.location.pathname);\n }\n\n render() {\n const AlwaysOn = (props) => {\n return (\n \n \n {this.props.authData.username}\n \n \n Account\n \n \n Billing\n \n \n \n \n Product Tour\n \n \n \n \n Help\n \n \n
\n \n
\n
\n
\n );\n };\n return (\n
\n
\n \n {/* \n this.handleStateChange(state)\n }\n pageWrapId={\"header-container\"}\n outerContainerId={\"App\"}\n customBurgerIcon={\n this.state.logoSwitch ? (\n \n ) : (\n \"WealthX\"\n )\n }\n >\n \n */}\n
\n \n \"wealthx\n \n \n {this.state.pageName}\n \n
\n
\n \n {/* */}\n
\n
\n
\n \n \n
\n
\n {this.state.topStocksPanel && (\n \n )}\n
\n \n \n
\n \n \n );\n }\n}\n\nexport default withRouter(Header);\n","import React from \"react\";\n\nconst BigLogo = () => (\n \n \n \n \n \n \n \n \n \n);\n\nexport default BigLogo;\n","import React from \"react\";\nimport BigLogo from \"./BigLogo\";\n\nconst logoStyle = {\n textAlign: \"center\",\n padding: \"3em\",\n};\n\nconst SignLogo = () => {\n return (\n
\n \n
\n );\n};\n\nexport default SignLogo;\n","import React from \"react\";\n\nconst signBgStyle = {\n textAlign: \"center\",\n boxShadow: \"0 50vh 0 50vh #3556FF\",\n};\n\n// const signPStyle = {\n// // margin: \"10em\",\n// position: \"absolute\",\n// textAlign: \"center\",\n// fontSize: \"9px\",\n// color: \"#fff\",\n// opacity: \"0.5\",\n// bottom: \"10px\",\n// width: \"100%\",\n// };\n\nconst SignBg = () => {\n return (\n
\n {/*

Copyright © WealthX 2020

*/}\n
\n );\n};\n\nexport default SignBg;\n","import React, { Component } from \"react\";\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport { Auth } from \"aws-amplify\";\nimport Amplify from \"aws-amplify\";\n\nimport aws_exports from \"./aws-exports\";\nimport {\n ConfirmSignIn,\n ConfirmSignUp,\n ForgotPassword,\n RequireNewPassword,\n SignIn,\n SignUp,\n VerifyContact,\n withAuthenticator,\n} from \"aws-amplify-react\";\nimport { Elements, StripeProvider } from \"react-stripe-elements\";\n\nimport { Provider as AlertProvider } from \"react-alert\";\nimport AlertTemplate from \"./components/AlertTemplate/AlertTemplate\";\nimport Billing from \"./components/Billing/Billing\";\nimport ConnectPortfolio from \"./components/ConnectPortfolio\";\nimport MyTheme from \"./components/MyTheme\";\nimport TransactionHistory from \"./components/TransactionHistory/TransactionHistory\";\nimport PortfolioTracker from \"./components/PortfolioTracker/PortfolioTracker\";\nimport StockPage from \"./components/StockPage/StockPage\";\nimport ScheduledReports from \"./components/ScheduledReports/ScheduledReports\";\nimport AmountToInvest from \"./components/AmntToInvest/AmntToInvest\";\nimport NotFoundPage from \"./components/NotFoundPage/NotFoundPage\";\nimport ProductTour from \"./components/ProductTour/ProductTour\";\n\nimport \"./App.css\";\nimport Sidebar from \"./components/Sidebar/Sidebar\";\nimport Header from \"./components/Header/Header\";\nimport SignLogo from \"./components/SignLogo\";\nimport SignBg from \"./components/SignBg\";\nimport logo from \"./logo.svg\";\nimport logoMin from \"./logo-min.svg\";\n\nAmplify.configure(aws_exports);\n\nfunction sidebarStyle() {\n const condition = localStorage.getItem(\"sidebarMin\") === \"true\";\n return {\n sidebarMin: condition,\n sidebarCol: condition ? \"sidebarMin\" : \"col-2\",\n appCol: condition ? \"col\" : \"col-10\",\n navLink: condition ? \"hide\" : \"\",\n logo: condition ? logoMin : logo,\n };\n}\n\nclass AuthProtectedApp extends Component {\n constructor(props) {\n super(props);\n\n this.state = Object.assign(\n {\n data: [],\n components: {\n showPortfolioPieCharts: true,\n showStockAddForm: false,\n showAmountToInvest: false,\n showReportSchedule: false,\n },\n },\n sidebarStyle()\n );\n }\n\n showComponent = (component) => {\n if (!this.state.components[component]) {\n let components = this.state.components;\n for (var c in components) {\n if (component === c && components.hasOwnProperty(c)) {\n components[c] = true;\n } else {\n components[c] = false;\n }\n }\n this.setState({\n components: components,\n });\n }\n };\n\n showStockAddForm = () => {\n this.showComponent(\"showStockAddForm\");\n };\n\n showPortfolioPieCharts = () => {\n this.showComponent(\"showPortfolioPieCharts\");\n };\n\n showAmountToInvest = () => {\n this.showComponent(\"showAmountToInvest\");\n };\n\n showReportSchedule = () => {\n this.showComponent(\"showReportSchedule\");\n };\n\n sidebarSwitch() {\n const { sidebarMin } = this.state;\n localStorage.setItem(\"sidebarMin\", String(!sidebarMin));\n this.setState(sidebarStyle());\n }\n componentDidMount() {\n const premiumGroup = \"personal\";\n Auth.currentSession({ bypassCache: false })\n .then((data) => {\n const groups = data.accessToken.payload[\"cognito:groups\"];\n if (groups && groups.includes(premiumGroup)) {\n this.setState({\n isUserInPremiumGroup: true,\n });\n }\n })\n .catch((err) => console.log(err));\n }\n\n render() {\n // optional configuration\n const options = {\n position: \"bottom right\",\n timeout: 5000,\n offset: \"30px\",\n transition: \"fade\",\n containerStyle: {\n marginBottom: \"70px\",\n },\n };\n\n return (\n \n \n
\n
\n
\n \n
\n
\n \n \n \n {this.state.isUserInPremiumGroup && (\n \n \n \n )}\n {this.state.isUserInPremiumGroup && (\n \n \n \n )}\n \n \n \n \n \n
\n \n \n \n
\n \n
\n \n \n \n \n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nconst headerStyle = {\n fontSize: \"12px\",\n};\n\nconst signUpConfig = {\n header: (\n
\n Create Account\n

\n By creating account you agree to our\n \n {\" \"}\n Terms of Service\n \n

\n
\n ),\n hiddenDefaults: ['phone_number']\n};\n\nexport default withAuthenticator(\n AuthProtectedApp,\n false,\n [\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ],\n null,\n MyTheme\n);\n","import React, { Component } from \"react\";\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport { Provider as AlertProvider } from \"react-alert\";\nimport AlertTemplate from \"./components/AlertTemplate/AlertTemplate\";\nimport GetRecommendations from \"./components/Subscribe/GetRecommendations\";\nimport SimpleTrial from \"./components/Subscribe/SimpleTrial\";\nimport AppSumo from \"./components/Subscribe/AppSumo\";\nimport AuthProtectedApp from \"./AuthProtectedApp\";\nimport { initGA, logPageView } from './components/Analytics'\n\nclass App extends Component {\n\n render() {\n const options = {\n position: \"bottom right\",\n timeout: 5000,\n offset: \"30px\",\n transition: \"fade\",\n containerStyle: {\n marginBottom: \"70px\",\n },\n };\n\n const SimpleTrialWithAlert = () => ();\n const AppSumoWithAlert = () => ();\n return (\n \n \n (// Paths with NO auth)\n \n \n \n (// Paths with auth)\n \n \n \n );\n }\n\n componentDidMount () {\n if (!window.GA_INITIALIZED) {\n initGA()\n window.GA_INITIALIZED = true\n logPageView()\n }\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://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.1/8 is 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);\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 http://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 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 http://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 .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').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.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport TagManager from 'react-gtm-module';\n\nconst tagManagerArgs = {\n gtmId: 'GTM-MWPZ5HM'\n}\n\nTagManager.initialize(tagManagerArgs);\n\nReactDOM.render(, document.getElementById(\"root\"));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: http://bit.ly/CRA-PWA\nserviceWorker.register();\n","module.exports = __webpack_public_path__ + \"static/media/logo-w.30e42345.svg\";","module.exports = __webpack_public_path__ + \"static/media/photo.85117423.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/unknown.1c12dad8.svg\";","module.exports = __webpack_public_path__ + \"static/media/visa.4bac6cb0.svg\";","module.exports = __webpack_public_path__ + \"static/media/american-express.acc9681a.svg\";","module.exports = __webpack_public_path__ + \"static/media/diners-club.6b5a946c.svg\";","module.exports = __webpack_public_path__ + \"static/media/discover.653ac4de.svg\";","module.exports = __webpack_public_path__ + \"static/media/jcb.6a7fa2fa.svg\";","module.exports = __webpack_public_path__ + \"static/media/mastercard.bc6b6d74.svg\";","module.exports = __webpack_public_path__ + \"static/media/unionpay.9b59a572.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-min.b2087c88.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo.c0b7ba40.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-min.b2087c88.svg\";"],"sourceRoot":""}