{"version":3,"sources":["resources/logo.png","entities/AppConfig.ts","components/AnalyticsPageTracker.ts","components/PrivateRoute.tsx","components/RedirectRoute.tsx","services/ServiceHelper.ts","services/AdminService.ts","services/AuthenticationService.ts","withRoot.tsx","entities/ProSubscription.ts","utilities/routes.ts","layout/layout.tsx","services/AccountService.ts","pages/account/changeEmail.tsx","pages/account/changePassword.tsx","pages/account/changePhone.tsx","utilities/CurrencyHelper.ts","pages/account/components/SparkAccountCard.tsx","pages/account/home.tsx","pages/account/mediaDashboard.tsx","services/ContributionsService.ts","services/MediaProducerService.ts","components/AnimatedNumberLabel.tsx","services/MiscService.ts","entities/FreeProSubscriptionAccess.ts","pages/account/paymentMethods.tsx","pages/admin/freeProAccess.tsx","pages/admin/impersonate.tsx","pages/admin/notes.tsx","pages/authentication/forgotPassword.tsx","pages/authentication/forgotPasswordSuccess.tsx","pages/authentication/register.tsx","pages/authentication/resetPassword.tsx","components/GlooIcon.tsx","components/GlooButton.tsx","entities/Sermon.ts","pages/authentication/signIn.tsx","utilities/ArrayHelper.ts","entities/SermonIllustration.ts","pages/contributions/editSermon.tsx","pages/contributions/editSermonIllustration.tsx","pages/contributions/sermonIllustrations.tsx","pages/contributions/editSermonSeries.tsx","pages/contributions/home.tsx","pages/contributions/sermons.tsx","pages/contributions/sermonSeries.tsx","entities/MediaItem.ts","services/MediaService.ts","pages/media/downloads.tsx","pages/media/activations.tsx","entities/VideoMedia.ts","components/SuccessSnackbar.tsx","components/ErrorSnackbar.tsx","pages/media/media-producer/manageMedia.tsx","services/VideoMediaService.ts","utilities/DateHelper.ts","pages/media/purchases.tsx","components/EditImageDialog.tsx","pages/media/media-producer/video-media/videoMediaUpload.tsx","pages/media/media-producer/video-media/videoMediaDetail.tsx","pages/media/media-producer/video-media/approvedVideoMedia.tsx","pages/media/media-producer/video-media/pendingVideoMedia.tsx","pages/misc/discussionNotifications.tsx","pages/misc/privateMessages.tsx","pages/misc/sermonFolders.tsx","services/ResourceViewingHistory.ts","pages/misc/viewingHistory.tsx","services/PreferencesService.ts","pages/preferences/newsletterSubscriptions.tsx","pages/preferences/notificationsPreferences.tsx","pages/preferences/preferredBibleTranslation.tsx","services/ProfileService.ts","pages/profile/aboutMe.tsx","pages/profile/myChurch.tsx","pages/profile/myStory.tsx","pages/profile/profileImage.tsx","pages/profile/sharedLinks.tsx","services/AppConfigService.ts","pages/pro/MyProMembershipPage.tsx","app.tsx","index.tsx"],"names":["module","exports","AppConfigEnvironment","AnalyticsPageTracker","window","dataLayer","gtag","push","arguments","this","props","config","googleAnalytics","isEnabled","script","document","createElement","type","async","src","trackingId","getElementsByTagName","appendChild","Date","location","pathname","search","history","listen","children","React","withRouter","PrivateRoute","Component","component","rest","user","render","routeProps","redirectProps","to","state","from","RedirectRoute","redirectPath","ServerError","model","undefined","message","statusCode","ServerResponse","data","object","valid","errors","ServerModelValidationResponse","FieldValidationError","fieldName","map","error","field","indexOf","retVal","filter","forEach","str","serializeAxiosError","errorResponse","serverError","response","status","path","redirect","encodeURIComponent","replace","WebClient","url","axios","get","headers","Pragma","method","file","onUploadProgress","put","p","progress","Math","round","loaded","total","AdminService","userId","Post","Get","isServerResponse","noteText","text","startDate","endDate","id","queryText","skip","take","orderBy","sortOrder","queryString","AuthenticationService","email","firstName","lastName","password","newsletterIds","confirmPassword","code","rememberMe","theme","createMuiTheme","palette","primary","blue","secondary","main","overrides","MuiCssBaseline","fontFamily","withRoot","ProSubscriptionTier","ProSubscriptionTerm","ProSubscriptionStatus","ProSubscriptionSourceType","CssBaseline","routes","signIn","register","forgotPassword","forgotPasswordSuccess","resetPassword","resolve","impersonate","notes","freeProAccess","myMembership","downloadInvoice","changeEmail","changePassword","changePhone","paymentMethods","billingStatements","downloads","purchases","activations","manage","pendingAdd","pendingEdit","approvedEdit","dashboard","sermonIllustrations","addSermonIllustration","editSermonIllustration","sermons","addSermon","editSermon","sermonSeries","addSeries","editSeries","notifications","private","base","bibleTranslation","newsletterSubscriptions","aboutMe","myChurch","myStory","sharedLinks","profileImage","Layout","anchorEl","mobileDrawerOpen","myAccountOpen","roles","r","length","myProMembershipOpen","myMediaOpen","myContributionsOpen","myProfileOpen","myPreferencesOpen","myMediaProducerDashboardOpen","event","preventDefault","stopImpersonation","setState","onSignIn","reload","inAdminImpersonationMode","signOut","windowLocation","onSignOut","clickEvent","href","classes","List","dense","isAdmin","onClick","className","link","ListItem","button","ListItemIcon","listItemIcon","ListItemText","e","handleStopImpersonationClick","Divider","Collapse","in","timeout","unmountOnExit","disablePadding","nested","inset","some","listItem","mainSiteUrl","listItemNested","ListItemSecondaryAction","IconButton","navigateTo","open","Boolean","root","AppBar","position","appBar","Toolbar","color","aria-label","navIconHide","Hidden","mdUp","Typography","variant","grow","smDown","profileImageUrl","Avatar","currentTarget","avatar","charAt","Menu","anchorOrigin","vertical","horizontal","transformOrigin","onClose","MenuItem","handleSignOutClick","Drawer","anchor","paper","drawerPaper","ModalProps","keepMounted","renderMediaProducerNav","renderNav","toolbar","content","withStyles","createStyles","left","right","bottom","top","zIndex","overflow","flexGrow","display","drawer","width","backgroundColor","light","textDecoration","paddingRight","marginRight","paddingLeft","spacing","breakpoints","up","background","default","padding","minWidth","overflowY","mixins","AccountService","newEmail","appConfig","currentPassword","newPassword","confirmNewPassword","newPhone","cardId","CreditCardId","Delete","cardName","cardNumber","expiryMonth","expiryYear","cvv","zip","country","CardHolderName","CardNumber","SecurityCode","ExpirationMonth","ExpirationYear","PostalCode","Country","paymentsSiteUrl","paymentMethodId","PaymentMethodId","ChangeEmail","enableSubmit","currentEmail","showSuccessMessage","successMessage","title","isServerModelValidationResponse","console","log","Grid","container","direction","justify","alignItems","Snackbar","hasGenericError","SnackbarContent","errorSnackbarContent","aria-describedby","snackBarText","errorSnackbarMessage","errorSnackbarContentIcon","dangerouslySetInnerHTML","__html","getGenericErrorSummary","autoHideDuration","successSnackbarContent","successSnackbarMessage","successSnackbarContentIcon","item","Paper","onSubmit","handleFormSubmit","form","TextField","isFieldInError","required","autoFocus","fullWidth","label","margin","onChange","target","value","helperText","getFieldErrorSummary","Button","size","disabled","submitButton","paddingTop","paddingBottom","marginBottom","marginLeft","flexWrap","dark","fontSize","opacity","green","down","ChangePassword","isGlooLogin","style","textAlign","ChangePhone","currentPhone","phoneNumber","CurrencyHelper","SparkAccountCard","sparkSiteUrl","hasSparkSubscription","Card","card","CardContent","secondaryAction","GetCurrencySymbol","currency","Months","MapFilters","ChartYears","ChartViewingTypes","Home","showSendResetPasswordEmailDialog","showResetPasswordEmailSentMessage","showCloseAccountDialog","hasPaypal","hasPayPal","getMediaStatistics","mediaStatistics","getSubscriptions","then","result","hasMakerSubscription","proSubscription","tier","Plus","getPremiumSermonSeriesKitAccess","premiumSskAccess","Basic","getPlusMediaAccess","plusMediaAccess","v","getSermonStatistics","sermonStatistics","getSermonIllustrationStatistics","sermonIllustrationStatistics","nextBillDate","Cancelled","canChangeProSubscription","Premium","planName","match","source","Gloo","dateString","date","getTime","toLocaleDateString","makeAdmin","unmakeAdmin","sendResetPasswordEmail","closeAccount","getPlanName","inTrial","canUpgradeProSubscription","dateCreated","dangerButton","glooUserProfileUrl","repeat","Dialog","aria-labelledby","DialogTitle","DialogContent","DialogContentText","DialogActions","CardActions","rel","paypalUrl","serviceStopDate","Active","term","toString","nextBillPrice","planPrice","showUpgradeButton","alt","makerSiteUrl","totalDownloadCount","toLocaleString","totalPurchaseCount","approvedCount","pendingCount","totalViewCount","lastActivatedName","lastActivatedUrl","nextActivationDate","getNextActivationDate","activationCount","periodStart","periodEnd","actualBackgroundImageDownloads","allowedBackgroundImageDownloads","actualCountdownVideoDownloads","allowedCountdownVideoDownloads","actualMotionBackgroundDownloads","allowedMotionBackgroundDownloads","actualPreachingSlidesDownloads","allowedPreachingSlidesDownloads","actualWorshipLyricSlideDownloads","allowedWorshipLyricSlideDownloads","actualVideoIllustrationDownloads","allowedVideoIllustrationDownloads","actualComedyVideoDownloads","allowedComedyVideoDownloads","actualInspirationalVideoDownloads","allowedInspirationalVideoDownloads","actualSmallGroupStudyVideoDownloads","allowedSmallGroupStudyVideoDownloads","actualSocialGraphicDownloads","allowedSocialGraphicDownloads","snackbarContent","snackbarMessage","snackbarContentIcon","welcome","mdDown","renderMyAccount","renderMyPRO","renderMyMedia","renderSermonMakerStatus","renderMyContributions","renderPremiumSermonSeriesKitAccess","renderPROMediaDownloads","lgUp","xs","height","cardShort","transform","ContributionsService","timeframe","sermonId","sermonSeriesId","sermonSeriesName","description","body","language","targetAudience","sermonType","topics","scriptureReferences","sermonIllustrationId","category","summary","MediaProducerService","year","month","isSuccess","intervalId","incrementCount","currentValue","prevProps","prevState","clearInterval","incrementBy","setInterval","minimumFractionDigits","minDecimalPlaces","maximumFractionDigits","maxDecimalPlaces","MiscService","sermonFolderId","name","FreeProSubscriptionAccessStatus","PieColors","today","years","getFullYear","MediaDashboard","mapRef","getMapData","a","filterByYear","filterByMonth","GetMediaProducersDownloadsAndViewsCount","mapDownloadAndViewData","updateUSMap","getPathDataBasedOnMapData","geo","filterByData","colorNumber","views","tooltipText","Views","Downloads","onYearBarClick","activeLabel","letMonthsString","typedAsMonths","chartViewing","Month","filterChartMonth","anchorChartMenu","updateChartData","loadingMap","usMapData","usStates","getMonth","All","totalDownloads","totalViews","Year","filterChartYear","producerPayoutData","filteredChartData","monthData","totalChart","getUSStates","allData","m","find","revenueShare","salesFromMedia","salesFromSSK","objects","states","geometries","geometry","usState","c","postalAbbreviation","dataByRegion","s","region","viewCount","downloadCount","rangeArray","d3","domain","range","svg","html","projection","attr","stateMap","append","selectAll","topojson","features","enter","d","datum","b","getProducerPayoutByYear","massageProducerPayoutDate","anchorChartYearMenu","anchorChartMonthMenu","producerPayoutCard","filterButtons","filterButton","aria-haspopup","aria-owns","getContentAnchorEl","Object","values","viewing","key","x","barSize","barGap","barChart","strokeDasharray","dataKey","tickFormatter","Intl","NumberFormat","format","formatter","filterNull","stackId","legendType","fill","stroke","every","noData","outerRadius","innerRadius","entry","index","anchorYearMenu","anchorMonthMenu","anchorByData","mapCard","totalBox","mapContainer","ref","input","Container","maxWidth","renderMapCard","maxHeight","verticalAlign","marginTop","strokeLinejoin","strokeLinecap","strokeWidth","transition","fillOpacity","borderRadius","justifyContent","minHeight","PaymentMethods","handleAddPaymentMethodFormSubmit","disableAction","addCreditCardErrors","editCreditCardErrors","addPaymentMethod","addPaymentMethodCardHolderName","addPaymentMethodCreditCardNumber","addPaymentMethodCreditCardExpirationMonth","addPaymentMethodCreditCardExpirationYear","addPaymentMethodCreditCardSecurityCode","addPaymentMethodCreditCardPostalCode","selectedCountryShortCode","newCard","creditCards","showAddPaymentMethodDialog","isServerError","isModelValidation","findIndex","showCountries","handleUpdatePaymentMethodFormSubmit","updatePaymentMethod","updatePaymentMethodId","updatePaymentMethodCreditCardExpirationMonth","updatePaymentMethodCreditCardExpirationYear","updatePaymentMethodCreditCardSecurityCode","updatePaymentMethodCreditCardPostalCode","updatedCard","showUpdatePaymentMethodDialog","handleUpdateDefaultPaymentMethod","defaultCardId","changeDefaultCreditCard","defaultCard","cc","useCardByDefault","showChangePreferenceDialog","handleDeleteCardMethod","cardForDeletion","deleteCreditCard","showDeleteCardConfirmation","loading","visibleCreditCardCount","countries","Promise","all","getCreditCards","getCountries","responses","s1","s2","expirationYear","expirationMonth","sortedCreditCards","Table","TableHead","TableRow","TableCell","align","TableBody","creditCard","ccTypeIcon","icon","getFontAwesomePaymentMethodType","tableCard","gutterBottom","lastFour","classNames","tableExpiry","isExpired","Checkbox","checked","sort","sortCreditCards","defaultCreditCard","action","close","fontStyle","spacer","CircularProgress","glooSubscriptionsUrl","cardContainer","cardTitle","cardStatus","cardHolderName","postalCode","ExpansionPanel","ExpansionPanelSummary","expandIcon","expansionCardStatus","ExpansionPanelDetails","float","Fab","fab","extendedFab","addPaymentMethodDialogContent","sm","FormControl","formControl","InputLabel","htmlFor","Select","native","OutlinedInput","labelWidth","i","FormHelperText","twoCharCode","threeCharCode","renderPreferences","header","flex","pos","FreeProAccess","showAddAccessDialog","addAccessStartDate","getDateFormatDisplay","addAccessEndDate","setFullYear","showAddAccessSuccessMessage","showDisableDialog","getFreeProSubscriptionAccess","items","dateParts","split","substring","disableFreeProSubscriptionAccess","addFreeProSubscriptionAccess","access","Expired","Pending","Disabled","selectedItemId","handleAddAccessFormSubmit","dateField","InputLabelProps","shrink","disableFreeProAccess","badState","divider","Impersonate","anchorSort","searchUsers","searchResult","trim","regexp","RegExp","sortButton","menuItem","sortColumn","menuListItemIcon","handleSearchFormSubmit","searchIcon","InputBase","placeholder","inputRoot","inputInput","highlightText","TablePagination","count","totalCount","rowsPerPage","page","backIconButtonProps","nextIconButtonProps","onChangePage","onChangeRowsPerPage","parseInt","whiteSpace","shape","fade","pointerEvents","transitions","create","clear","Notes","handleAddNoteFormSubmit","addNoteText","addAdministratorNote","unshift","visibleNotes","showAddNoteDialog","getAdministratorNotes","n","multiline","rows","addNoteDialog","ForgotPassword","forgotPasswordContainer","snackbartMessage","forgotPasswordPaper","Logo","logoImage","buttonContainer","textButton","submitButtonMobile","ForgotPasswordSuccess","Register","toggleNewsletterSelection","selectedList","selectedNewsletterIds","splice","newsletters","getSignUpNewsletters","registerContainer","registerPaper","newsletter","FormControlLabel","control","ResetPassword","encodedEmail","params","resetPasswordContainer","resetPasswordPaper","textLink","GlooIcon","SvgIcon","viewBox","xmlns","y","rx","useStyles","makeStyles","glooButton","borderColor","borderWidth","textTransform","glooIcon","disabledLink","cursor","GlooButton","SermonStatus","SignIn","redirectToReferrer","glooRedirectUrl","accountSiteUrl","glooUrl","signInContainer","signInPaper","Box","SermonIllustrationStatus","ArrayHelper","stringToAdd","stringArray","separatedStrings","strings","stringPart","toLowerCase","stringToRemove","EditSermon","originalSermonSeriesId","originalSermonSeriesName","intro","scriptures","addScriptureReferenceText","tags","addTopicText","updateSuccessMessage","showUpdateSuccessMessage","languages","types","targetAudiences","URLSearchParams","getSermon","sermon","rejectionNotes","getChurchServiceLanguages","getSermonTypes","getChurchServiceTargetAudiences","getAllSermonSeries","saveSermon","getElementById","scrollIntoView","updatedScriptures","scriptureReference","updatedTags","topic","elevation","mainToolbar","goBack","viewButton","onSeriesChange","inputProps","selected","sermonSeriesTitle","noWrap","Input","onBlur","addScriptureReference","onKeyPress","endAdornment","InputAdornment","Chip","onDelete","removeScriptureReference","chip","addTopic","removeTopic","formButton","gutters","FilterValue","EditSermonIllustration","categories","getSermonIllustration","sermonIllustration","getSermonIllustrationCategories","saveSermonIllustration","EditSeriesSermon","sermonsInSeries","showDeleteDialog","selectedSermonIdToDelete","showAddExistingDialog","unassignedSermons","loadingSermons","getSermonSeries","getSermonSeriesSermons","getSermons","saveSermonSeries","removeSermonSeriesSermon","l","currentIndex","f","updateSermonSeriesSermon","addSermonSeriesSermon","sermonActions","moveSermon","deleteSermon","addExistingDialogContent","addExistingDialogList","slice","addSermonToSeries","anchorRegion","anchorTimeframe","topRegions","topRegionsQueryText","topRegionsOrderBy","topRegionsOrder","topRegionsRowsPerPage","topRegionsPage","topContributions","topContributionsQueryText","topContributionsOrderBy","topContributionsOrder","topContributionsRowsPerPage","topContributionsPage","sermonRegionViewSummaries","sermonIllustrationRegionViewSummaries","worldMapData","updateMap","getSermonIllustrations","updateRegion","updateTopRegions","updateTopContributions","getSermonRegionViewSummaries","getSermonIllustrationRegionViewSummaries","updateWorldMap","updateTopStates","updateTopCountries","filteredUSStates","query","includes","grandTotalViews","getTotalViews","topUSStates","filteredSermonViews","countryCode","regionName","reduce","currentViews","filteredSermonIllustrationViews","percent","toFixed","sortGreaterThanValue","sortLessThanValue","c1","c2","c1FieldValue","c2FieldValue","String","prototype","localeCompare","filteredCountries","topCountries","filteredSermons","topSermons","filteredSermonIllustrations","topSermonIllustrations","concat","Number","feature","d3GeoProjection","worldMap","on","properties","self","sermonRegions","sermonIllustrationRegions","getTimeframeDisplayName","sermonsViewed","getSermonsViewed","regionsReached","getRegionsReached","mapLoader","tableToolbar","tableWrapper","sortDirection","TableSortLabel","active","sortTopRegionsColumn","rowsPerPageOptions","sortTopContributionsColumn","regionContainer","timeframeContainer","gridContainer","lg","xl","renderTotalViewsCard","renderSermonsViewedCard","renderRegionsReachedCard","renderTopCountriesCard","renderTopContributionsCard","withWidth","grid","overflowX","SermonIllustrations","renderStars","rating","val","ratingStar","ceil","visibleSermonIllustrationCount","anchorFilter","filterValue","Rejected","Approved","updateFilteredSermonIllustrations","selectedSermonIllustrationIdToDelete","deleteSermonIllustration","sr","tg","s1FieldValue","s2FieldValue","visibleSermonIllustrations","filterContainer","unselectedListItem","infiniteScroll","pageStart","threshold","loadMore","hasMore","useWindow","getScrollParent","loader","illustration","ratingCount","ratingStarContainer","tagsAndScriptures","join","textOverflow","borderTop","SermonSeriesPage","filteredSermonSeries","visibleSermonSeriesCount","selectedSermonSeriesIdToDelete","deleteSermonSeries","updateFilteredSermonSeries","visibleSermonSeries","series","sermonCount","MediaType","MediaItemStatus","Sermons","visibleSermonCount","updateFilteredSermons","visibleSermons","MediaService","request","translatedResponse","dateAvailable","Activations","mediaItems","filteredMediaItems","visibleMediaItemCount","getActivationHistory","updateFilteredMediaItems","visibleMediaItems","mediaItem","CardMedia","cardImage","image","imageUrl","MediaStatus","VideoMediaType","getDownloadHistory","StillBackground","CountdownVideo","MotionBackground","PreachingSlide","WorshipLyricSlide","VideoIllustration","SocialGraphic","Comedy","Inspirational","SmallGroupStudy","ChurchMediaSet","htmlRegex","node","test","kitDownloadUrl","publiclyAvailable","shareLink","shareableUrl","shareableUrlName","backgroundSize","ManageMedia","onChangeShowDisabledMedia","showDisabledMedia","searchMediaItems","reset","filterMediaType","sortBy","sortDescending","filterStatus","filterNeedsAttention","searchRequest","includeDisabled","needsAttention","mediaItemsResult","onDisable","mediaItemToDisable","disableReason","reason","requestDisable","errorMessage","onEnable","mediaItemToEnable","enableReason","requestEnable","showSelectProducerDialog","openSpeedDial","filterBy","anchorFilterMenu","anchorFilterStatusMenu","anchorSortMenu","filterNeedsaAttentionMenu","Countdown_Video","Motion_Background","Video_Illustration","Switch","onFilterNeedsAttention","onChangeFilterBy","onChangeItemStatusBy","onChangeSortBy","CardHeader","cardHeader","mediaProducer","previewImageUrl","subheader","getEditLink","removeBorderRadius","styles","genres","SpeedDial","ariaLabel","SpeedDialIcon","SpeedDialAction","tooltipTitle","tooltipOpen","defaultValue","ErrorSnackbar","SuccessSnackbar","switch","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","VideoMediaService","translateSingleResponse","videoMediaId","fileName","Put","uploadUrl","PutFile","jobId","videoMedia","translateVideoMediaType","DateHelper","getDateStringFormattedForInput","day","getDate","EditImageDialog","cropperRef","onAcceptEdit","editorWidth","editorHeight","exportJpgQuality","exportConfigurations","avatarEditor","exportedImages","exportJpg","onImageEdited","exportedImage","jpgQuality","canvas","getImage","getContext","drawImage","exportQuality","base64ImageData","toDataURL","cropScale","imageToEdit","PaperProps","cropDialog","cropper","border","rotate","scale","Slider","slider","min","max","VideoMediaUpload","onSavePreviewImage","disableSubmit","onChangeDisableSubmit","thumbnail","poster","onError","base64ThumbnailImage","base64PosterImage","saveVideoMediaPreviewImage","onUpdate","uploadedPreviewImage","newPreviewImage","onSuccess","monitorEncodingJob","encodeJobId","interval","getEncodingJobStatus","isComplete","encodeVideoPercentage","onVideoEncodingComplete","completionPercentage","preview","previewVideoPath","downloadDetails","extension","quality","duration","saveVideoMediaVideoMedia","onEncodingSuccess","getPendingVideoMediaAvailableVideoDownloads","videoDownloadResponse","videoDownloads","uploadVideoEnabled","onDownload","videoDownload","sourceVideoQuality","previewVideoUrl","getVideoMediaAvailableVideoDownloads","downloadResponse","activeReadOnlyPrompt","files","readFileAsDataUrl","dataUrl","loadImage","uploadedFileNameSplit","generateVideoUploadUrl","uploadUrlResponse","isError","uploadSourceVideo","uploadVideoPercentage","uploadResponse","encodingJobRequest","videoMediaType","sourceFileName","sourceQuality","createEncodingJob","encodeJobResponse","reject","img","Image","onload","onerror","reader","FileReader","onabort","readAsDataURL","thumbnailImageUrl","accept","handlePreviewImageUpload","controls","controlsList","preload","toUpperCase","handleVideoUpload","LinearProgress","VideoMediaDetail","setVideoMediaToState","onCompletion","dateAvailableValue","listPrice","discountedPrice","hasDiscount","serviceGenres","audiences","serviceStyles","onPageClose","onPathChange","onSaveRequested","validateStatus","showSaveConfirmationDialog","onSaveVideoMedia","parentId","adminComment","producerComment","saveVideoMedia","onPathReplace","styleIsSelected","toggleStyle","audienceIsSelected","audience","toggleAudience","genreIsSelected","genre","toggleGenre","g","newTopics","topicInput","t","topicToRemove","newScriptureReferences","scriptureReferenceInput","scriptureReferenceToRemove","showEnable","onCancel","requestCancel","showCancel","setTimeout","showDisable","deleteReason","requestDelete","showDelete","onConfirmEditInReadOnly","reasonForUpdate","createPendingItemFromApproved","creatingPending","activateReadOnlyPrompt","changeRejectedToPending","addType","getAddType","showAddProducerDialog","readonly","getPendingVideoMedia","getVideoMedia","videoMediaResponse","listingPrice","isNaN","maxLength","rowsMax","FormLabel","FormGroup","row","focused","getPriceStatus","step","parseFloat","startAdornment","formButtonsWrapper","submitDisabled","weightedTopicChip","buttonProgress","Purchases","getPurchaseHistory","SermonSeriesKit","invoiceId","PremiumSermonKit","invoiceNumber","DiscussionNotifications","deleteDialogOpen","getDiscussionNotifications","discussionNotifications","selectedType","selectedId","unsubscribeFromDiscussionNotification","subscription","dateSubscribed","toDateString","cardType","introText","PrivateMessagesPage","messages","getPrivateMessages","fromUserFirstName","fromUserLastName","dateSent","fromUserImageUrl","SermonFolders","sermonFolders","selectedSermonFolderId","selectedSermonFolderIdToMove","favorites","selectedFavoriteId","showEditDialog","editSermonFolderName","editSermonFolderNotes","showEditFavoriteDialog","editFavoriteNotes","showAddDialog","addSermonFolderName","addSermonFolderNotes","showDeleteFavoriteDialog","showMoveFavoriteDialog","getSermonFolders","updateSelectedSermonFolder","selectedSermonFolder","updateFavorites","getFavorites","deleteSermonFolder","deleteFavorite","favoriteId","favorite","saveFavorite","moveToSermonFolderId","saveSermonFolder","selectedFavorite","sermonFolder","imageUri","moveFavorite","uri","cancelEditSermonFolder","handleEditFormSubmit","handleEditFavoriteFormSubmit","cancelAddSermonFolder","handleAddFormSubmit","RadioGroup","folder","Radio","radioBox","moveFavoriteFolder","ResourceViewingHistoryService","ViewingHistory","resources","showDeleteAllDialog","historyEnabled","selectedResourceIdToDelete","getResourceViewingHistory","isRecordingHistory","deleteResourceViewingHistory","deleteResourceViewingHistories","disableResourceViewingHistory","enableResourceViewingHistory","toggleRecording","resource","dateViewed","resourceType","cardHeaderContent","resourceUserName","resourceImageUri","titleLink","contributorLink","resourceUserUri","deleteResource","deleteAllResources","PreferencesService","translationId","receiveFeedbackMessageNotifications","receiveSermonCommentNotifications","NewsletterSubscriptions","getNewsletterSubscriptions","updateNewsletterSubscriptions","proUsersOnly","checkBox","saveButton","NotificationPreferences","getNotificationPreferences","notificationPreferences","updateNotificationPreferences","BibleTranslationPage","bibleTranslations","preferredTranslationId","getBibleTranslations","getPreferredBibleTranslation","preferredBibleTranslation","updatePreferredBibleTranslation","translation","ProfileService","base64ImageUrl","education","experience","jobPosition","denomination","age","attendance","medianAudienceAge","primaryEthnicity","serviceStyle","emailAddress","website","streetAddress","city","family","hobbies","bestAdvice","sermonDifference","favoriteIllustration","bookImpact","somethingFunny","parentsThink","spouseThink","ifICould","tombstone","comment","AboutMePage","getAboutMe","savedAboutMe","updateAboutMe","editForm","publicProfileUrl","renderEditMode","MyChurchPage","religiousConsentChecked","denominations","churchAges","churchAttendances","churchMedianAudienceAges","churchPrimaryEthnicities","churchServiceStyles","canadianProvinces","getMyChurch","savedMyChurch","getDenominations","getChurchAges","getChurchAttendances","getChurchMedianAudienceAges","getChurchPrimaryEthnicities","getChurchServiceStyles","getCanadianProvinces","updateMyChurch","lineWrapper","churchAge","defaultChecked","province","MyStoryPage","getMyStory","savedMyStory","updateMyStory","ProfileImage","uploadedFileData","showCropDialog","handleFileUpload","dataTransfer","changeProfileImage","ctx","onDragOver","onDrop","handleFileUploadDrop","removeProfileImage","handleFileUploadChange","updateProfileImage","SharedLinks","showAddLinkDialog","showDeleteLinkDialog","showTooManyLinksDialog","addLinkText","addLinkUrl","getSharedLinks","links","selectedLinkToDelete","deleteSharedLink","startsWith","addSharedLink","dialogContent","deleteLink","onAddUrl","AppConfigService","MyProMembershipPage","ProMembershipCard","NoMembershipCard","InvoiceHistoryCard","useState","invoices","setInvoices","useEffect","getProInvoices","fetchInvoices","invoice","invoiceDate","invoiceAmount","paymentAmount","balance","setHasPaypal","checkPaypal","library","add","faCcAmex","faCcDiscover","faCcMastercard","faCcVisa","faCcPaypal","App","environment","Production","getAppConfig","getAuthenticatedUser","catch","basename","baseUrl","handleUpdateUser","exact","ContributorDashboard","SermonSeries","AddEditSeries","PrivateMessages","BibleTranslation","Notifications","defaults","withCredentials","getAttribute","ReactDOM","querySelector","renderApp"],"mappings":"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","file":"static/js/main.62419a0d.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","export enum AppConfigEnvironment {\r\n Development = \"Development\",\r\n Staging = \"Staging\",\r\n Production = \"Production\"\r\n}\r\n\r\nexport default interface AppConfig {\r\n environment: AppConfigEnvironment;\r\n googleAnalytics: { isEnabled: boolean, trackingId: string };\r\n paypalUrl: string;\r\n mainSiteUrl: string;\r\n paymentsSiteUrl: string;\r\n makerSiteUrl: string;\r\n sparkSiteUrl: string;\r\n accountSiteUrl: string;\r\n glooSubscriptionsUrl: string;\r\n glooUserProfileUrl: string;\r\n}\r\n","import * as React from 'react';\r\nimport { withRouter, RouteComponentProps } from 'react-router';\r\nimport AppConfig from '../entities/AppConfig';\r\n\r\ndeclare const gtag: (command: string, commandParameters?: any, additionalConfigInfo?: any) => any;\r\n\r\ninterface Props extends RouteComponentProps {\r\n config: AppConfig;\r\n children?: React.ReactNode;\r\n}\r\n\r\nclass AnalyticsPageTracker extends React.Component {\r\n\r\n componentDidMount() {\r\n\r\n (window as any).dataLayer = (window as any).dataLayer || [];\r\n (window as any).gtag = function () { (window as any).dataLayer.push(arguments); };\r\n\r\n if (this.props.config.googleAnalytics.isEnabled) {\r\n\r\n let script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.src = `https://www.googletagmanager.com/gtag/js?id=${this.props.config.googleAnalytics.trackingId}`;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n\r\n gtag('js', new Date());\r\n gtag('config', this.props.config.googleAnalytics.trackingId, { 'send_page_view': false });\r\n gtag('config', this.props.config.googleAnalytics.trackingId, { 'page_path': this.props.location.pathname + this.props.location.search });\r\n\r\n this.props.history.listen(location => {\r\n gtag('config', this.props.config.googleAnalytics.trackingId, { 'page_path': location.pathname + location.search });\r\n });\r\n }\r\n\r\n render() {\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default withRouter(AnalyticsPageTracker);","import * as React from \"react\";\r\nimport { Redirect, Route, RouteComponentProps, RouteProps } from \"react-router-dom\";\r\nimport ApplicationUser from \"../entities/ApplicationUser\";\r\n\r\ntype RouteComponent = React.StatelessComponent> | React.ComponentClass;\r\n\r\ninterface PrivateRouteProps extends RouteProps {\r\n user: ApplicationUser | null;\r\n}\r\n\r\nexport const PrivateRoute: React.StatelessComponent = ({ component, ...rest }) => {\r\n\r\n const renderComponent = (Component: RouteComponent) => (props: RouteComponentProps) => {\r\n\r\n return ;\r\n };\r\n\r\n if (!rest.user) {\r\n return (\r\n {\r\n\r\n const redirectProps = {\r\n to: {\r\n pathname: \"/auth/sign-in\",\r\n state: { from: routeProps.location },\r\n },\r\n };\r\n\r\n return ;\r\n }}\r\n />\r\n );\r\n }\r\n else if (component) {\r\n return ;\r\n }\r\n else if (rest.render) {\r\n return ;\r\n }\r\n else {\r\n return null;\r\n }\r\n};","import * as React from \"react\";\r\nimport { Redirect, Route, RouteProps } from \"react-router-dom\";\r\n\r\ninterface RedirectRouteProps extends RouteProps {\r\n redirectPath: string;\r\n}\r\n\r\nexport const RedirectRoute: React.FunctionComponent = ({ component, ...rest }) => {\r\n return {\r\n const redirectProps = {\r\n to: {\r\n pathname: rest.redirectPath,\r\n state: { from: routeProps.location },\r\n },\r\n };\r\n\r\n return ;\r\n }}\r\n />;\r\n};","import axios, { AxiosError } from 'axios';\r\n\r\nexport interface ServerError {\r\n message: string;\r\n statusCode: number;\r\n}\r\n\r\nexport class ServerError {\r\n public static isServerError(model: any): model is ServerError {\r\n return model.message !== undefined && model.statusCode !== undefined;\r\n }\r\n}\r\n\r\nexport interface ServerResponse {\r\n data: T;\r\n message: string;\r\n}\r\n\r\nexport class ServerResponse {\r\n public static isServerResponse(model: any): model is ServerResponse {\r\n return model.data !== undefined && model.message !== undefined;\r\n }\r\n static isSuccess(model: ServerResponse | ServerError | ServerModelValidationResponse): model is ServerResponse {\r\n let object: any = model;\r\n return object.data !== undefined && object.message !== undefined;\r\n }\r\n static isError(model: ServerResponse | ServerError | ServerModelValidationResponse): model is ServerError {\r\n let object: any = model;\r\n return object.message !== undefined && object.statusCode !== undefined;\r\n }\r\n static isModelValidation(model: ServerResponse | ServerError | ServerModelValidationResponse): model is ServerModelValidationResponse {\r\n let object: any = model;\r\n return object.valid !== undefined && object.errors !== undefined;\r\n }\r\n}\r\n\r\nexport interface ServerModelValidationResponse {\r\n valid: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nexport class ServerModelValidationResponse {\r\n public static isServerModelValidationResponse(model: any): model is ServerModelValidationResponse {\r\n return model.valid !== undefined && model.errors !== undefined;\r\n }\r\n}\r\n\r\nexport interface FieldValidationError {\r\n field: string;\r\n errors: string[];\r\n}\r\n\r\nexport class FieldValidationError {\r\n public static isFieldInError(errors: FieldValidationError[], fieldName: string): boolean {\r\n return errors.map(error => error.field).indexOf(fieldName) > -1;\r\n }\r\n public static getFieldErrorSummary(errors: FieldValidationError[], fieldName: string): string {\r\n var retVal = '';\r\n errors.filter(error => error.field === fieldName).forEach(error => {\r\n error.errors.forEach(str => retVal += str + ' ');\r\n });\r\n return retVal;\r\n }\r\n public static hasGenericError(errors: FieldValidationError[]): boolean {\r\n\r\n return errors.map(error => error.field).indexOf('') > -1;\r\n }\r\n public static getGenericErrorSummary(errors: FieldValidationError[]): string {\r\n var retVal = '';\r\n errors.filter(error => error.field === '').forEach(error => {\r\n error.errors.forEach(str => retVal += str + ' ');\r\n });\r\n return retVal;\r\n }\r\n}\r\n\r\nconst serializeAxiosError = (errorResponse: AxiosError) => {\r\n let serverError: ServerError;\r\n let response = errorResponse.response;\r\n\r\n // Happens if the http request gets killed mid request\r\n if (!response) {\r\n serverError = { message: \"An error occurred while processing your request. Please try again.\", statusCode: 500 };\r\n }\r\n else if (response.status === 404) {\r\n serverError = { message: \"An error occurred while processing your request. Please try again.\", statusCode: response.status };\r\n }\r\n // Redirect to sign in page\r\n else if (response.status === 401) {\r\n let path = window.location.pathname;\r\n let redirect = \"?returnUrl=\" + encodeURIComponent(path);\r\n window.location.replace(\"/sign-in\" + redirect);\r\n let standardServerResponse: ServerResponse = response.data;\r\n serverError = { message: standardServerResponse.message, statusCode: response.status };\r\n }\r\n else {\r\n let standardServerResponse: ServerResponse = response.data;\r\n serverError = { message: standardServerResponse.message, statusCode: response.status };\r\n }\r\n\r\n return serverError;\r\n};\r\n\r\nconst uploadProgressPercent = (progress: ProgressEvent) => {\r\n return Math.round((progress.loaded * 100) / progress.total);\r\n};\r\n\r\n\r\nexport class WebClient {\r\n public static async Get(url: string) {\r\n try {\r\n const response = await axios.get(url, { headers: { Pragma: 'no-cache' } });\r\n return response.data as (ServerResponse | ServerModelValidationResponse);\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError((errorResult));\r\n }\r\n }\r\n\r\n public static async Post(url: string, data: any) {\r\n try {\r\n const response = await axios(url, {\r\n method: \"post\",\r\n data: data,\r\n headers: { Pragma: 'no-cache' }\r\n });\r\n return response.data as (ServerResponse | ServerModelValidationResponse);\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError(errorResult);\r\n }\r\n }\r\n\r\n public static async Put(url: string, data: any) {\r\n try {\r\n const response = await axios(url, {\r\n method: \"put\",\r\n data: data,\r\n headers: { Pragma: 'no-cache' }\r\n });\r\n return response.data as (ServerResponse | ServerModelValidationResponse);\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError(errorResult);\r\n }\r\n }\r\n\r\n public static async Delete(url: string, data: any) {\r\n try {\r\n const response = await axios(url, {\r\n method: \"delete\",\r\n data: data,\r\n headers: { Pragma: 'no-cache' }\r\n });\r\n return response.data as (ServerResponse | ServerModelValidationResponse);\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError(errorResult);\r\n }\r\n }\r\n\r\n public static async PutFile(url: string, file: File, onUploadProgress?: (percent: number) => void) {\r\n try {\r\n await axios.put(url, file, {\r\n onUploadProgress: onUploadProgress ? p => onUploadProgress(uploadProgressPercent(p)) : undefined,\r\n headers: { Pragma: 'no-cache' }\r\n });\r\n let response: ServerResponse = {\r\n data: true,\r\n message: \"\"\r\n };\r\n return response;\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError(errorResult);\r\n }\r\n }\r\n\r\n}\r\n","import AdministratorNote from '../entities/AdministratorNote';\r\nimport ApplicationUser from '../entities/ApplicationUser';\r\nimport FreeProSubscriptionAccess from '../entities/FreeProSubscriptionAccess';\r\nimport SearchResult from '../entities/SearchResult';\r\nimport User from '../entities/User';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\n\r\nexport class AdminService {\r\n\r\n public static makeAdmin(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/MakeAdmin\", { userId: userId });\r\n }\r\n\r\n public static unmakeAdmin(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/UnmakeAdmin\", { userId: userId });\r\n }\r\n\r\n public static impersonate(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/Impersonate\", { userId: userId });\r\n }\r\n\r\n public static sendResetPasswordEmail(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/SendResetPasswordEmail\", { userId: userId });\r\n }\r\n\r\n public static closeAccount(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/CloseAccount\", { userId: userId });\r\n }\r\n\r\n public static async getAdministratorNotes() {\r\n\r\n var response = await WebClient.Get(\"api/Admin/GetAdministratorNotes\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async addAdministratorNote(noteText: string) {\r\n\r\n return WebClient.Post(\"api/Admin/AddAdministratorNote\", { text: noteText });\r\n }\r\n\r\n public static async getFreeProSubscriptionAccess() {\r\n\r\n var response = await WebClient.Get(\"api/Admin/GetFreeProSubscriptionAccess\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async addFreeProSubscriptionAccess(startDate: string, endDate: string) {\r\n\r\n return WebClient.Post(\"api/Admin/AddFreeProSubscriptionAccess\", { startDate, endDate });\r\n }\r\n\r\n public static async disableFreeProSubscriptionAccess(id: number) {\r\n\r\n return WebClient.Post(\"api/Admin/DisableFreeProSubscriptionAccess\", { id });\r\n }\r\n\r\n public static async stopImpersonation() {\r\n\r\n var response = await WebClient.Get(\"api/Admin/StopImpersonation\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async searchUsers(queryText: string, skip: number, take: number, orderBy: string, sortOrder: string) {\r\n\r\n var queryString = '?queryText=' + encodeURIComponent(queryText) + '&skip=' + skip + '&take=' + take + '&orderBy=' + orderBy + '&sortOrder=' + sortOrder;\r\n var response = await WebClient.Get>(\"api/Admin/SearchUsers\" + queryString);\r\n if (ServerResponse.isServerResponse>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import ApplicationUser from '../entities/ApplicationUser';\r\nimport Newsletter from '../entities/Newsletter';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\n\r\nexport class AuthenticationService {\r\n\r\n public static decodeResetPasswordEmail(email: string) {\r\n\r\n return WebClient.Post(\"api/Authentication/DecodeResetPasswordEmail\", { email: email });\r\n }\r\n\r\n public static async getAuthenticatedUser() {\r\n\r\n var response = await WebClient.Get(\"api/Authentication/GetAuthenticatedUser\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSignUpNewsletters() {\r\n\r\n var response = await WebClient.Get(\"api/Authentication/GetSignUpNewsletters\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n public static register(firstName: string, lastName: string, email: string, password: string, newsletterIds: number[]) {\r\n return WebClient.Post(\"api/Authentication/Register\", { firstName: firstName, lastName: lastName, email: email, password: password, newsletterIds: newsletterIds });\r\n }\r\n\r\n public static resetPassword(email: string, password: string, confirmPassword: string, code: string) {\r\n return WebClient.Post(\"api/Authentication/ResetPassword\", { email: email, password: password, confirmPassword: confirmPassword, code: code });\r\n }\r\n\r\n public static sendResetPasswordEmail(email: string) {\r\n return WebClient.Post(\"api/Authentication/SendResetPasswordEmail\", { email: email });\r\n }\r\n\r\n public static signIn(email: string, password: string, rememberMe: boolean) {\r\n return WebClient.Post(\"api/Authentication/SignIn\", { email: email, password: password, rememberMe: rememberMe });\r\n }\r\n\r\n public static async signOut() {\r\n\r\n var response = await WebClient.Get(\"api/Authentication/SignOut\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n}","import * as React from 'react';\r\nimport { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';\r\nimport blue from '@material-ui/core/colors/blue';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\n\r\n// A theme with custom primary and secondary color.\r\n// It's optional.\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: blue,\r\n secondary: {\r\n main: '#d90000',\r\n }\r\n },\r\n overrides: {\r\n MuiCssBaseline: {\r\n '@global': {\r\n '@font-face': { fontFamily: 'Poppins' },\r\n }\r\n }\r\n }\r\n});\r\n\r\nfunction withRoot

(Component: React.ComponentType

) {\r\n function WithRoot(props: P) {\r\n // MuiThemeProvider makes the theme available down the React tree\r\n // thanks to React context.\r\n return (\r\n \r\n {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return WithRoot;\r\n}\r\n\r\nexport default withRoot;","export enum ProSubscriptionTier {\r\n None = 0,\r\n Basic = 1,\r\n Plus = 2,\r\n Premium = 3\r\n}\r\n\r\nexport enum ProSubscriptionTerm {\r\n None = 0,\r\n Monthly = 1,\r\n Annual = 12,\r\n Biennial = 24\r\n}\r\n\r\nexport enum ProSubscriptionStatus {\r\n None,\r\n Draft,\r\n PendingActivation,\r\n PendingAcceptance,\r\n Active,\r\n Cancelled,\r\n Expired,\r\n Suspended\r\n}\r\nexport enum ProSubscriptionSourceType\r\n{\r\n Zuora = 1,\r\n Gloo = 2,\r\n Employee = 3\r\n}\r\nexport default interface ProSubscription {\r\n cancelledDate?: string;\r\n inTrial: boolean;\r\n nextBillDate?: string;\r\n nextBillPrice?: number;\r\n planName: string;\r\n planPrice?: number;\r\n serviceStopDate?: string;\r\n source: ProSubscriptionSourceType;\r\n status: ProSubscriptionStatus;\r\n subscriptionStartDate?: string;\r\n term: ProSubscriptionTerm;\r\n tier: ProSubscriptionTier;\r\n}","type MediaRouteTypes = \"all\" | \"video-illustrations\" | \"motion-backgrounds\" | \"countdown-videos\";\r\n\r\nexport const routes = {\r\n auth: {\r\n signIn: \"/auth/sign-in\",\r\n register: \"/auth/register\",\r\n forgotPassword: \"/auth/forgot-password\",\r\n forgotPasswordSuccess: \"/auth/forgot-password/success\",\r\n resetPassword: \"/auth/reset-password/:email/:code\",\r\n resolve: {\r\n resetPassword: (email: string, code: string) => `/auth/reset-password/${email}/${code}`,\r\n }\r\n },\r\n admin: {\r\n impersonate: \"/admin/impersonate\",\r\n notes: \"/admin/notes\",\r\n freeProAccess: \"/admin/free-pro-access\",\r\n },\r\n pro: {\r\n myMembership: \"/pro/my-membership\",\r\n downloadInvoice: \"/api/Account/DownloadProInvoice/:id\",\r\n resolve: {\r\n downloadInvoice: (id: number) => `/api/Account/DownloadProInvoice/${id}`,\r\n }\r\n },\r\n account: {\r\n changeEmail: \"/account/change-email\",\r\n changePassword: \"/account/change-password\",\r\n changePhone: \"/account/change-phone\",\r\n paymentMethods: \"/account/payment-methods\",\r\n billingStatements: \"/account/billing-statements\",\r\n },\r\n media: {\r\n downloads: \"/media/downloads\",\r\n purchases: \"/media/purchases\",\r\n activations: \"/media/activations\",\r\n manage: \"/media/manage/:type\",\r\n pendingAdd: \"/media/video-media/pending/add/:type\",\r\n pendingEdit: \"/media/video-media/pending/edit/:id\",\r\n approvedEdit: \"/media/video-media/approved/edit/:id\",\r\n downloadInvoice: \"/api/Media/DownloadPurchaseInvoice/:id\",\r\n resolve: {\r\n manage: (type: MediaRouteTypes) => `/media/manage/${type}`,\r\n pendingAdd: (type: MediaRouteTypes) => `/media/video-media/pending/add/${type}`,\r\n pendingEdit: (id: number) => `/media/video-media/pending/edit/${id}`,\r\n approvedEdit: (id: number) => `/media/video-media/approved/edit/${id}`,\r\n downloadInvoice: (id: number) => `/api/Media/DownloadPurchaseInvoice/${id}`,\r\n }\r\n },\r\n contributions: {\r\n dashboard: \"/contributions\",\r\n sermonIllustrations: \"/contributions/sermon-illustrations\",\r\n addSermonIllustration: \"/contributions/sermon-illustrations/add\",\r\n editSermonIllustration: \"/contributions/sermon-illustrations/edit/:id\",\r\n sermons: \"/contributions/sermons\",\r\n addSermon: \"/contributions/sermons/add\",\r\n editSermon: \"/contributions/sermons/edit/:id\",\r\n sermonSeries: \"/contributions/sermon-series\",\r\n addSeries: \"/contributions/sermon-series/add\",\r\n editSeries: \"/contributions/sermon-series/edit/:id\",\r\n resolve: {\r\n editSermonIllustration: (id: number) => `/contributions/sermon-illustrations/edit/${id}`,\r\n editSermon: (id: number) => `/contributions/sermons/edit/${id}`,\r\n editSeries: (id: number) => `/contributions/sermon-series/edit/${id}`,\r\n }\r\n },\r\n discussion: {\r\n notifications: \"/discussion-notifications\",\r\n },\r\n messages: {\r\n private: \"/private-messages\",\r\n },\r\n sermonFolders: {\r\n base: \"/sermon-folders\",\r\n id: \"/sermon-folders/:id\",\r\n resolve: {\r\n id: (id: number) => `/sermon-folders/${id}`,\r\n }\r\n },\r\n viewingHistory: \"/viewing-history\",\r\n preferences: {\r\n bibleTranslation: \"/preferences/bible-translation\",\r\n newsletterSubscriptions: \"/preferences/newsletter-subscriptions\",\r\n notifications: \"/preferences/notifications\",\r\n },\r\n profile: {\r\n aboutMe: \"/profile/about-me\",\r\n myChurch: \"/profile/my-church\",\r\n myStory: \"/profile/my-story\",\r\n sharedLinks: \"/profile/shared-links\",\r\n profileImage: \"/profile/profile-image\",\r\n },\r\n home: \"/\",\r\n};","import AppBar from \"@material-ui/core/AppBar\";\r\nimport Avatar from \"@material-ui/core/Avatar\";\r\nimport Collapse from \"@material-ui/core/Collapse\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\r\nimport ListItemSecondaryAction from \"@material-ui/core/ListItemSecondaryAction\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport Menu from \"@material-ui/core/Menu\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { Theme } from \"@material-ui/core/styles/createMuiTheme\";\r\nimport createStyles from \"@material-ui/core/styles/createStyles\";\r\nimport withStyles, { WithStyles } from \"@material-ui/core/styles/withStyles\";\r\nimport AccountBoxIcon from \"@material-ui/icons/AccountBox\";\r\nimport AddIcon from \"@material-ui/icons/Add\";\r\nimport BlockIcon from \"@material-ui/icons/Block\";\r\nimport CardGiftcardIcon from \"@material-ui/icons/CardGiftcard\";\r\nimport ChatIcon from \"@material-ui/icons/Chat\";\r\nimport ExpandLessIcon from \"@material-ui/icons/ExpandLess\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport FaceIcon from \"@material-ui/icons/Face\";\r\nimport FavoriteIcon from \"@material-ui/icons/Favorite\";\r\nimport HelpIcon from \"@material-ui/icons/Help\";\r\nimport HistoryIcon from \"@material-ui/icons/History\";\r\nimport HomeIcon from \"@material-ui/icons/Home\";\r\nimport LanguageIcon from \"@material-ui/icons/Language\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport MovieIcon from \"@material-ui/icons/Movie\";\r\nimport NotesIcon from \"@material-ui/icons/Notes\";\r\nimport NotificationsIcon from \"@material-ui/icons/Notifications\";\r\nimport SettingsIcon from \"@material-ui/icons/Settings\";\r\nimport SupervisorAccountIcon from \"@material-ui/icons/SupervisorAccount\";\r\nimport * as React from \"react\";\r\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\r\nimport AppConfig from \"../entities/AppConfig\";\r\nimport ApplicationUser from \"../entities/ApplicationUser\";\r\nimport { AdminService } from \"../services/AdminService\";\r\nimport { AuthenticationService } from \"../services/AuthenticationService\";\r\nimport withRoot from \"../withRoot\";\r\nimport DashboardIcon from \"@material-ui/icons/Dashboard\";\r\nimport StarIcon from \"@material-ui/icons/Star\";\r\nimport { routes } from \"../utilities/routes\";\r\nimport CartIcon from \"@material-ui/icons/ShoppingCart\";\r\n\r\nconst styles = (theme: Theme) =>\r\n\tcreateStyles({\r\n\t\troot: {\r\n\t\t\tposition: \"absolute\",\r\n\t\t\tleft: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\ttop: 0,\r\n\t\t\tzIndex: 1,\r\n\t\t\toverflow: \"hidden\",\r\n\t\t\tflexGrow: 1,\r\n\t\t\tdisplay: \"flex\",\r\n\t\t},\r\n\t\tgrow: {\r\n\t\t\tflexGrow: 1,\r\n\t\t},\r\n\t\tappBar: {\r\n\t\t\tzIndex: theme.zIndex.drawer + 1,\r\n\t\t},\r\n\t\tdrawerPaper: {\r\n\t\t\tposition: \"relative\",\r\n\t\t\twidth: 250,\r\n\t\t},\r\n\t\tavatar: {\r\n\t\t\tbackgroundColor: theme.palette.primary.light,\r\n\t\t},\r\n\t\tlink: {\r\n\t\t\ttextDecoration: \"none\",\r\n\t\t},\r\n\t\tlistItem: {\r\n\t\t\tpaddingRight: 0,\r\n\t\t},\r\n\t\tlistItemIcon: {\r\n\t\t\tmarginRight: 0,\r\n\t\t},\r\n\t\tnested: {\r\n\t\t\tpaddingLeft: theme.spacing() * 3,\r\n\t\t\tpaddingRight: 0,\r\n\t\t},\r\n\t\tnavIconHide: {\r\n\t\t\t[theme.breakpoints.up(\"md\")]: {\r\n\t\t\t\tdisplay: \"none\",\r\n\t\t\t},\r\n\t\t},\r\n\t\tcontent: {\r\n\t\t\tflexGrow: 1,\r\n\t\t\tbackgroundColor: theme.palette.background.default,\r\n\t\t\tpadding: theme.spacing() * 3,\r\n\t\t\tminWidth: 0, // So the Typography noWrap works\r\n\t\t\toverflowY: \"auto\",\r\n\t\t},\r\n\t\ttoolbar: theme.mixins.toolbar,\r\n\t\tlistItemNested: {\r\n\t\t\tpaddingLeft: 40,\r\n\t\t},\r\n\t});\r\n\r\ninterface Props extends WithStyles, RouteComponentProps {\r\n\tuser: ApplicationUser | null;\r\n\tconfig: AppConfig;\r\n\tonSignIn: (user: ApplicationUser) => void;\r\n\tonSignOut: () => void;\r\n\tchildren?: React.ReactNode;\r\n}\r\n\r\ntype State = {\r\n\tanchorEl: HTMLElement | null;\r\n\tmobileDrawerOpen: boolean;\r\n\tmyAccountOpen: boolean;\r\n\tmyProMembershipOpen: boolean;\r\n\tmyMediaOpen: boolean;\r\n\tmyContributionsOpen: boolean;\r\n\tmyProfileOpen: boolean;\r\n\tmyPreferencesOpen: boolean;\r\n\tmyMediaProducerDashboardOpen: boolean;\r\n};\r\n\r\nclass Layout extends React.Component {\r\n\tconstructor(props: Props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tanchorEl: null,\r\n\t\t\tmobileDrawerOpen: false,\r\n\t\t\tmyAccountOpen: this.props.user ? this.props.user.roles.filter((r) => r === \"Admin\").length === 0 : false,\r\n\t\t\tmyProMembershipOpen: false,\r\n\t\t\tmyMediaOpen: false,\r\n\t\t\tmyContributionsOpen: false,\r\n\t\t\tmyProfileOpen: false,\r\n\t\t\tmyPreferencesOpen: false,\r\n\t\t\tmyMediaProducerDashboardOpen: this.props.user ? this.props.user.roles.filter((r) => r === \"MediaProducer\").length > 0 : false,\r\n\t\t};\r\n\t}\r\n\r\n\tasync handleStopImpersonationClick(event: React.MouseEvent) {\r\n\t\tevent.preventDefault();\r\n\t\tconst user = await AdminService.stopImpersonation();\r\n\t\tif (user) {\r\n\t\t\tthis.setState({ mobileDrawerOpen: false });\r\n\t\t\tthis.props.onSignIn(user);\r\n\t\t\tthis.props.history.push(\"/admin/impersonate\");\r\n\t\t} else {\r\n\t\t\twindow.location.reload();\r\n\t\t}\r\n\t}\r\n\r\n\tasync handleSignOutClick() {\r\n\t\tif (this.props.user && this.props.user.inAdminImpersonationMode) {\r\n\t\t\tconst user = await AdminService.stopImpersonation();\r\n\t\t\tif (user) {\r\n\t\t\t\tthis.setState({ mobileDrawerOpen: false });\r\n\t\t\t\tthis.props.onSignIn(user);\r\n\t\t\t\tthis.props.history.push(\"/admin/impersonate\");\r\n\t\t\t} else {\r\n\t\t\t\twindow.location.reload();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst windowLocation = await AuthenticationService.signOut();\r\n\r\n\t\t\tthis.setState({ anchorEl: null });\r\n\t\t\tthis.props.onSignOut();\r\n\t\t\tif (windowLocation) {\r\n\t\t\t\twindow.location.replace(windowLocation);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnavigateTo(clickEvent: React.MouseEvent, href: string) {\r\n\t\tthis.setState({ mobileDrawerOpen: false });\r\n\t\tclickEvent.preventDefault();\r\n\t\tthis.props.history.push(href);\r\n\t}\r\n\r\n\trenderNav() {\r\n\t\tconst classes = this.props.classes;\r\n\r\n\t\tif (this.props.user) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{this.props.user.isAdmin && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!this.props.user.inAdminImpersonationMode && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.admin.impersonate}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.props.user.inAdminImpersonationMode && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.admin.notes}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.props.user.inAdminImpersonationMode && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.admin.freeProAccess}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.props.user.inAdminImpersonationMode && (\r\n\t\t\t\t\t\t\t\t\t this.handleStopImpersonationClick(e)}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.home}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.pro.myMembership}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t this.setState({ myAccountOpen: !this.state.myAccountOpen })}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.myAccountOpen ? : }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.account.changeEmail}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.account.changePassword}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.account.changePhone}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.account.paymentMethods}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.media.purchases}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ myMediaOpen: !this.state.myMediaOpen })}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.myMediaOpen ? : }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.media.downloads}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.media.activations}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tmyContributionsOpen: !this.state.myContributionsOpen,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.myContributionsOpen ? : }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{this.props.user.roles.some((r) => r === \"Contributor\") && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.contributions.dashboard}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.contributions.sermons}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.contributions.sermonIllustrations}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.contributions.sermonSeries}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t this.setState({ myProfileOpen: !this.state.myProfileOpen })}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.myProfileOpen ? : }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.profile.myChurch}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.profile.profileImage}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.profile.myChurch}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.profile.myStory}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.profile.sharedLinks}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tmyPreferencesOpen: !this.state.myPreferencesOpen,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.myPreferencesOpen ? : }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.preferences.notifications}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.preferences.bibleTranslation}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.preferences.newsletterSubscriptions}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.discussion.notifications}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.sermonFolders.base}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.messages.private}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.viewingHistory}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })}\r\n\t\t\t\t\t\t\tclassName={classes.link}\r\n\t\t\t\t\t\t\thref={`${this.props.config.mainSiteUrl}/content/learning-library`}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} href={`${this.props.config.mainSiteUrl}`}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\trenderMediaProducerNav() {\r\n\t\tconst classes = this.props.classes;\r\n\r\n\t\tif (this.props.user) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{this.props.user.isAdmin && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!this.props.user.inAdminImpersonationMode && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.admin.impersonate}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.props.user.inAdminImpersonationMode && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.admin.notes}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.props.user.inAdminImpersonationMode && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.admin.freeProAccess}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.props.user.inAdminImpersonationMode && (\r\n\t\t\t\t\t\t\t\t\t this.handleStopImpersonationClick(e)}>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tmyMediaProducerDashboardOpen: !this.state.myMediaProducerDashboardOpen,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.myMediaProducerDashboardOpen ? : }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.account.changeEmail}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.account.changePassword}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ myMediaOpen: !this.state.myMediaOpen })}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{this.state.myMediaOpen ? : }\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} to={routes.media.resolve.manage(\"all\")}>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{this.props.user.roles.filter((r) => r === \"HasVideoIllustrationAccess\").length > 0 && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })}\r\n\t\t\t\t\t\t\t\t\t\tclassName={classes.link}\r\n\t\t\t\t\t\t\t\t\t\tto={routes.media.resolve.manage(\"video-illustrations\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t this.navigateTo(e, routes.media.resolve.pendingAdd(\"video-illustrations\"))}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.props.user.roles.filter((r) => r === \"HasMotionBackgroundAccess\").length > 0 && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })}\r\n\t\t\t\t\t\t\t\t\t\tclassName={classes.link}\r\n\t\t\t\t\t\t\t\t\t\tto={routes.media.resolve.manage(\"motion-backgrounds\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t this.navigateTo(e, routes.media.resolve.pendingAdd(\"motion-backgrounds\"))}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t{this.props.user.roles.filter((r) => r === \"HasCountdownVideoAccess\").length > 0 && (\r\n\t\t\t\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })}\r\n\t\t\t\t\t\t\t\t\t\tclassName={classes.link}\r\n\t\t\t\t\t\t\t\t\t\tto={routes.media.resolve.manage(\"countdown-videos\")}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t this.navigateTo(e, routes.media.resolve.pendingAdd(\"countdown-videos\"))}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })}\r\n\t\t\t\t\t\t\tclassName={classes.link}\r\n\t\t\t\t\t\t\thref={`${this.props.config.mainSiteUrl}/content/learning-library`}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t this.setState({ mobileDrawerOpen: false })} className={classes.link} href={`${this.props.config.mainSiteUrl}`}>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst classes = this.props.classes;\r\n\t\tconst { anchorEl } = this.state;\r\n\t\tconst open = Boolean(anchorEl);\r\n\r\n\t\tif (this.props.user) {\r\n\t\t\treturn (\r\n\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\t\tmobileDrawerOpen: !this.state.mobileDrawerOpen,\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tclassName={classes.navIconHide}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSC Account\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{!this.props.user.inAdminImpersonationMode ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tSermonCentral Account\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\tSermonCentral Account\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tImpersonating User #{this.props.user.id} ({this.props.user.firstName} {this.props.user.lastName} - {this.props.user.email})\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{this.props.user.profileImageUrl ? (\r\n\t\t\t\t\t\t\t\t\t this.setState({ anchorEl: e.currentTarget })} className={classes.avatar} src={this.props.user.profileImageUrl} />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t this.setState({ anchorEl: e.currentTarget })} className={classes.avatar}>\r\n\t\t\t\t\t\t\t\t\t\t{this.props.user.firstName.charAt(0)}\r\n\t\t\t\t\t\t\t\t\t\t{this.props.user.lastName.charAt(0)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t this.setState({ anchorEl: null })}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t this.handleSignOutClick()}>Sign Out\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\t\t\tmobileDrawerOpen: !this.state.mobileDrawerOpen,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tclasses={{\r\n\t\t\t\t\t\t\t\tpaper: classes.drawerPaper,\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tModalProps={{\r\n\t\t\t\t\t\t\t\tkeepMounted: true, // Better open performance on mobile.\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{this.props.user.roles.filter((r) => r === \"MediaProducer\").length > 0 ? this.renderMediaProducerNav() : this.renderNav()}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{this.props.user.roles.filter((r) => r === \"MediaProducer\").length > 0 ? this.renderMediaProducerNav() : this.renderNav()}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t{this.props.children}\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn this.props.children;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default withRouter(withRoot(withStyles(styles)(Layout)));\r\n","import AppConfig from \"../entities/AppConfig\";\r\nimport ApplicationUser from \"../entities/ApplicationUser\";\r\nimport ProInvoice from \"../entities/ProInvoice\";\r\nimport Country from \"../entities/Country\";\r\nimport CreditCard from \"../entities/CreditCard\";\r\nimport SparkSubscription, { SparkSubscriptionStatus } from \"../entities/SparkSubscription\";\r\nimport { ServerResponse, WebClient } from \"../services/ServiceHelper\";\r\n\r\nexport interface MediaStatistics {\r\n totalDownloadCount: number;\r\n totalPurchaseCount: number;\r\n}\r\nexport interface PremiumSermonSeriesKitAccess {\r\n lastActivatedName: string;\r\n lastActivatedDate: string;\r\n lastActivatedUrl: string;\r\n nextActivationDate: string;\r\n activationCount: number;\r\n canActivate: boolean;\r\n}\r\n\r\nexport interface PlusMediaAccess {\r\n periodStart: string;\r\n periodEnd: string;\r\n actualBackgroundImageDownloads: number;\r\n allowedBackgroundImageDownloads?: number;\r\n actualCountdownVideoDownloads: number;\r\n allowedCountdownVideoDownloads?: number;\r\n actualMotionBackgroundDownloads: number;\r\n allowedMotionBackgroundDownloads?: number;\r\n actualPreachingSlidesDownloads: number;\r\n allowedPreachingSlidesDownloads?: number;\r\n actualWorshipLyricSlideDownloads: number;\r\n allowedWorshipLyricSlideDownloads?: number;\r\n actualVideoIllustrationDownloads: number;\r\n allowedVideoIllustrationDownloads?: number;\r\n actualWorshipMusicVideoDownloads: number;\r\n allowedWorshipMusicVideoDownloads?: number;\r\n actualSocialGraphicDownloads: number;\r\n allowedSocialGraphicDownloads?: number;\r\n actualComedyVideoDownloads: number;\r\n allowedComedyVideoDownloads?: number;\r\n actualInspirationalVideoDownloads: number;\r\n allowedInspirationalVideoDownloads?: number;\r\n actualSmallGroupStudyVideoDownloads: number;\r\n allowedSmallGroupStudyVideoDownloads?: number;\r\n}\r\n\r\nexport interface SermonStatistics {\r\n approvedCount: number;\r\n pendingCount: number;\r\n totalViewCount: number;\r\n}\r\n\r\nexport interface SermonIllustrationStatistics {\r\n approvedCount: number;\r\n pendingCount: number;\r\n totalViewCount: number;\r\n}\r\n\r\nexport class AccountService {\r\n public static async changeEmail(newEmail: string, appConfig: AppConfig) {\r\n return await WebClient.Post(\r\n \"api/Account/ChangeEmail\",\r\n { newEmail: newEmail }\r\n );\r\n }\r\n\r\n public static changePassword(\r\n currentPassword: string,\r\n newPassword: string,\r\n confirmNewPassword: string\r\n ) {\r\n return WebClient.Post(\"api/Account/ChangePassword\", {\r\n currentPassword: currentPassword,\r\n newPassword: newPassword,\r\n confirmNewPassword: confirmNewPassword,\r\n });\r\n }\r\n\r\n \r\n public static changePhone(newPhone: string) {\r\n return WebClient.Post(\"api/Account/ChangePhone\", { newPhone });\r\n }\r\n\r\n public static async getMediaStatistics() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetMediaStatistics\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getPremiumSermonSeriesKitAccess() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetPremiumSermonSeriesKitAccess\"\r\n );\r\n if (\r\n ServerResponse.isServerResponse(response)\r\n ) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getPlusMediaAccess() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetPlusMediaAccess\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonStatistics() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetSermonStatistics\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonIllustrationStatistics() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetSermonIllustrationStatistics\"\r\n );\r\n if (\r\n ServerResponse.isServerResponse(response)\r\n ) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSubscriptions() {\r\n var response = await WebClient.Get<{ hasMakerSubscription: boolean, hasSparkSubscription: boolean }>(\r\n \"api/Account/GetSubscriptions\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getProInvoices() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetProInvoices\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async hasPayPal() {\r\n var response = await WebClient.Get(\"api/Account/HasPayPal\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n static async getCountries() {\r\n var response = await WebClient.Get(\"api/Account/GetCountries\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getCreditCards() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetCreditCards\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async changeDefaultCreditCard(cardId: string) {\r\n let response = await WebClient.Post(\r\n \"api/Account/SetDefaultCreditCard\",\r\n { CreditCardId: cardId }\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async deleteCreditCard(cardId: string) {\r\n let response = await WebClient.Delete(\r\n \"api/Account/DeleteCreditCard\",\r\n { CreditCardId: cardId }\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async addPaymentMethod(\r\n appConfig: AppConfig,\r\n cardName: string,\r\n cardNumber: string,\r\n expiryMonth: string,\r\n expiryYear: string,\r\n cvv: string,\r\n zip: string,\r\n country?: string\r\n ) {\r\n let model = {\r\n CardHolderName: cardName,\r\n CardNumber: cardNumber.replace(/[^0-9]/gi, \"\"),\r\n SecurityCode: cvv,\r\n ExpirationMonth: expiryMonth,\r\n ExpirationYear: expiryYear,\r\n PostalCode: zip,\r\n Country: country,\r\n };\r\n\r\n let response = await WebClient.Post(\r\n appConfig.paymentsSiteUrl + \"/api/CreditCards/AddCreditCard\",\r\n model\r\n );\r\n\r\n return response;\r\n }\r\n\r\n public static async updatePaymentMethod(\r\n appConfig: AppConfig,\r\n paymentMethodId: string,\r\n expiryMonth: string,\r\n expiryYear: string,\r\n cvv: string,\r\n zip: string,\r\n country?: string\r\n ) {\r\n let model = {\r\n PaymentMethodId: paymentMethodId,\r\n SecurityCode: cvv,\r\n ExpirationMonth: expiryMonth,\r\n ExpirationYear: expiryYear,\r\n PostalCode: zip,\r\n Country: country,\r\n };\r\n\r\n let response = await WebClient.Post(\r\n appConfig.paymentsSiteUrl + \"/api/CreditCards/UpdateCreditCard\",\r\n model\r\n );\r\n return response;\r\n }\r\n}\r\n","import Button from '@material-ui/core/Button';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { AccountService } from '../../services/AccountService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 450\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n config: AppConfig;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean,\r\n currentEmail: string;\r\n newEmail: string;\r\n errors: FieldValidationError[];\r\n showSuccessMessage: boolean;\r\n successMessage: string;\r\n};\r\n\r\nclass ChangeEmail extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n currentEmail: props.user.email,\r\n newEmail: '',\r\n errors: [],\r\n showSuccessMessage: false,\r\n successMessage: ''\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Change Email\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.newEmail) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AccountService.changeEmail(this.state.newEmail, this.props.config);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.setState({ errors: [], newEmail: '', currentEmail: response.data.email, enableSubmit: true, showSuccessMessage: true, successMessage: response.message });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n \r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n console.log(response.errors);\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.successMessage}\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Change Email\r\n \r\n \r\n
this.handleFormSubmit(e)} className={classes.form}>\r\n\r\n \r\n Current Email\r\n \r\n \r\n {this.state.currentEmail}\r\n \r\n\r\n this.setState({ newEmail: e.target.value })}\r\n value={this.state.newEmail}\r\n helperText={}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ChangeEmail));","import * as React from 'react';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../../withRoot';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\n\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport green from '@material-ui/core/colors/green';\r\n\r\nimport { FieldValidationError, ServerResponse, ServerModelValidationResponse } from '../../services/ServiceHelper';\r\nimport { AccountService } from '../../services/AccountService';\r\n\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 450\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean,\r\n currentPassword: string;\r\n newPassword: string;\r\n confirmNewPassword: string;\r\n errors: FieldValidationError[];\r\n showSuccessMessage: boolean;\r\n successMessage: string;\r\n};\r\n\r\nclass ChangePassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n currentPassword: '',\r\n newPassword: '',\r\n confirmNewPassword: '',\r\n errors: [],\r\n showSuccessMessage: false,\r\n successMessage: '',\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Change Password\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if ((this.state.currentPassword || this.props.user.inAdminImpersonationMode) && this.state.newPassword && this.state.confirmNewPassword) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AccountService.changePassword(this.state.currentPassword, this.state.newPassword, this.state.confirmNewPassword);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({ errors: [], currentPassword: '', newPassword: '', confirmNewPassword: '', enableSubmit: true, showSuccessMessage: true, successMessage: response.message });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n if (this.props.user.isGlooLogin){\r\n return (\r\n \r\n Visit Gloo to change your password.\r\n \r\n )\r\n }\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.successMessage}\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Change Password\r\n \r\n \r\n\r\n
this.handleFormSubmit(e)}>\r\n\r\n {!this.props.user.inAdminImpersonationMode &&\r\n this.setState({ currentPassword: e.target.value })}\r\n value={this.state.currentPassword}\r\n helperText={}\r\n />\r\n }\r\n this.setState({ newPassword: e.target.value })}\r\n value={this.state.newPassword}\r\n helperText={}\r\n />\r\n this.setState({ confirmNewPassword: e.target.value })}\r\n value={this.state.confirmNewPassword}\r\n helperText={}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ChangePassword));","import Button from \"@material-ui/core/Button\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport green from \"@material-ui/core/colors/green\";\r\nimport { Theme } from \"@material-ui/core/styles/createMuiTheme\";\r\nimport createStyles from \"@material-ui/core/styles/createStyles\";\r\nimport withStyles, { WithStyles } from \"@material-ui/core/styles/withStyles\";\r\nimport SuccessIcon from \"@material-ui/icons/CheckCircle\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\nimport * as React from \"react\";\r\nimport ApplicationUser from \"../../entities/ApplicationUser\";\r\nimport { AccountService } from \"../../services/AccountService\";\r\nimport {\r\n FieldValidationError,\r\n ServerModelValidationResponse,\r\n ServerResponse,\r\n} from \"../../services/ServiceHelper\";\r\nimport withRoot from \"../../withRoot\";\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 450,\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: \"auto\",\r\n minWidth: \"150px\",\r\n display: \"block\",\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: \"nowrap\",\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n [theme.breakpoints.down(\"md\")]: {\r\n root: {\r\n alignItems: \"normal\",\r\n },\r\n paper: {\r\n width: \"100%\",\r\n },\r\n },\r\n snackBarText: {\r\n overflow: \"hidden\",\r\n },\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n currentPhone: string;\r\n newPhone: string;\r\n errors: FieldValidationError[];\r\n showSuccessMessage: boolean;\r\n successMessage: string;\r\n};\r\n\r\nclass ChangePhone extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n currentPhone: props.user.phoneNumber ?? \"\",\r\n newPhone: \"\",\r\n errors: [],\r\n showSuccessMessage: false,\r\n successMessage: \"\",\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Change Phone\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.newPhone) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AccountService.changePhone(this.state.newPhone);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.setState({\r\n errors: [],\r\n newPhone: \"\",\r\n currentPhone: response.data.phoneNumber ?? \"\",\r\n enableSubmit: true,\r\n showSuccessMessage: true,\r\n successMessage: response.message,\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.successMessage}\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n Change Phone\r\n \r\n this.handleFormSubmit(e)}\r\n className={classes.form}\r\n >\r\n Current Phone\r\n {this.state.currentPhone}\r\n\r\n this.setState({ newPhone: e.target.value })}\r\n value={this.state.newPhone}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n Change Phone\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ChangePhone));\r\n","import { Currencies } from '../entities/Currencies';\r\nexport class CurrencyHelper {\r\n public static GetCurrencySymbol = (currency: Currencies) => {\r\n switch (currency) {\r\n case \"PHP\":\r\n return '₱';\r\n case \"ZAR\":\r\n return 'R';\r\n case \"NGN\":\r\n return '₦';\r\n case \"KES\":\r\n return 'KSh';\r\n case \"GHS\":\r\n return 'GH₵';\r\n default:\r\n return '$';\r\n }\r\n }\r\n}","import {\r\n Button,\r\n Card,\r\n CardContent,\r\n List,\r\n ListItem,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { AccountService } from \"../../../services/AccountService\";\r\n\r\ninterface Props {\r\n classes: any;\r\n sparkSiteUrl: string;\r\n hasSparkSubscription?: boolean;\r\n}\r\n\r\nexport function SparkAccountCard(props: Props) {\r\n const { classes, sparkSiteUrl, hasSparkSubscription } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n Sermon Research\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import Avatar from '@material-ui/core/Avatar';\r\nimport Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport green from '@material-ui/core/colors/green';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport {\r\n ProSubscriptionSourceType,\r\n ProSubscriptionStatus,\r\n ProSubscriptionTerm,\r\n ProSubscriptionTier\r\n} from '../../entities/ProSubscription';\r\nimport { AccountService, MediaStatistics, PlusMediaAccess, PremiumSermonSeriesKitAccess, SermonIllustrationStatistics, SermonStatistics } from '../../services/AccountService';\r\nimport { AdminService } from '../../services/AdminService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport { CurrencyHelper } from '../../utilities/CurrencyHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { SparkAccountCard } from './components/SparkAccountCard';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n avatar: {\r\n margin: '0 auto',\r\n backgroundColor: theme.palette.primary.light,\r\n width: 100,\r\n height: 100,\r\n fontSize: '40px',\r\n marginBottom: theme.spacing(),\r\n },\r\n welcome: {\r\n textAlign: 'center',\r\n marginBottom: theme.spacing(),\r\n },\r\n title: {\r\n textAlign: 'center',\r\n marginBottom: theme.spacing() * 2,\r\n },\r\n card: {\r\n padding: theme.spacing(),\r\n width: 450,\r\n height: 550\r\n },\r\n cardShort: {\r\n padding: theme.spacing(),\r\n width: 450,\r\n height: 350\r\n },\r\n dangerButton: {\r\n color: theme.palette.error.dark\r\n },\r\n secondaryAction: {\r\n\r\n },\r\n link: {\r\n textDecoration: 'none',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n card: {\r\n minWidth: '100%',\r\n width: 'auto',\r\n height: 'auto',\r\n }\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n secondaryAction: {\r\n position: 'static',\r\n transform: 'none',\r\n right: 'inherit',\r\n top: 'inherit',\r\n paddingLeft: theme.spacing() * 2\r\n }\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n secondaryAction: {\r\n paddingLeft: theme.spacing()\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n onSignIn: (user: ApplicationUser) => void;\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n showSendResetPasswordEmailDialog: boolean;\r\n showResetPasswordEmailSentMessage: boolean;\r\n showCloseAccountDialog: boolean;\r\n user: ApplicationUser;\r\n mediaStatistics?: MediaStatistics;\r\n premiumSskAccess?: PremiumSermonSeriesKitAccess;\r\n plusMediaAccess?: PlusMediaAccess;\r\n sermonStatistics?: SermonStatistics;\r\n hasMakerSubscription?: boolean;\r\n hasSparkSubscription?: boolean;\r\n sermonIllustrationStatistics?: SermonIllustrationStatistics;\r\n errors: FieldValidationError[];\r\n hasPaypal: boolean;\r\n};\r\n\r\nclass Home extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n showSendResetPasswordEmailDialog: false,\r\n showResetPasswordEmailSentMessage: false,\r\n showCloseAccountDialog: false,\r\n user: props.user,\r\n errors: [],\r\n hasPaypal: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Account Dashboard\";\r\n\r\n\r\n const hasPayPal = await AccountService.hasPayPal();\r\n this.setState({ hasPaypal: hasPayPal || false });\r\n\r\n const mediaStatistics = await AccountService.getMediaStatistics();\r\n if (mediaStatistics) {\r\n this.setState({ mediaStatistics });\r\n }\r\n\r\n AccountService.getSubscriptions()\r\n .then(result => this.setState({ hasMakerSubscription: result?.hasMakerSubscription, hasSparkSubscription: result?.hasSparkSubscription }));\r\n\r\n if (this.state.user.proSubscription) {\r\n\r\n if (this.state.user.proSubscription.tier > ProSubscriptionTier.Plus) {\r\n const premiumSskAccess = await AccountService.getPremiumSermonSeriesKitAccess();\r\n if (premiumSskAccess) {\r\n this.setState({ premiumSskAccess });\r\n }\r\n }\r\n\r\n if (this.state.user.proSubscription.tier > ProSubscriptionTier.Basic) {\r\n const plusMediaAccess = await AccountService.getPlusMediaAccess();\r\n if (plusMediaAccess) {\r\n this.setState({ plusMediaAccess });\r\n }\r\n }\r\n }\r\n\r\n if (this.state.user.roles.filter((v) => v === 'Contributor').length > 0) {\r\n\r\n const sermonStatistics = await AccountService.getSermonStatistics();\r\n if (sermonStatistics) {\r\n this.setState({ sermonStatistics });\r\n }\r\n\r\n const sermonIllustrationStatistics = await AccountService.getSermonIllustrationStatistics();\r\n if (sermonIllustrationStatistics) {\r\n this.setState({ sermonIllustrationStatistics });\r\n }\r\n }\r\n }\r\n\r\n canChangeProSubscription(user: ApplicationUser) {\r\n\r\n return user.proSubscription && user.proSubscription.nextBillDate && user.proSubscription.status !== ProSubscriptionStatus.Cancelled;\r\n }\r\n\r\n canUpgradeProSubscription(user: ApplicationUser) {\r\n\r\n return this.canChangeProSubscription(user) && user.proSubscription!.tier < ProSubscriptionTier.Premium;\r\n }\r\n\r\n getPlanName(user: ApplicationUser) {\r\n if (user.proSubscription != null) {\r\n if (user.proSubscription.planName.match(/employee/i)) {\r\n return \"Site Administrator\";\r\n }\r\n if (user.proSubscription.planName.match(/basic/i)) {\r\n return \"PRO Basic\";\r\n }\r\n if (user.proSubscription.planName.match(/premium/i)) {\r\n if (user.proSubscription.source == ProSubscriptionSourceType.Gloo){\r\n return \"Gloo PRO Premium\";\r\n }\r\n return \"PRO Premium\";\r\n }\r\n if (user.proSubscription.planName.match(/free pro/i)) {\r\n return \"Free Contributor PRO\";\r\n }\r\n\r\n return \"PRO Plus\";\r\n }\r\n\r\n return \"Free Account\";\r\n }\r\n\r\n getNextActivationDate(dateString: string) {\r\n\r\n const date = new Date(dateString);\r\n const current = new Date();\r\n\r\n if (current.getTime() > date.getTime()) {\r\n return 'Activate Today!';\r\n }\r\n else {\r\n return date.toLocaleDateString();\r\n }\r\n }\r\n\r\n async makeAdmin(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.makeAdmin(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.setState({ errors: [], user: response.data, enableSubmit: true });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async unmakeAdmin(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.unmakeAdmin(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.setState({ errors: [], user: response.data, enableSubmit: true });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async sendResetPasswordEmail(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.sendResetPasswordEmail(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({ errors: [], showSendResetPasswordEmailDialog: false, showResetPasswordEmailSentMessage: true, enableSubmit: true });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n }\r\n\r\n async closeAccount(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.closeAccount(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n (window as any).location = '/admin/impersonate';\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n }\r\n\r\n renderMyAccount() {\r\n var classes = this.props.classes;\r\n var user = this.state.user;\r\n var proSubscription = this.state.user.proSubscription;\r\n return (\r\n \r\n \r\n \r\n My Account\r\n \r\n \r\n \r\n \r\n {!this.props.user.proSubscription &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.canUpgradeProSubscription(user) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n {!this.state.user.inAdminImpersonationMode &&\r\n \r\n \r\n \r\n }\r\n {this.state.user.inAdminImpersonationMode &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {user.isGlooLogin &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {user.inAdminImpersonationMode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {user.inAdminImpersonationMode &&\r\n this.setState({ showCloseAccountDialog: !this.state.showCloseAccountDialog })}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n Close Account?\r\n \r\n \r\n Closing a user's account only affects the user's ability to log into their account - this does not delete their contributions, and it does not close their Zuora account.\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {user.inAdminImpersonationMode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n {(!user.proSubscription || !user.proSubscription.planName.match(/employee/i)) &&\r\n \r\n }\r\n {(user.proSubscription && user.proSubscription.planName.match(/employee/i)) &&\r\n \r\n }\r\n \r\n this.setState({ showSendResetPasswordEmailDialog: !this.state.showSendResetPasswordEmailDialog })}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n Send Reset Password Email?\r\n \r\n \r\n The user will receive an email with a link to reset their own password, so that you don't have to set one for them.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n renderMyPRO() {\r\n var classes = this.props.classes;\r\n var user = this.state.user;\r\n var proSubscription = this.state.user.proSubscription;\r\n var currency = user.currency;\r\n\r\n if (!proSubscription) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n My PRO\r\n \r\n \r\n \r\n \r\n {this.canChangeProSubscription(user) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {this.canChangeProSubscription(user) &&\r\n \r\n {this.state.hasPaypal ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {proSubscription.serviceStopDate && proSubscription.status === ProSubscriptionStatus.Cancelled &&\r\n Benefits end {new Date(proSubscription.serviceStopDate).toLocaleDateString()}\r\n }\r\n \r\n {proSubscription.status === ProSubscriptionStatus.Active &&\r\n \r\n \r\n {ProSubscriptionTerm[proSubscription.term].toString()}\r\n {proSubscription.nextBillPrice && proSubscription.planPrice ?\r\n {proSubscription.nextBillPrice < proSubscription.planPrice ?\r\n ({CurrencyHelper.GetCurrencySymbol(currency)}{proSubscription.nextBillPrice.toString(10)}{proSubscription.term === 1 ? \" / mth\" : proSubscription.term === 12 ? \" / yr\" : \" / 2 years\"} | {CurrencyHelper.GetCurrencySymbol(currency)}{proSubscription.planPrice.toString(10)}{proSubscription.term === 1 ? \" / mth\" : proSubscription.term === 12 ? \" / yr\" : \" / 2 years\"})\r\n : ({CurrencyHelper.GetCurrencySymbol(currency)}{proSubscription.planPrice.toString(10)}{proSubscription.term === 1 ? \" / month\" : proSubscription.term === 12 ? \" / year\" : \"/ 2 years\"})}\r\n : ''\r\n }\r\n {this.getPlanName(user) === 'Free Contributor PRO' ? ' (Free Contributor PRO)' : ''}\r\n {this.getPlanName(user) === 'Site Administrator' ? ' (Site Administrator PRO)' : ''}\r\n \r\n }\r\n secondary=\"Payment option\"\r\n />\r\n {this.canUpgradeProSubscription(user) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {proSubscription.nextBillDate && proSubscription.status === ProSubscriptionStatus.Active &&\r\n \r\n \r\n {this.canChangeProSubscription(user) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderSermonMakerStatus() {\r\n const classes = this.props.classes;\r\n const hasMakerSubscription = this.state.hasMakerSubscription;\r\n const showUpgradeButton = hasMakerSubscription != null && !hasMakerSubscription;\r\n\r\n return (\r\n \r\n \r\n \"Sermon\r\n \r\n \r\n \r\n {\r\n showUpgradeButton\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderMyMedia() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n My Media\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderMyContributions() {\r\n var classes = this.props.classes;\r\n\r\n if (!this.state.user.roles.some(r => r === 'Contributor')) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n My Contributions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderPremiumSermonSeriesKitAccess() {\r\n\r\n var classes = this.props.classes;\r\n var proSubscription = this.state.user.proSubscription;\r\n\r\n if (!proSubscription || proSubscription.tier <= ProSubscriptionTier.Plus) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Premium Sermon Series Kit Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderPROMediaDownloads() {\r\n\r\n var classes = this.props.classes;\r\n var proSubscription = this.state.user.proSubscription;\r\n\r\n if (!proSubscription || proSubscription.tier <= ProSubscriptionTier.Basic) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n PRO Media Downloads\r\n \r\n {this.state.plusMediaAccess && this.state.plusMediaAccess.periodStart && this.state.plusMediaAccess.periodEnd &&\r\n \r\n Between {new Date(this.state.plusMediaAccess.periodStart).toLocaleDateString()} and {new Date(this.state.plusMediaAccess.periodEnd).toLocaleDateString()}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showResetPasswordEmailSentMessage: false })}\r\n >\r\n \r\n \r\n Reset password email sent\r\n }\r\n />\r\n \r\n\r\n {this.props.user.profileImageUrl ?\r\n :\r\n {this.props.user.firstName.charAt(0)}{this.props.user.lastName.charAt(0)}\r\n }\r\n\r\n \r\n Welcome back, {this.props.user.firstName}!\r\n \r\n\r\n \r\n Control your account, access your PRO benefits, and manage your contributions\r\n \r\n\r\n \r\n \r\n \r\n {this.renderMyAccount()}\r\n \r\n {this.props.user.proSubscription &&\r\n \r\n {this.renderMyPRO()}\r\n \r\n }\r\n \r\n {this.renderMyMedia()}\r\n \r\n \r\n {this.renderSermonMakerStatus()}\r\n \r\n \r\n \r\n \r\n {this.renderMyContributions() &&\r\n \r\n {this.renderMyContributions()}\r\n \r\n }\r\n {this.renderPremiumSermonSeriesKitAccess() &&\r\n \r\n {this.renderPremiumSermonSeriesKitAccess()}\r\n \r\n }\r\n {this.renderPROMediaDownloads() &&\r\n \r\n {this.renderPROMediaDownloads()}\r\n \r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n {this.renderMyAccount()}\r\n \r\n {this.props.user.proSubscription &&\r\n \r\n {this.renderMyPRO()}\r\n \r\n }\r\n \r\n {this.renderMyMedia()}\r\n \r\n \r\n {this.renderSermonMakerStatus()}\r\n \r\n \r\n \r\n \r\n {this.renderMyContributions() &&\r\n \r\n {this.renderMyContributions()}\r\n \r\n }\r\n {this.renderPremiumSermonSeriesKitAccess() &&\r\n \r\n {this.renderPremiumSermonSeriesKitAccess()}\r\n \r\n }\r\n {this.renderPROMediaDownloads() &&\r\n \r\n {this.renderPROMediaDownloads()}\r\n \r\n }\r\n \r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Home));\r\n","import Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Container from '@material-ui/core/Container';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport axios from 'axios';\r\nimport * as d3 from 'd3';\r\nimport * as React from 'react';\r\nimport * as topojson from \"topojson-client\";\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { FieldValidationError, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport USState from '../../entities/USState';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { MediaProducerService } from '../../services/MediaProducerService';\r\nimport DownloadAndViewCountByRegion from '../../entities/DownloadAndViewCountByRegion';\r\nimport Button from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport AnimatedNumberLabel from '../../components/AnimatedNumberLabel';\r\nimport { BarChart, CartesianGrid, XAxis, YAxis, Tooltip, Legend, Bar, ResponsiveContainer, Label, Line, ReferenceLine, ComposedChart, Brush, PieChart, Pie, Cell, RechartsFunction } from 'recharts';\r\nimport { MiscService } from '../../services/MiscService';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n avatar: {\r\n margin: '0 auto',\r\n backgroundColor: theme.palette.primary.light,\r\n width: 100,\r\n height: 100,\r\n fontSize: '40px',\r\n marginBottom: theme.spacing(),\r\n },\r\n welcome: {\r\n textAlign: 'center',\r\n marginBottom: theme.spacing(),\r\n },\r\n title: {\r\n textAlign: 'center',\r\n marginBottom: theme.spacing() * 2,\r\n },\r\n card: {\r\n padding: theme.spacing(),\r\n width: 450,\r\n height: 550\r\n },\r\n dangerButton: {\r\n color: theme.palette.error.dark\r\n },\r\n secondaryAction: {\r\n\r\n },\r\n link: {\r\n textDecoration: 'none',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n card: {\r\n minWidth: '100%',\r\n width: 'auto',\r\n height: 'auto',\r\n }\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n secondaryAction: {\r\n position: 'static',\r\n transform: 'none',\r\n right: 'inherit',\r\n top: 'inherit',\r\n paddingLeft: theme.spacing() * 2\r\n }\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n secondaryAction: {\r\n paddingLeft: theme.spacing()\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n mapCard: {\r\n maxHeight: '75vh',\r\n overflow: 'hidden',\r\n [theme.breakpoints.down('md')]: {\r\n width: '100%',\r\n maxHeight: '70vh',\r\n }\r\n },\r\n mapContainer: {\r\n display: 'inline-block',\r\n position: 'relative',\r\n paddingBottom: '100%',\r\n verticalAlign: 'top',\r\n overflow: 'hidden',\r\n height: \"100%\",\r\n width: '100%',\r\n marginTop: 0\r\n },\r\n stateMap: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n \"& path\": {\r\n strokeLinejoin: \"round\",\r\n strokeLinecap: \"round\",\r\n fill: \"rgb(163, 219, 241)\",\r\n stroke: \"black\",\r\n strokeWidth: \".5px\",\r\n transition: 'all 0.2s ease',\r\n \"&:hover\": {\r\n fillOpacity: .7,\r\n transition: 'all 0.2s ease',\r\n }\r\n },\r\n \"& .names\": {\r\n fill: \"none\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\"\r\n },\r\n \"& title\": {\r\n fontSize: 15,\r\n borderRadius: 5\r\n }\r\n },\r\n filterButtons: {\r\n padding: 10,\r\n justifyContent: 'space-between',\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n filterButton: {\r\n marginLeft: 10\r\n },\r\n totalBox: {\r\n minHeight: 72\r\n },\r\n barChart: {\r\n marginTop: 30\r\n },\r\n producerPayoutCard: {\r\n marginBottom: 30\r\n },\r\n pieLabels: {\r\n fontSize: 20,\r\n },\r\n noData: {\r\n paddingTop: '15%'\r\n }\r\n });\r\n\r\nenum Months {\r\n January = 1,\r\n February = 2,\r\n March = 3,\r\n April = 4,\r\n May = 5,\r\n June = 6,\r\n July = 7,\r\n August = 8,\r\n September = 9,\r\n October = 10,\r\n November = 11,\r\n December = 12\r\n}\r\n\r\nenum MapFilters {\r\n All = \"All\",\r\n Views = \"Views\",\r\n Downloads = \"Downloads\"\r\n}\r\n\r\nexport enum ChartYears {\r\n Y2019 = 2019,\r\n Y2020 = 2020,\r\n Y2021 = 2021\r\n}\r\n\r\ninterface Props extends WithStyles {\r\n onSignIn: (user: ApplicationUser) => void;\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n loadingMap: boolean;\r\n errors: FieldValidationError[];\r\n usMapData: any;\r\n usStates: USState[] | undefined;\r\n mapDownloadAndViewData: DownloadAndViewCountByRegion[] | null;\r\n anchorYearMenu?: HTMLElement;\r\n anchorMonthMenu?: HTMLElement;\r\n anchorByData?: HTMLElement;\r\n filterByYear: number;\r\n filterByMonth: Months;\r\n filterByData: MapFilters;\r\n totalViews: number;\r\n totalDownloads: number;\r\n producerPayoutData: ProducerPayoutData[];\r\n chartViewing: ChartViewingTypes;\r\n anchorChartMenu?: HTMLElement;\r\n anchorChartYearMenu?: HTMLElement;\r\n anchorChartMonthMenu?: HTMLElement;\r\n filteredChartData: ProducerPayoutData[];\r\n filterChartYear: ChartYears,\r\n filterChartMonth: Months,\r\n monthData: MonthData[];\r\n totalChart: number;\r\n};\r\n\r\nexport interface ProducerPayoutData {\r\n revenueShare: number | null;\r\n salesFromMedia: number | null;\r\n salesFromSSK: number | null;\r\n total: number | null;\r\n month: string;\r\n year: ChartYears;\r\n}\r\n\r\ninterface MonthData {\r\n name: string;\r\n total: number | null;\r\n}\r\n\r\nenum ChartViewingTypes {\r\n Year = \"Year\",\r\n Month = \"Month\"\r\n}\r\n\r\nconst PieColors = ['#2196f3', '#61b9ff', '#7bc5ff'];\r\n\r\nconst today = new Date();\r\n\r\nconst years = [today.getFullYear(), today.getFullYear() - 1, today.getFullYear() - 2]\r\n\r\nclass MediaDashboard extends React.Component {\r\n\r\n private mapRef: SVGGElement | null = null;\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loadingMap: false,\r\n errors: [],\r\n usMapData: undefined,\r\n usStates: undefined,\r\n mapDownloadAndViewData: null,\r\n filterByYear: years[0],\r\n filterByMonth: Months[Months[(new Date().getMonth() + 1)]],\r\n filterByData: MapFilters.All,\r\n totalDownloads: 0,\r\n totalViews: 0,\r\n chartViewing: ChartViewingTypes.Year,\r\n filterChartYear: years[0],\r\n filterChartMonth: Months[Months[(new Date().getMonth() + 1)].toString()],\r\n producerPayoutData: [],\r\n filteredChartData: [],\r\n monthData: [],\r\n totalChart: 0\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Media Dashboard\";\r\n\r\n this.setState({ loadingMap: true });\r\n ContributionsService.getUSStates()\r\n .then((usStates) => {\r\n this.setState({ usStates: usStates || [] });\r\n });\r\n\r\n axios.get('/data/usStates-data.json', { headers: { Pragma: 'no-cache' } })\r\n .then(response => {\r\n this.setState({ usMapData: response.data }, async () => await this.getMapData());\r\n });\r\n\r\n // Matt isn't ready to give this to producers, so hide for now 3/27\r\n // var response = await MiscService.getProducerPayoutByYear(+this.state.filterChartYear);\r\n\r\n // if (response != null) {\r\n // this.massageProducerPayoutDate(response);\r\n // }\r\n\r\n\r\n this.updateChartData();\r\n }\r\n\r\n massageProducerPayoutDate(data: ProducerPayoutData[]) {\r\n let allData: ProducerPayoutData[] = [];\r\n\r\n for (let m = 1; m < 13; m++) {\r\n let monthData = data.find(a => a.month === Months[Months[m]]);\r\n\r\n if (monthData) {\r\n allData.push({\r\n ...monthData,\r\n month: Months[monthData.month],\r\n })\r\n } else {\r\n allData.push({\r\n month: Months[m],\r\n year: this.state.filterChartYear,\r\n revenueShare: null,\r\n salesFromMedia: null,\r\n salesFromSSK: null,\r\n total: null,\r\n });\r\n\r\n }\r\n }\r\n this.setState({ producerPayoutData: allData })\r\n }\r\n\r\n getMapData = async () => {\r\n const { filterByYear, filterByMonth } = this.state;\r\n const mapDownloadAndViewData = await MediaProducerService.GetMediaProducersDownloadsAndViewsCount(filterByYear, filterByMonth);\r\n this.setState({ mapDownloadAndViewData }, () => this.updateUSMap());\r\n }\r\n\r\n updateUSMap() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (!this.state.usMapData || !this.state.mapDownloadAndViewData) {\r\n return;\r\n }\r\n\r\n this.setState({ loadingMap: true });\r\n\r\n\r\n let totalViews = 0;\r\n let totalDownloads = 0;\r\n\r\n\r\n this.state.usMapData.objects.states.geometries.forEach((geometry: any) => {\r\n\r\n let views: number = 0;\r\n let downloads: number = 0;\r\n const usState = this.state.usStates!.filter(c => c.postalAbbreviation === geometry.code)[0];\r\n if (!usState) {\r\n geometry.views = views;\r\n geometry.downloads = downloads;\r\n return;\r\n }\r\n\r\n const dataByRegion = this.state.mapDownloadAndViewData!.find(s => s.region === usState.postalAbbreviation);\r\n\r\n if (dataByRegion) {\r\n views = dataByRegion.viewCount;\r\n downloads = dataByRegion.downloadCount;\r\n }\r\n\r\n geometry.views = views;\r\n geometry.downloads = downloads;\r\n totalViews += views;\r\n totalDownloads += downloads;\r\n });\r\n\r\n this.setState({ totalViews, totalDownloads });\r\n\r\n const rangeArray: Array = [];\r\n\r\n rangeArray.push('#ffffff');\r\n rangeArray.push('#cde8f3');\r\n rangeArray.push('#b4dcee');\r\n rangeArray.push('#9bd1e8');\r\n rangeArray.push('#82c6e3');\r\n rangeArray.push('#69badd');\r\n rangeArray.push('#50afd7');\r\n rangeArray.push('#36a3d2');\r\n rangeArray.push('#1d98cc');\r\n rangeArray.push('#058dc7');\r\n rangeArray.push('#0376ae');\r\n rangeArray.push('#026096');\r\n rangeArray.push('#01497e');\r\n rangeArray.push('#003366');\r\n\r\n const color = d3.scaleQuantile()\r\n .domain([0, 1, 5, 10, 20, 50, 100, 250, 400, 800, 1500, 4000, 10000, 20000])\r\n .range(rangeArray);\r\n\r\n const component = this;\r\n const svg = d3.select(this.mapRef);\r\n svg.html(null);\r\n\r\n const projection = d3.geoAlbersUsa();\r\n var path: any = d3.geoPath(projection);\r\n\r\n svg.attr(\"preserveAspectRatio\", \"xMidYMid meet\")\r\n .attr(\"viewBox\", \"-100 0 1100 800\")\r\n .attr('class', classes.stateMap)\r\n .append(\"g\")\r\n .selectAll(\"path\")\r\n .data(topojson.feature(this.state.usMapData, this.state.usMapData.objects.states).features)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"d\", path)\r\n .style('fill', (d: any) => {\r\n const geometry = component.state.usMapData.objects.states.geometries.find((geo: any) => geo.id === d.id);\r\n const colorNumber = +this.getPathDataBasedOnMapData(geometry)![0];\r\n return color(colorNumber);\r\n })\r\n .append('svg:title')\r\n .text((d: any) => {\r\n const geometry = this.state.usMapData.objects.states.geometries.find((geo: any) => geo.id === d.id);\r\n const text = this.getPathDataBasedOnMapData(geometry)![1]\r\n return text;\r\n })\r\n\r\n svg.append(\"path\")\r\n .datum(topojson.mesh(this.state.usMapData, this.state.usMapData.objects.states, (a: any, b: any) => a.id !== b.id))\r\n .attr(\"class\", \"names\")\r\n .attr(\"d\", path);\r\n\r\n this.setState({ loadingMap: false });\r\n }\r\n\r\n getPathDataBasedOnMapData = (geo: any) => {\r\n const { filterByData } = this.state;\r\n let colorNumber: Number = geo.downloads + geo.views;\r\n let tooltipText: string = `${geo.name}\\nViews: ${geo.views}\\nDownloads: ${geo.downloads}`;\r\n switch (filterByData) {\r\n case MapFilters.Views:\r\n colorNumber = geo.views;\r\n tooltipText = `${geo.name}\\nViews: ${geo.views}`;\r\n break;\r\n case MapFilters.Downloads:\r\n colorNumber = geo.downloads;\r\n tooltipText = `${geo.name}\\nDownloads: ${geo.downloads}`;\r\n break;\r\n default:\r\n break;\r\n }\r\n return [colorNumber.toString(), tooltipText];\r\n }\r\n\r\n async updateChartData() {\r\n const { chartViewing, filterChartYear, filterChartMonth } = this.state;\r\n\r\n\r\n var response = await MiscService.getProducerPayoutByYear(+this.state.filterChartYear);\r\n\r\n if (response != null) {\r\n this.massageProducerPayoutDate(response);\r\n }\r\n\r\n let filteredChartData = [...this.state.filteredChartData];\r\n let producerPayoutData = [...this.state.producerPayoutData];\r\n let monthData = [...this.state.monthData];\r\n let totalChart = 0;\r\n\r\n switch (chartViewing) {\r\n case ChartViewingTypes.Year:\r\n filteredChartData = producerPayoutData.filter(data => data.year === filterChartYear);\r\n break;\r\n case ChartViewingTypes.Month:\r\n filteredChartData = producerPayoutData.filter(data => data.year === filterChartYear && Months[data.month] === filterChartMonth);\r\n monthData = [{\r\n name: 'Media',\r\n total: filteredChartData[0].salesFromMedia\r\n },\r\n {\r\n name: 'Sermon Series Kit',\r\n total: filteredChartData[0].salesFromSSK\r\n },\r\n {\r\n name: 'Revenue Share',\r\n total: filteredChartData[0].revenueShare\r\n }];\r\n break;\r\n }\r\n\r\n filteredChartData.map(s => {\r\n if (s.total) {\r\n totalChart += s.total\r\n }\r\n });\r\n\r\n this.setState({ filteredChartData, monthData, totalChart });\r\n }\r\n\r\n onYearBarClick = (e: any) => {\r\n if (!e) {\r\n return;\r\n }\r\n var month = e.activeLabel;\r\n if (!e.activeLabel) {\r\n return;\r\n }\r\n\r\n let letMonthsString : string = Months[Months[month]];\r\n let typedMonthsString: keyof typeof Months = letMonthsString as keyof typeof Months;\r\n let typedAsMonths : Months = Months[typedMonthsString];\r\n\r\n this.setState({ chartViewing: ChartViewingTypes.Month, filterChartMonth: typedAsMonths, anchorChartMenu: undefined }, () => this.updateChartData())\r\n\r\n }\r\n\r\n renderProducerPayoutCard() {\r\n var classes = this.props.classes;\r\n var { filteredChartData, anchorChartMenu, chartViewing, anchorChartYearMenu, anchorChartMonthMenu, filterChartYear, filterChartMonth, monthData, totalChart } = this.state;\r\n\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n \r\n {chartViewing === ChartViewingTypes.Month && `${Months[filterChartMonth].toString()}, `}{filterChartYear} Producer Payout\r\n \r\n \r\n Total: $\r\n \r\n
\r\n
\r\n \r\n this.setState({ anchorChartMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(ChartViewingTypes).map(viewing => {\r\n return (\r\n this.setState({ chartViewing: viewing as ChartViewingTypes, anchorChartMenu: undefined }, () => this.updateChartData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n this.setState({ anchorChartYearMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(ChartYears).filter(x => typeof x === \"number\").map(year => {\r\n return (\r\n this.setState({ filterChartYear: year as ChartYears, anchorChartYearMenu: undefined }, () => this.updateChartData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n {chartViewing === ChartViewingTypes.Month &&\r\n <>\r\n \r\n this.setState({ anchorChartMonthMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(Months).filter(x => typeof x === \"number\").map(month => {\r\n return (\r\n this.setState({ filterChartMonth: month as Months, anchorChartMonthMenu: undefined }, () => this.updateChartData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n {chartViewing === ChartViewingTypes.Year ?\r\n this.onYearBarClick(e)} barSize={60} barGap={30} className={classes.barChart} data={filteredChartData} margin={{ top: 20, right: 60, bottom: 20, left: 20 }}>\r\n \r\n \r\n `$${new Intl.NumberFormat('en').format(+value)}`} />\r\n `$${new Intl.NumberFormat('en').format(+value)}`} filterNull={true} />\r\n \r\n \r\n \r\n value > 0 ? `$${new Intl.NumberFormat('en').format(+value)}` : '', position: \"top\" }} />\r\n \r\n \r\n \r\n :\r\n monthData.every(month => month.total === null) ?\r\n
\r\n \r\n\r\n No Data for {Months[filterChartMonth].toString()}, {filterChartYear}.\r\n \r\n
\r\n :\r\n \r\n `${value.name}: $${new Intl.NumberFormat('en').format(+value.total)}`}\r\n outerRadius=\"80%\"\r\n innerRadius=\"50%\"\r\n dataKey=\"total\"\r\n >\r\n {\r\n monthData.map((entry, index) => )\r\n }\r\n \r\n \r\n `$${new Intl.NumberFormat('en').format(+value)}`} filterNull={true} />\r\n \r\n }\r\n\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderMapCard() {\r\n var classes = this.props.classes;\r\n var { anchorYearMenu, anchorMonthMenu, loadingMap, filterByMonth, filterByYear, anchorByData, filterByData, totalViews, totalDownloads } = this.state;\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n {Months[filterByMonth]}, {filterByYear}\r\n \r\n {(filterByData === MapFilters.All || filterByData === MapFilters.Views) &&\r\n \r\n Total views: \r\n \r\n }\r\n {(filterByData === MapFilters.All || filterByData === MapFilters.Downloads) &&\r\n \r\n Total downloads: \r\n \r\n }\r\n
\r\n
\r\n \r\n this.setState({ anchorByData: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(MapFilters).map(filter => {\r\n return (\r\n this.setState({ filterByData: filter, anchorByData: undefined }, async () => await this.getMapData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n this.setState({ anchorYearMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {years.map(year => {\r\n return (\r\n this.setState({ filterByYear: year, anchorYearMenu: undefined }, async () => await this.getMapData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n\r\n \r\n this.setState({ anchorMonthMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(Months).filter(x => typeof x === \"number\").map(month => {\r\n return (\r\n this.setState({ filterByMonth: month as Months, anchorMonthMenu: undefined }, async () => await this.getMapData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n\r\n
\r\n
\r\n {\r\n loadingMap &&\r\n
\r\n
\r\n
\r\n \r\n Loading Map...\r\n \r\n
\r\n }\r\n
\r\n { this.mapRef = input; }} />\r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n {/* {this.renderProducerPayoutCard()} */}\r\n {this.renderMapCard()}\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(MediaDashboard));\r\n","import Country from \"../entities/Country\";\r\nimport Sermon from \"../entities/Sermon\";\r\nimport SermonIllustration from \"../entities/SermonIllustration\";\r\nimport SermonSeries from \"../entities/SermonSeries\";\r\nimport USState from \"../entities/USState\";\r\nimport { ServerResponse, WebClient } from \"./ServiceHelper\";\r\n\r\nexport interface SermonRegionViewSummary {\r\n countryCode: string;\r\n endDate: Date;\r\n regionName: string;\r\n sermonId: number;\r\n startDate: Date;\r\n viewCount: number;\r\n}\r\n\r\nexport interface SermonIllustrationRegionViewSummary {\r\n countryCode: string;\r\n endDate: Date;\r\n regionName: string;\r\n sermonIllustrationId: number;\r\n startDate: Date;\r\n viewCount: number;\r\n}\r\n\r\nexport class ContributionsService {\r\n\r\n public static async getChurchServiceLanguages() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Contributions/GetChurchServiceLanguages\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonIllustrationCategories() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Contributions/GetSermonIllustrationCategories\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchServiceTargetAudiences() {\r\n\r\n var response = await WebClient.Get<{ id: number, name: string }[]>(\"api/Contributions/GetChurchServiceTargetAudiences\");\r\n if (ServerResponse.isServerResponse<{ id: number, name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonTypes() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Contributions/GetSermonTypes\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getCountries() {\r\n const response = await WebClient.Get(\"api/Contributions/GetCountries\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getUSStates() {\r\n const response = await WebClient.Get(\"api/Contributions/GetUSStates\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermons() {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermons\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermon(id: number) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermon/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonRegionViewSummaries(timeframe: string) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonRegionViewSummaries/\" + timeframe);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteSermon(sermonId: number, sermonSeriesId: number | undefined) {\r\n return WebClient.Delete(\"api/Contributions/DeleteSermon\", { sermonId, sermonSeriesId });\r\n }\r\n\r\n public static saveSermon(id: number | undefined, sermonSeriesId: number | undefined, sermonSeriesName: string, title: string, description: string, body: string, language: string, targetAudience: string, sermonType: string, topics: string[], scriptureReferences: string[]) {\r\n return WebClient.Post(\"api/Contributions/SaveSermon\", { id, sermonSeriesId, sermonSeriesName, title, description, body, language, targetAudience, sermonType, topics, scriptureReferences });\r\n }\r\n\r\n public static async getSermonIllustrations() {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonIllustrations\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonIllustration(id: number) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonIllustration/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonIllustrationRegionViewSummaries(timeframe: string) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonIllustrationRegionViewSummaries/\" + timeframe);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteSermonIllustration(sermonIllustrationId: number) {\r\n return WebClient.Delete(\"api/Contributions/DeleteSermonIllustration\", { sermonIllustrationId });\r\n }\r\n\r\n public static saveSermonIllustration(id: number | undefined, title: string, body: string, language: string, category: string, targetAudience: string, topics: string[], scriptureReferences: string[]) {\r\n return WebClient.Post(\"api/Contributions/SaveSermonIllustration\", { id, title, body, language, category, targetAudience, topics, scriptureReferences });\r\n }\r\n\r\n public static async getAllSermonSeries() {\r\n\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonSeries\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonSeries(id: number | undefined) {\r\n\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonSeries/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteSermonSeries(sermonSeriesId: number) {\r\n return WebClient.Delete(\"api/Contributions/DeleteSermonSeries\", { sermonSeriesId });\r\n }\r\n\r\n public static saveSermonSeries(id: number | undefined, title: string, summary: string, topics: string[], scriptureReferences: string[]) {\r\n return WebClient.Post(\"api/Contributions/SaveSermonSeries\", { id, title, summary, topics, scriptureReferences });\r\n }\r\n\r\n public static async getSermonSeriesSermons(id: number) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonSeriesSermons/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static addSermonSeriesSermon(sermonId: number, sermonSeriesId: number) {\r\n return WebClient.Post(\"api/Contributions/AddSermonSeriesSermon\", { sermonId, sermonSeriesId });\r\n }\r\n\r\n public static removeSermonSeriesSermon(sermonId: number, sermonSeriesId: number) {\r\n return WebClient.Delete(\"api/Contributions/RemoveSermonSeriesSermon\", { sermonId, sermonSeriesId });\r\n }\r\n\r\n public static updateSermonSeriesSermon(sermonId: number, sermonSeriesId: number, sortOrder: number) {\r\n return WebClient.Post(\"api/Contributions/UpdateSermonSeriesSermon\", { sermonId, sermonSeriesId, sortOrder });\r\n }\r\n}","import { ServerResponse, WebClient } from '../services/ServiceHelper';\r\nimport DownloadAndViewCountByRegion from '../entities/DownloadAndViewCountByRegion';\r\n\r\nexport class MediaProducerService {\r\n public static async GetMediaProducersDownloadsAndViewsCount(year: number, month: number) {\r\n const response = await WebClient.Get(`api/MediaProducer/GetMediaProducersDownloadsAndViewsCount/${year}/${month}`);\r\n if (ServerResponse.isSuccess(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}","import * as React from 'react';\r\nimport withRoot from '../withRoot';\r\n\r\ninterface Props {\r\n value: number;\r\n minDecimalPlaces: number;\r\n maxDecimalPlaces: number;\r\n}\r\n\r\ntype State = {\r\n currentValue: number;\r\n value: number;\r\n};\r\n\r\nclass AnimatedNumberLabel extends React.Component {\r\n\r\n intervalId: number = 0;\r\n incrementCount: number = 0;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n currentValue: props.value,\r\n value: props.value\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Props, prevState: State) {\r\n\r\n if (this.props.value !== prevProps.value) {\r\n\r\n this.incrementCount = 0;\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n this.intervalId = 0;\r\n }\r\n\r\n this.setState({ value: this.props.value, currentValue: prevProps.value }, () => {\r\n\r\n const incrementBy = (this.state.value - this.state.currentValue) / 10;\r\n this.intervalId = setInterval(() => {\r\n if (this.incrementCount < 9) {\r\n this.setState({ currentValue: this.state.currentValue + incrementBy });\r\n this.incrementCount++;\r\n }\r\n else {\r\n this.setState({ currentValue: this.state.value });\r\n clearInterval(this.intervalId);\r\n }\r\n }, 50) as unknown as number;\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n {this.state.currentValue.toLocaleString(undefined, { minimumFractionDigits: this.props.minDecimalPlaces, maximumFractionDigits: this.props.maxDecimalPlaces })}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(AnimatedNumberLabel);","import DiscussionNotification from '../entities/DiscussionNotification';\r\nimport Favorite from '../entities/Favorite';\r\nimport PrivateMessage from '../entities/PrivateMessage';\r\nimport SermonFolder from '../entities/SermonFolder';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\nimport { ProducerPayoutData } from '../pages/account/mediaDashboard';\r\n\r\nexport class MiscService {\r\n\r\n public static async getPrivateMessages() {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetPrivateMessages\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getDiscussionNotifications() {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetDiscussionNotifications\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static unsubscribeFromDiscussionNotification(id: number, type: string) {\r\n return WebClient.Delete(\"api/Misc/DeleteDiscussionNotification\", { id, type });\r\n }\r\n\r\n public static async getSermonFolders() {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetSermonFolders\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getFavorites(sermonFolderId: number) {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetFavorites/\" + sermonFolderId);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteSermonFolder(id: number) {\r\n return WebClient.Delete(\"api/Misc/DeleteSermonFolder\", { id });\r\n }\r\n\r\n public static async saveSermonFolder(id: number | undefined, name: string, notes: string) {\r\n\r\n return WebClient.Post(\"api/Misc/SaveSermonFolder\", { id, name, notes });\r\n }\r\n\r\n public static deleteFavorite(id: number) {\r\n return WebClient.Delete(\"api/Misc/DeleteFavorite\", { id });\r\n }\r\n\r\n public static async saveFavorite(id: number, sermonFolderId: number, sortOrder: number, notes: string) {\r\n\r\n return WebClient.Post(\"api/Misc/SaveFavorite\", { id, sermonFolderId, sortOrder, notes });\r\n }\r\n\r\n public static async getProducerPayoutByYear(year: number) {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetProducerPayout/\" + year);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}","export enum FreeProSubscriptionAccessStatus {\r\n Active = 0,\r\n Pending = 1,\r\n Expired = 2,\r\n Disabled = 3\r\n}\r\n\r\nexport default interface FreeProSubscriptionAccess {\r\n id: number;\r\n startDate?: Date;\r\n endDate?: Date;\r\n status: FreeProSubscriptionAccessStatus;\r\n dateDisabled?: Date;\r\n}","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Card from \"@material-ui/core/Card\";\r\nimport CardActions from \"@material-ui/core/CardActions\";\r\nimport CardContent from \"@material-ui/core/CardContent\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport { green } from \"@material-ui/core/colors\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport ExpansionPanel from \"@material-ui/core/ExpansionPanel\";\r\nimport ExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\r\nimport ExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\r\nimport Fab from \"@material-ui/core/Fab\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\r\nimport { Theme } from \"@material-ui/core/styles/createMuiTheme\";\r\nimport createStyles from \"@material-ui/core/styles/createStyles\";\r\nimport withStyles, { WithStyles } from \"@material-ui/core/styles/withStyles\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport AddIcon from \"@material-ui/icons/Add\";\r\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport CreditCardIcon from \"@material-ui/icons/CreditCard\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport AppConfig from \"../../entities/AppConfig\";\r\nimport ApplicationUser from \"../../entities/ApplicationUser\";\r\nimport Country from \"../../entities/Country\";\r\nimport CreditCard from \"../../entities/CreditCard\";\r\nimport { AccountService } from \"../../services/AccountService\";\r\nimport {\r\n FieldValidationError,\r\n ServerError,\r\n ServerModelValidationResponse,\r\n ServerResponse,\r\n} from \"../../services/ServiceHelper\";\r\nimport withRoot from \"../../withRoot\";\r\nimport {ProSubscriptionSourceType} from \"../../entities/ProSubscription\";\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n fab: {\r\n position: \"absolute\",\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing(),\r\n },\r\n header: {},\r\n title: {\r\n flex: \"0 0 auto\",\r\n },\r\n spacer: {\r\n flex: \"1 1 100%\",\r\n },\r\n ccTypeIcon: {\r\n width: \"40px !important\",\r\n height: \"40px !important\",\r\n color: theme.palette.text.secondary,\r\n marginRight: \"10px\",\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\",\r\n verticalAlign: \"top\",\r\n },\r\n cardStatus: {\r\n float: \"right\",\r\n },\r\n expansionCardStatus: {\r\n marginLeft: \"auto\",\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\",\r\n borderRadius: \"4px\",\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: \"nowrap\",\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n cardContainer: {\r\n width: \"100%\",\r\n },\r\n toolbar: {\r\n display: \"block\",\r\n padding: 0,\r\n },\r\n title: {\r\n float: \"left\",\r\n },\r\n },\r\n snackBarText: {\r\n overflow: \"hidden\",\r\n },\r\n addPaymentMethodDialogContent: {\r\n width: \"500px\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"auto\",\r\n },\r\n },\r\n tableCard: {\r\n display: \"inline-block\",\r\n fontSize: 14,\r\n verticalAlign: \"top\",\r\n paddingTop: 8,\r\n },\r\n tableExpiry: {\r\n padding: 0,\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n loading: boolean;\r\n creditCards: CreditCard[];\r\n visibleCreditCardCount: number;\r\n errors: FieldValidationError[];\r\n addCreditCardErrors: FieldValidationError[];\r\n editCreditCardErrors: FieldValidationError[];\r\n showAddPaymentMethodDialog: boolean;\r\n addPaymentMethodCardHolderName: string;\r\n addPaymentMethodCreditCardNumber: string;\r\n addPaymentMethodCreditCardSecurityCode: string;\r\n addPaymentMethodCreditCardExpirationMonth: string;\r\n addPaymentMethodCreditCardExpirationYear: string;\r\n addPaymentMethodCreditCardPostalCode: string;\r\n showUpdatePaymentMethodDialog: boolean;\r\n updatePaymentMethodId: string;\r\n updatePaymentMethodCreditCardSecurityCode: string;\r\n updatePaymentMethodCreditCardExpirationMonth: string;\r\n updatePaymentMethodCreditCardExpirationYear: string;\r\n updatePaymentMethodCreditCardPostalCode: string;\r\n showChangePreferenceDialog: boolean;\r\n defaultCardId: string;\r\n disableAction: boolean;\r\n successMessage?: string;\r\n showDeleteCardConfirmation: boolean;\r\n cardForDeletion?: CreditCard;\r\n hasPayPal: boolean;\r\n countries: Country[];\r\n showCountries: boolean;\r\n selectedCountryShortCode?: string;\r\n};\r\n\r\nclass PaymentMethods extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n creditCards: [],\r\n visibleCreditCardCount: 10,\r\n errors: [],\r\n addCreditCardErrors: [],\r\n editCreditCardErrors: [],\r\n showAddPaymentMethodDialog: false,\r\n addPaymentMethodCardHolderName: \"\",\r\n addPaymentMethodCreditCardExpirationMonth: \"\",\r\n addPaymentMethodCreditCardExpirationYear: \"\",\r\n addPaymentMethodCreditCardNumber: \"\",\r\n addPaymentMethodCreditCardPostalCode: \"\",\r\n addPaymentMethodCreditCardSecurityCode: \"\",\r\n showUpdatePaymentMethodDialog: false,\r\n updatePaymentMethodId: \"\",\r\n updatePaymentMethodCreditCardExpirationMonth: \"\",\r\n updatePaymentMethodCreditCardExpirationYear: \"\",\r\n updatePaymentMethodCreditCardPostalCode: \"\",\r\n updatePaymentMethodCreditCardSecurityCode: \"\",\r\n showChangePreferenceDialog: false,\r\n defaultCardId: \"\",\r\n disableAction: false,\r\n showDeleteCardConfirmation: false,\r\n hasPayPal: false,\r\n countries: [],\r\n showCountries: false,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Payment Methods\";\r\n\r\n try {\r\n const responses = await Promise.all([\r\n AccountService.getCreditCards(),\r\n AccountService.hasPayPal(),\r\n AccountService.getCountries(),\r\n ]);\r\n\r\n const [creditCards, hasPayPal, countries] = responses;\r\n this.setState({ loading: false });\r\n\r\n if (creditCards) {\r\n let defaultCard = creditCards.find((cc) => cc.useCardByDefault);\r\n this.setState({\r\n creditCards,\r\n hasPayPal: hasPayPal === true,\r\n loading: false,\r\n defaultCardId: defaultCard ? defaultCard.id : \"\",\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError] });\r\n }\r\n\r\n if (countries) {\r\n this.setState({\r\n countries: countries.data,\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"Unable to retrieve location. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError] });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n sortCreditCards(s1: CreditCard, s2: CreditCard): number {\r\n if (!s1.expirationYear) {\r\n return -1;\r\n }\r\n\r\n if (!s2.expirationYear) {\r\n return 1;\r\n }\r\n\r\n if (s1.expirationYear > s2.expirationYear) {\r\n return -1;\r\n }\r\n\r\n if (s2.expirationYear > s1.expirationYear) {\r\n return 1;\r\n }\r\n\r\n if (!s1.expirationMonth) {\r\n return -1;\r\n }\r\n\r\n if (!s2.expirationMonth) {\r\n return 1;\r\n }\r\n\r\n if (s1.expirationMonth > s2.expirationMonth) {\r\n return -1;\r\n }\r\n\r\n if (s2.expirationMonth > s1.expirationMonth) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n getFontAwesomePaymentMethodType(type: string): IconProp {\r\n if (type === \"AmericanExpress\") {\r\n return [\"fab\", \"cc-amex\"];\r\n } else if (type === \"Discover\") {\r\n return [\"fab\", \"cc-discover\"];\r\n } else if (type === \"MasterCard\") {\r\n return [\"fab\", \"cc-mastercard\"];\r\n } else if (type === \"Visa\") {\r\n return [\"fab\", \"cc-visa\"];\r\n } else if (type === \"PayPal\") {\r\n return [\"fab\", \"cc-paypal\"];\r\n } else {\r\n return [\"fas\", \"credit-card\"];\r\n }\r\n }\r\n\r\n handleAddPaymentMethodFormSubmit = async (\r\n e: React.FormEvent\r\n ) => {\r\n e.preventDefault();\r\n\r\n this.setState({\r\n disableAction: true,\r\n errors: [],\r\n addCreditCardErrors: [],\r\n editCreditCardErrors: [],\r\n });\r\n\r\n try {\r\n const response = await AccountService.addPaymentMethod(\r\n this.props.config,\r\n this.state.addPaymentMethodCardHolderName,\r\n this.state.addPaymentMethodCreditCardNumber,\r\n this.state.addPaymentMethodCreditCardExpirationMonth,\r\n this.state.addPaymentMethodCreditCardExpirationYear,\r\n this.state.addPaymentMethodCreditCardSecurityCode,\r\n this.state.addPaymentMethodCreditCardPostalCode,\r\n this.state.selectedCountryShortCode\r\n );\r\n this.setState({ disableAction: false });\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n let newCard = response.data;\r\n\r\n this.setState({\r\n creditCards: [...this.state.creditCards, newCard],\r\n showAddPaymentMethodDialog: false,\r\n disableAction: false,\r\n addPaymentMethodCardHolderName: \"\",\r\n addPaymentMethodCreditCardNumber: \"\",\r\n addPaymentMethodCreditCardExpirationMonth: \"\",\r\n addPaymentMethodCreditCardExpirationYear: \"\",\r\n addPaymentMethodCreditCardPostalCode: \"\",\r\n addPaymentMethodCreditCardSecurityCode: \"\",\r\n selectedCountryShortCode: undefined,\r\n successMessage: `New ${newCard.type} added.`,\r\n });\r\n } else if (ServerError.isServerError(response)) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [response.message],\r\n };\r\n this.setState({\r\n addCreditCardErrors: [serverError],\r\n });\r\n } else if (ServerResponse.isModelValidation(response)) {\r\n if (response.errors.findIndex((a) => a.field === \"PostalCode\") > -1) {\r\n this.setState({ showCountries: true });\r\n }\r\n this.setState({\r\n errors: response.errors,\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showAddPaymentMethodDialog: false,\r\n });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showAddPaymentMethodDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n };\r\n\r\n handleUpdatePaymentMethodFormSubmit = async (\r\n e: React.FormEvent\r\n ) => {\r\n e.preventDefault();\r\n\r\n this.setState({\r\n disableAction: true,\r\n errors: [],\r\n addCreditCardErrors: [],\r\n editCreditCardErrors: [],\r\n });\r\n\r\n try {\r\n const response = await AccountService.updatePaymentMethod(\r\n this.props.config,\r\n this.state.updatePaymentMethodId,\r\n this.state.updatePaymentMethodCreditCardExpirationMonth,\r\n this.state.updatePaymentMethodCreditCardExpirationYear,\r\n this.state.updatePaymentMethodCreditCardSecurityCode,\r\n this.state.updatePaymentMethodCreditCardPostalCode,\r\n this.state.selectedCountryShortCode\r\n );\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n let updatedCard = response.data;\r\n\r\n const creditCards = this.state.creditCards.map((c) => {\r\n if (c.id === updatedCard.id) {\r\n return updatedCard;\r\n }\r\n return updatedCard;\r\n });\r\n\r\n this.setState({\r\n creditCards,\r\n showUpdatePaymentMethodDialog: false,\r\n disableAction: false,\r\n updatePaymentMethodId: \"\",\r\n updatePaymentMethodCreditCardExpirationMonth: \"\",\r\n updatePaymentMethodCreditCardExpirationYear: \"\",\r\n updatePaymentMethodCreditCardPostalCode: \"\",\r\n updatePaymentMethodCreditCardSecurityCode: \"\",\r\n selectedCountryShortCode: undefined,\r\n successMessage: `Updated ${updatedCard.type}.`,\r\n });\r\n } else if (ServerResponse.isModelValidation(response)) {\r\n if (response.errors.findIndex((a) => a.field === \"PostalCode\") > -1) {\r\n this.setState({ showCountries: true });\r\n }\r\n this.setState({\r\n errors: response.errors,\r\n disableAction: false,\r\n });\r\n } else if (\r\n ServerModelValidationResponse.isServerModelValidationResponse(response)\r\n ) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError], disableAction: false });\r\n } else {\r\n this.setState({ errors: response.errors, disableAction: false });\r\n }\r\n } else if (ServerError.isServerError(response)) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [response.message],\r\n };\r\n this.setState({\r\n editCreditCardErrors: [serverError],\r\n disableAction: false,\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showUpdatePaymentMethodDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showUpdatePaymentMethodDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n };\r\n\r\n handleUpdateDefaultPaymentMethod = async (\r\n e: React.FormEvent\r\n ) => {\r\n e.preventDefault();\r\n\r\n if (this.state.defaultCardId.length === 0) {\r\n return;\r\n }\r\n\r\n this.setState({ disableAction: true });\r\n\r\n try {\r\n const creditCards = await AccountService.changeDefaultCreditCard(\r\n this.state.defaultCardId\r\n );\r\n\r\n if (creditCards) {\r\n var defaultCard = creditCards.find((cc) => cc.useCardByDefault);\r\n this.setState({\r\n creditCards,\r\n showChangePreferenceDialog: false,\r\n defaultCardId: defaultCard ? defaultCard.id : \"\",\r\n disableAction: false,\r\n successMessage: \"Default card updated.\",\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showChangePreferenceDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showChangePreferenceDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n };\r\n\r\n handleDeleteCardMethod = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (\r\n !this.state.cardForDeletion ||\r\n this.state.cardForDeletion.useCardByDefault\r\n || this.state.disableAction\r\n ) {\r\n return;\r\n }\r\n\r\n this.setState({ disableAction: true });\r\n\r\n try {\r\n const creditCards = await AccountService.deleteCreditCard(\r\n this.state.cardForDeletion.id\r\n );\r\n\r\n if (creditCards) {\r\n var defaultCard = creditCards.find((cc) => cc.useCardByDefault);\r\n this.setState({\r\n creditCards,\r\n showDeleteCardConfirmation: false,\r\n defaultCardId: defaultCard ? defaultCard.id : \"\",\r\n disableAction: false,\r\n successMessage: \"Credit card deleted\",\r\n cardForDeletion: undefined,\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showDeleteCardConfirmation: false,\r\n disableAction: false,\r\n cardForDeletion: undefined,\r\n });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showDeleteCardConfirmation: false,\r\n disableAction: false,\r\n cardForDeletion: undefined,\r\n });\r\n }\r\n };\r\n\r\n renderPreferences(sortedCreditCards: CreditCard[]) {\r\n \r\n const classes = this.props.classes;\r\n\r\n if (sortedCreditCards.length === 0) {\r\n return (\r\n \r\n {\" \"}\r\n You do not have any cards on file{\" \"}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Card\r\n \r\n Default\r\n \r\n \r\n \r\n {sortedCreditCards.map((creditCard) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {creditCard.type} ending in {creditCard.lastFour}\r\n \r\n \r\n \r\n \r\n \r\n {creditCard.expirationMonth}/{creditCard.expirationYear}\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ defaultCardId: creditCard.id })\r\n }\r\n />\r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n \r\n const classes = this.props.classes;\r\n const sortedCreditCards = this.state.creditCards.sort(this.sortCreditCards);\r\n var defaultCreditCard = this.state.creditCards.find(\r\n (cc) => cc.useCardByDefault\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n }\r\n action={[\r\n \r\n this.setState({\r\n errors: this.state.errors.filter((a) => a.field !== \"\"),\r\n })\r\n }\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n this.setState({ successMessage: undefined })}\r\n >\r\n \r\n \r\n {this.state.successMessage ? this.state.successMessage : \"\"}\r\n \r\n }\r\n action={[\r\n this.setState({ successMessage: undefined })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Payment Methods\r\n \r\n {!this.state.loading && this.state.creditCards.length > 0 && (\r\n \r\n {this.state.creditCards.length} payment method\r\n {this.state.creditCards.length === 1 ? \"\" : \"s\"}\r\n \r\n )}\r\n
\r\n
\r\n \r\n\r\n \r\n {this.state.loading ? (\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n ) : (\r\n <>\r\n {(this.props.user.isGlooLogin && this.props.user.proSubscription?.source === ProSubscriptionSourceType.Gloo) &&\r\n \r\n Visit Gloo for your Gloo PRO payment method.\r\n \r\n }\r\n {this.state.hasPayPal ? (\r\n <>\r\n \r\n Your payment method\r\n \r\n (Manage)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Paying with PayPal\r\n \r\n \r\n Expires: Never\r\n \r\n {this.props.user.proSubscription &&\r\n this.props.user.proSubscription.nextBillDate && (\r\n \r\n \r\n Disclaimer: If you cancel your subscription, you\r\n will still be able to access it until{\" \"}\r\n {new Date(\r\n this.props.user.proSubscription.nextBillDate\r\n ).toLocaleDateString()}\r\n .\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n Manage\r\n \r\n
\r\n
\r\n
\r\n \r\n ) : (\r\n <>\r\n {this.state.creditCards.length === 0 && (\r\n \r\n \r\n
\r\n You have no credit cards. Add one below.\r\n \r\n )}\r\n {sortedCreditCards.length > 0 && (\r\n \r\n {defaultCreditCard && (\r\n \r\n \r\n Your default payment method\r\n {\r\n e.preventDefault();\r\n this.setState({\r\n showChangePreferenceDialog: true,\r\n });\r\n }}\r\n >\r\n (change preference)\r\n \r\n \r\n \r\n \r\n \r\n \r\n {defaultCreditCard.type} ending in{\" \"}\r\n {defaultCreditCard.lastFour}\r\n \r\n \r\n {defaultCreditCard.expirationMonth}/\r\n {defaultCreditCard.expirationYear}\r\n \r\n \r\n \r\n \r\n Name on Card\r\n
\r\n {defaultCreditCard.cardHolderName}\r\n
\r\n
\r\n \r\n \r\n Postal Code\r\n
\r\n {defaultCreditCard.postalCode}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n this.setState({\r\n updatePaymentMethodId:\r\n defaultCreditCard!.id,\r\n showUpdatePaymentMethodDialog: true,\r\n })\r\n }\r\n >\r\n Edit\r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n {sortedCreditCards\r\n .filter((cc) => !cc.useCardByDefault)\r\n .map((creditCard) => (\r\n \r\n }\r\n >\r\n \r\n \r\n {creditCard.type} ending in{\" \"}\r\n {creditCard.lastFour}\r\n \r\n \r\n {creditCard.expirationMonth}/\r\n {creditCard.expirationYear}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Name on Card\r\n
\r\n {creditCard.cardHolderName}\r\n
\r\n
\r\n \r\n \r\n Postal Code\r\n
\r\n {creditCard.postalCode}\r\n
\r\n
\r\n \r\n \r\n this.setState({\r\n showDeleteCardConfirmation: true,\r\n cardForDeletion: creditCard,\r\n })\r\n }\r\n color=\"secondary\"\r\n style={{\r\n marginLeft: \"-10px\",\r\n marginTop: \"20px\",\r\n marginBottom: \"-15px\",\r\n }}\r\n >\r\n Remove\r\n \r\n \r\n \r\n \r\n this.setState({\r\n updatePaymentMethodId: creditCard.id,\r\n showUpdatePaymentMethodDialog: true,\r\n })\r\n }\r\n >\r\n Edit\r\n \r\n \r\n
\r\n
\r\n \r\n ))}\r\n
\r\n )}\r\n \r\n )}\r\n \r\n )}\r\n
\r\n {!this.state.hasPayPal && !this.state.loading && (\r\n this.setState({ showAddPaymentMethodDialog: true })}\r\n >\r\n \r\n Add Payment Method\r\n \r\n )}\r\n \r\n this.setState({\r\n showAddPaymentMethodDialog:\r\n !this.state.showAddPaymentMethodDialog,\r\n })\r\n }\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleAddPaymentMethodFormSubmit(e)}>\r\n \r\n Add a new credit card\r\n \r\n \r\n {this.state.addCreditCardErrors.length > 0 && (\r\n \r\n )}\r\n\r\n \r\n this.setState({\r\n addPaymentMethodCardHolderName: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CardHolderName\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n this.setState({\r\n addPaymentMethodCreditCardNumber: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardNumber\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n\r\n \r\n \r\n \r\n \r\n Expiration Month\r\n \r\n \r\n this.setState({\r\n addPaymentMethodCreditCardExpirationMonth: e.target\r\n .value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Expiration Year\r\n \r\n \r\n this.setState({\r\n addPaymentMethodCreditCardExpirationYear: e.target\r\n .value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n this.setState({\r\n addPaymentMethodCreditCardSecurityCode: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardSecurityCode\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n this.setState({\r\n addPaymentMethodCreditCardPostalCode: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardPostalCode\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n \r\n {this.state.showCountries && (\r\n \r\n \r\n \r\n \r\n Country\r\n \r\n \r\n this.setState({\r\n selectedCountryShortCode: e.target.value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n {this.state.countries.map((c) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n this.setState({\r\n showAddPaymentMethodDialog:\r\n !this.state.showAddPaymentMethodDialog,\r\n })\r\n }\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n Add\r\n \r\n \r\n
\r\n \r\n \r\n this.setState({ showUpdatePaymentMethodDialog: false })\r\n }\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleUpdatePaymentMethodFormSubmit(e)}>\r\n Edit credit card\r\n \r\n {this.state.editCreditCardErrors.length > 0 && (\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n Expiration Month\r\n \r\n \r\n this.setState({\r\n updatePaymentMethodCreditCardExpirationMonth: e.target\r\n .value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Expiration Year\r\n \r\n \r\n this.setState({\r\n updatePaymentMethodCreditCardExpirationYear: e.target\r\n .value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n this.setState({\r\n updatePaymentMethodCreditCardSecurityCode:\r\n e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardSecurityCode\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n this.setState({\r\n updatePaymentMethodCreditCardPostalCode: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardPostalCode\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n \r\n {this.state.showCountries && (\r\n \r\n \r\n \r\n \r\n Country\r\n \r\n \r\n this.setState({\r\n selectedCountryShortCode: e.target.value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n {this.state.countries.map((c) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n this.setState({ showUpdatePaymentMethodDialog: false })\r\n }\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n Save\r\n \r\n \r\n \r\n \r\n this.setState({ showChangePreferenceDialog: false })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
\r\n \r\n {\"Change default payment preference\"}\r\n \r\n \r\n {this.renderPreferences(sortedCreditCards)}\r\n \r\n \r\n \r\n this.setState({ showChangePreferenceDialog: false })\r\n }\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n Update\r\n \r\n \r\n
\r\n \r\n \r\n this.setState({\r\n showDeleteCardConfirmation: false,\r\n cardForDeletion: undefined,\r\n })\r\n }\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
\r\n Confirm deletion\r\n \r\n \r\n This will remove the credit card from your account. Are you sure\r\n you wish to continue?\r\n \r\n \r\n \r\n \r\n this.setState({\r\n showDeleteCardConfirmation: false,\r\n cardForDeletion: undefined,\r\n })\r\n }\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n Confirm\r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(PaymentMethods));\r\n","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport CardMembershipIcon from '@material-ui/icons/CardMembership';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport FreeProSubscriptionAccess, { FreeProSubscriptionAccessStatus } from '../../entities/FreeProSubscriptionAccess';\r\nimport { AdminService } from '../../services/AdminService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n badState: {\r\n padding: theme.spacing() * 10\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n divider: {\r\n marginTop: theme.spacing(),\r\n marginBottom: theme.spacing(),\r\n },\r\n dateField: {\r\n width: '45%',\r\n margin: '10px'\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n cardContainer: {\r\n marginBottom: \"16px\",\r\n width: \"500px\",\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: '100%'\r\n },\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n items?: FreeProSubscriptionAccess[];\r\n selectedItemId?: number;\r\n showAddAccessDialog: boolean;\r\n addAccessStartDate: string;\r\n addAccessEndDate: string;\r\n showAddAccessSuccessMessage: boolean;\r\n showDisableDialog: boolean;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass FreeProAccess extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n showAddAccessDialog: false,\r\n addAccessStartDate: this.getDateFormatDisplay(new Date().toLocaleDateString()),\r\n addAccessEndDate: this.getDateFormatDisplay(new Date(new Date().setFullYear(new Date().getFullYear() + 1)).toLocaleDateString()),\r\n showAddAccessSuccessMessage: false,\r\n showDisableDialog: false,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Free PRO Access\";\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const items = await AdminService.getFreeProSubscriptionAccess();\r\n if (items) {\r\n this.setState({ errors: [], items: items, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n getDateFormatDisplay(dateString: string): string {\r\n\r\n const dateParts = dateString.split('/');\r\n // Clever pad start: https://stackoverflow.com/a/5366862\r\n return dateParts[2] + '-' + ('00' + dateParts[0]).substring(dateParts[0].length) + '-' + ('00' + dateParts[1]).substring(dateParts[1].length);\r\n }\r\n\r\n async disableFreeProAccess(id: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.disableFreeProSubscriptionAccess(id);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n items: response.data,\r\n enableSubmit: true,\r\n showDisableDialog: false\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDisableDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDisableDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDisableDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDisableDialog: false });\r\n }\r\n }\r\n\r\n async handleAddAccessFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.addAccessStartDate && this.state.addAccessEndDate) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.addFreeProSubscriptionAccess(this.state.addAccessStartDate, this.state.addAccessEndDate);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n items: response.data,\r\n enableSubmit: true,\r\n addAccessStartDate: this.getDateFormatDisplay(new Date().toLocaleDateString()),\r\n addAccessEndDate: this.getDateFormatDisplay(new Date(new Date().setFullYear(new Date().getFullYear() + 1)).toLocaleDateString()),\r\n showAddAccessDialog: false,\r\n showAddAccessSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddAccessDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showAddAccessDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddAccessDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddAccessDialog: false });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n if (!this.props.user.isAdmin || !this.props.user.inAdminImpersonationMode) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showAddAccessSuccessMessage: false })}\r\n >\r\n \r\n \r\n Free pro was successfully changed.\r\n }\r\n action={[\r\n this.setState({ showAddAccessSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n
\r\n \r\n \r\n Free PRO Access\r\n \r\n \r\n {!this.state.items &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {this.state.items && this.state.items.length === 0 &&\r\n \r\n \r\n
\r\n This user has not been given free PRO access. Add it below.\r\n
\r\n }\r\n {this.state.items && this.state.items.length > 0 &&\r\n \r\n {this.state.items.map(access => {\r\n return (\r\n \r\n \r\n \r\n {access.status === FreeProSubscriptionAccessStatus.Expired && 'Expired'}\r\n {access.status === FreeProSubscriptionAccessStatus.Pending && 'Pending'}\r\n {access.status === FreeProSubscriptionAccessStatus.Active && 'Active'}\r\n {access.status === FreeProSubscriptionAccessStatus.Disabled && 'Disabled'}\r\n \r\n \r\n Starts {access.startDate ? new Date(access.startDate).toLocaleDateString() : ''}\r\n \r\n \r\n Ends {access.endDate ? new Date(access.endDate).toLocaleDateString() : ''}\r\n \r\n \r\n \r\n
\r\n {(access.status === FreeProSubscriptionAccessStatus.Active || access.status === FreeProSubscriptionAccessStatus.Pending) &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n }\r\n
\r\n this.setState({ showAddAccessDialog: !this.state.showAddAccessDialog })}>\r\n \r\n \r\n this.setState({ showAddAccessDialog: !this.state.showAddAccessDialog })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleAddAccessFormSubmit(e)}>\r\n Add Free PRO Access\r\n \r\n Enter the date range that the user will be given free PRO access. All existing free PRO access that is active will be disabled.\r\n this.setState({ addAccessStartDate: e.target.value })}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n this.setState({ addAccessEndDate: e.target.value })}\r\n InputLabelProps={{\r\n shrink: true\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n this.setState({ showDisableDialog: !this.state.showDisableDialog })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n Disable Free PRO Access\r\n \r\n Are you sure you want to disable this free PRO access?\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(FreeProAccess));\r\n","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpward from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport { Redirect, RouteComponentProps } from \"react-router-dom\";\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport SearchResult from '../../entities/SearchResult';\r\nimport User from '../../entities/User';\r\nimport { AdminService } from '../../services/AdminService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: '100%'\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles, RouteComponentProps {\r\n user: ApplicationUser;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n anchorSort: undefined;\r\n enableSubmit: boolean;\r\n queryText: string;\r\n skip: number;\r\n take: number;\r\n orderBy: string;\r\n sortOrder: string;\r\n searchResult?: SearchResult;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass Impersonate extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n anchorSort: undefined,\r\n enableSubmit: true,\r\n queryText: '',\r\n skip: 0,\r\n take: 10,\r\n orderBy: 'UserId',\r\n sortOrder: 'Descending',\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Impersonate User\";\r\n await this.search();\r\n }\r\n\r\n async handleSearchFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n await this.search();\r\n }\r\n\r\n async impersonate(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.impersonate(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.props.history.push('/');\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async search() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n\r\n const searchResult = await AdminService.searchUsers(this.state.queryText, this.state.skip, this.state.take, this.state.orderBy, this.state.sortOrder);\r\n if (searchResult) {\r\n this.setState({ errors: [], searchResult: searchResult, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Ascending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy: orderBy, sortOrder: sortOrder }, this.search);\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n if (!match) {\r\n return text;\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n if (!this.props.user.isAdmin || this.props.user.inAdminImpersonationMode) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n
\r\n \r\n Impersonate User\r\n \r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('UserId')}>\r\n \r\n {this.state.orderBy === 'UserId' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('FirstName')}>\r\n \r\n {this.state.orderBy === 'FirstName' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('LastName')}>\r\n \r\n {this.state.orderBy === 'LastName' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Email')}>\r\n \r\n {this.state.orderBy === 'Email' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('DateCreated')}>\r\n \r\n {this.state.orderBy === 'DateCreated' ? : }\r\n \r\n \r\n \r\n\r\n \r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Ascending' ? : }\r\n \r\n
\r\n
\r\n
this.handleSearchFormSubmit(e)}>\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value })}\r\n />\r\n \r\n
\r\n \r\n\r\n \r\n\r\n {!this.state.searchResult &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n\r\n {this.state.searchResult && this.state.searchResult.items.length === 0 &&\r\n \r\n \r\n
\r\n No results found. Try another query.\r\n
\r\n }\r\n\r\n {this.state.searchResult && this.state.searchResult.items.length > 0 && this.state.searchResult.items.map(item =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n Member since {new Date(item.dateCreated).toLocaleDateString()}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n\r\n
\r\n\r\n {this.state.searchResult && this.state.searchResult.items.length > 0 &&\r\n this.setState({ skip: Math.round(page * this.state.take) }, this.search)}\r\n onChangeRowsPerPage={(e) => this.setState({ take: parseInt(e.target.value, 10) }, this.search)}\r\n />\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Impersonate));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport NoteIcon from '@material-ui/icons/Note';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport AdministratorNote from '../../entities/AdministratorNote';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { AdminService } from '../../services/AdminService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n },\r\n addNoteDialog: {\r\n minWidth: '400px'\r\n },\r\n card: {\r\n width: '500px',\r\n marginBottom: \"16px\"\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n card: {\r\n width: '100%'\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n queryText: string;\r\n addNoteText: string;\r\n showAddNoteDialog: boolean;\r\n errors: FieldValidationError[];\r\n notes: AdministratorNote[];\r\n visibleNotes: AdministratorNote[];\r\n};\r\n\r\nclass Notes extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n queryText: '',\r\n addNoteText: '',\r\n showAddNoteDialog: false,\r\n errors: [],\r\n notes: [],\r\n visibleNotes: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Admin Notes\";\r\n\r\n try {\r\n const notes = await AdminService.getAdministratorNotes();\r\n\r\n if (notes) {\r\n this.setState({ errors: [], loading: false, notes: notes, visibleNotes: notes });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n search() {\r\n\r\n let notes = this.state.notes.filter(n => n.text.search(new RegExp(this.state.queryText, \"i\")) >= 0);\r\n\r\n this.setState({ visibleNotes: notes });\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n if (!match) {\r\n return text;\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n handleAddNoteFormSubmit = async (e: React.FormEvent) => {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.addNoteText) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.addAdministratorNote(this.state.addNoteText);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let notes = this.state.notes;\r\n notes.unshift(response.data);\r\n this.setState({ errors: [], notes: notes, visibleNotes: notes, queryText: '', addNoteText: '', enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n if (!this.props.user.isAdmin || !this.props.user.inAdminImpersonationMode) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n
\r\n \r\n Admin Notes\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value }, this.search)}\r\n />\r\n
\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.notes.length === 0 &&\r\n \r\n \r\n
\r\n This user has no notes. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.notes.length > 0 && this.state.queryText && this.state.visibleNotes.length === 0 &&\r\n \r\n \r\n
\r\n No results found. Try another query.\r\n
\r\n }\r\n {!this.state.loading && this.state.visibleNotes.length > 0 && this.state.visibleNotes.map(n =>\r\n \r\n \r\n \r\n Added on {new Date(n.date).toLocaleDateString()}\r\n \r\n '), this.state.queryText) }} />\r\n \r\n \r\n )}\r\n
\r\n this.setState({ showAddNoteDialog: !this.state.showAddNoteDialog })}>\r\n \r\n \r\n\r\n this.setState({ showAddNoteDialog: !this.state.showAddNoteDialog })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleAddNoteFormSubmit(e)}>\r\n Add a new User Note\r\n \r\n this.setState({ addNoteText: e.target.value })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Notes));","import Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { Link, Redirect, RouteComponentProps } from 'react-router-dom';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport Logo from '../../resources/logo.png';\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\nimport { FieldValidationError, ServerError, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n forgotPasswordContainer: {\r\n height: '100vh',\r\n },\r\n forgotPasswordPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px'\r\n },\r\n submitButtonMobile: {\r\n margin: '20px 0px 70px 0px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n forgotPasswordPaper: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles, RouteComponentProps {\r\n user: ApplicationUser | null;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n email: string;\r\n errors: Array;\r\n};\r\n\r\nclass ForgotPassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n email: '',\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Forgot Password\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.email) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AuthenticationService.sendResetPasswordEmail(this.state.email);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.history.push(\"/auth/forgot-password/success\");\r\n }\r\n else if (ServerError.isServerError(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Forgot Your Password?\r\n Enter your email address and we will send you an email with a link to reset your password.\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ email: e.target.value })}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ForgotPassword));","import Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport * as React from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport Logo from '../../resources/logo.png';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n forgotPasswordContainer: {\r\n height: '100vh',\r\n },\r\n forgotPasswordPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px',\r\n marginTop: '50px',\r\n marginBottom: '50px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n forgotPasswordPaper: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser | null;\r\n}\r\n\r\nclass ForgotPasswordSuccess extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Forgot Password\";\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Reset Password Link Sent\r\n Check your email for a link to reset your password.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ForgotPasswordSuccess));","import * as React from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../../withRoot';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\n\r\nimport { FieldValidationError, ServerResponse, ServerModelValidationResponse } from '../../services/ServiceHelper';\r\n\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\n\r\nimport Newsletter from '../../entities/Newsletter';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\n\r\nimport Logo from '../../resources/logo.png';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n registerContainer: {\r\n height: '100vh'\r\n },\r\n registerPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px'\r\n },\r\n submitButtonMobile: {\r\n margin: '20px 0px 70px 0px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n registerPaper: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser | null;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n password: string;\r\n newsletters: Newsletter[];\r\n selectedNewsletterIds: number[];\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass Register extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n password: '',\r\n newsletters: [],\r\n selectedNewsletterIds: [],\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Register\";\r\n\r\n try {\r\n var newsletters = await AuthenticationService.getSignUpNewsletters();\r\n this.setState({ newsletters: newsletters, selectedNewsletterIds: newsletters.map(n => n.id) });\r\n }\r\n catch {\r\n // Not exactly catastrophic that they can't sign up for a newsletter, so ignore error\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.firstName && this.state.lastName && this.state.email && this.state.password) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AuthenticationService.register(this.state.firstName, this.state.lastName, this.state.email, this.state.password, this.state.selectedNewsletterIds);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n toggleNewsletterSelection = (id: number) => {\r\n\r\n var selectedList: number[] = this.state.selectedNewsletterIds;\r\n var index = selectedList.indexOf(id);\r\n\r\n if (index < 0) {\r\n selectedList.push(id);\r\n } else {\r\n selectedList.splice(index, 1);\r\n }\r\n\r\n this.setState({\r\n selectedNewsletterIds: selectedList\r\n });\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Register\r\n Create a new SermonCentral account\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ firstName: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ lastName: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ email: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ password: e.target.value })}\r\n helperText={}\r\n />\r\n {this.state.newsletters.map(newsletter => {\r\n return (\r\n \r\n = 0}\r\n onChange={(e) => this.toggleNewsletterSelection(parseInt(e.target.value, 10))}\r\n value={newsletter.id.toString()}\r\n color=\"primary\"\r\n />\r\n }\r\n label={newsletter.name === 'Better Preaching Update' ? 'Sign up for the Better Preaching newsletter from SermonCentral.' : 'I\\'d like to receive promotional offers for ministry resources.'}\r\n />\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Register));","import * as React from 'react';\r\nimport { RouteComponentProps, Redirect } from 'react-router-dom';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../../withRoot';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\n\r\nimport { FieldValidationError, ServerResponse, ServerModelValidationResponse } from '../../services/ServiceHelper';\r\n\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\n\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\n\r\nimport Logo from '../../resources/logo.png';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n resetPasswordContainer: {\r\n height: '100vh'\r\n },\r\n resetPasswordPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px',\r\n marginBottom: '30px'\r\n },\r\n submitButtonMobile: {\r\n margin: '20px 0px 70px 0px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n textLink: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n resetPasswordPaper: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles, RouteComponentProps<{ email: string, code: string }> {\r\n user: ApplicationUser | null;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n email: string;\r\n encodedEmail: string;\r\n code: string;\r\n password: string;\r\n confirmPassword: string;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass ResetPassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n email: '',\r\n encodedEmail: props.match.params.email,\r\n code: props.match.params.code,\r\n password: '',\r\n confirmPassword: '',\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Reset password\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.email && this.state.password && this.state.confirmPassword) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AuthenticationService.resetPassword(this.state.email, this.state.password, this.state.confirmPassword, this.state.code);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Reset Password\r\n Confirm your email address and enter a new password to gain access to your account.\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ email: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ password: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ confirmPassword: e.target.value })}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ResetPassword));","import React from \"react\";\r\nimport { SvgIcon, SvgIconProps } from \"@material-ui/core\";\r\n\r\n\r\nexport function GlooIcon(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React from \"react\";\r\n\r\nimport { Button, makeStyles } from \"@material-ui/core\";\r\nimport { GlooIcon } from \"./GlooIcon\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n glooButton: {\r\n borderColor: '#41B768',\r\n borderRadius: 16,\r\n borderWidth: 2,\r\n color: '#41B768',\r\n fontFamily: 'poppins',\r\n fontSize: '1.1rem',\r\n minHeight: '50px',\r\n padding: '2px 0px',\r\n textTransform: 'none',\r\n },\r\n glooIcon: {\r\n transform: 'scale(3)',\r\n marginLeft: 28,\r\n marginRight: 24,\r\n },\r\n disabledLink: {\r\n pointerEvents: 'none',\r\n cursor: 'default',\r\n }\r\n}));\r\n\r\ninterface Props {\r\n url: string;\r\n disabled?: boolean;\r\n fullWidth?: boolean;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function GlooButton(props: Props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}","export enum SermonStatus {\r\n Pending = 1,\r\n Approved = 3,\r\n Rejected = 4,\r\n Deleted = 5\r\n}\r\n\r\nexport default interface Sermon {\r\n id: number;\r\n sermonSeriesId?: number;\r\n sermonSeriesName: string;\r\n title: string;\r\n intro: string;\r\n body: string;\r\n language: string;\r\n type: string;\r\n targetAudience: string;\r\n scriptures: string[];\r\n tags: string[];\r\n date: Date;\r\n status: SermonStatus;\r\n rating: number;\r\n ratingCount: number;\r\n views: number;\r\n url: string;\r\n rejectionNotes: string;\r\n}","import Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { Link, Redirect, RouteComponentProps } from 'react-router-dom';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport Logo from '../../resources/logo.png';\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { GlooButton } from '../../components/GlooButton';\r\nimport AppConfig, { AppConfigEnvironment } from '../../entities/AppConfig';\r\nimport { Box } from '@material-ui/core';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n signInContainer: {\r\n height: '100vh'\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px',\r\n minHeight: '50px',\r\n },\r\n submitButtonMobile: {\r\n marginTop: '20px',\r\n minHeight: '50px'\r\n },\r\n buttonContainer: {\r\n padding: '40px 0px 40px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n signInPaper: {\r\n padding: '0px 50px',\r\n [theme.breakpoints.down('xs')]: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n user: ApplicationUser | null;\r\n onSignIn: (user: ApplicationUser) => void;\r\n config: AppConfig;\r\n}\r\n\r\ntype State = {\r\n redirectToReferrer: boolean;\r\n enableSubmit: boolean,\r\n email: string;\r\n password: string;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass SignIn extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n redirectToReferrer: false,\r\n enableSubmit: true,\r\n email: '',\r\n password: '',\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Sign In\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.email && this.state.password) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AuthenticationService.signIn(this.state.email, this.state.password, false);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({ redirectToReferrer: true }, () => this.props.onSignIn(response.data));\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n let stateObject: any = this.props.location.state || { from: { pathname: \"/\" } };\r\n let from = stateObject.from;\r\n let { redirectToReferrer } = this.state;\r\n\r\n if (redirectToReferrer) {\r\n return ;\r\n }\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n const glooRedirectUrl = this.props.config.accountSiteUrl + from?.pathname;\r\n const glooUrl = this.props.config.mainSiteUrl + '/account/gloo/login?redirectUri=' + encodeURIComponent(glooRedirectUrl);\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Sign in\r\n to your SermonCentral account\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ email: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ password: e.target.value })}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SignIn));","export const ArrayHelper = {\r\n addString: (stringToAdd: string, stringArray: string[]): string[] => {\r\n let separatedStrings = stringToAdd.replace(/\\s\\s+/g, ' ').split(',').map(s => s.trim());\r\n\r\n let strings = [ ...stringArray];\r\n for (var i = 0; i < separatedStrings.length; i++) {\r\n\r\n const stringPart = separatedStrings[i];\r\n if (stringPart !== '' && !strings.some(s => s.toLowerCase() === stringPart.toLowerCase())) {\r\n strings.push(stringPart);\r\n }\r\n }\r\n return strings;\r\n },\r\n \r\n removeString: (stringToRemove: string, stringArray: string[]): string[] => {\r\n return stringArray.filter(s => s !== stringToRemove);\r\n }\r\n}","export enum SermonIllustrationStatus {\r\n Rejected = 0,\r\n Approved = 1,\r\n Pending = 3,\r\n Deleted = 4\r\n}\r\n\r\nexport default interface SermonIllustration {\r\n id: number;\r\n title: string;\r\n body: string;\r\n language: string;\r\n category: string;\r\n targetAudience: string;\r\n scriptures: string[];\r\n tags: string[];\r\n date: Date;\r\n status: SermonIllustrationStatus;\r\n rating: number;\r\n ratingCount: number;\r\n intro: string;\r\n views: number;\r\n url: string;\r\n rejectionNotes: string;\r\n}","import {Button, Chip, CircularProgress, Divider, FormControl, FormHelperText, IconButton, Input, InputAdornment, \r\n InputLabel, MenuItem, Paper, Select, Snackbar, SnackbarContent, Theme, createStyles, withStyles, WithStyles, TextField, Toolbar, Typography} from '@material-ui/core';\r\n\r\nimport green from '@material-ui/core/colors/green';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport Sermon, { SermonStatus } from '../../entities/Sermon';\r\nimport SermonSeries from '../../entities/SermonSeries';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { ArrayHelper } from '../../utilities/ArrayHelper';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '72vh',\r\n maxWidth: '900px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n chip: {\r\n margin: theme.spacing() / 2,\r\n color: \"#FFF\",\r\n backgroundColor: theme.palette.primary.light,\r\n \"& svg\": {\r\n color: \"rgb(255,255,255,.7)\",\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n }\r\n }\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n flexWrap: 'nowrap'\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n mainToolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n rejectionNotes: {\r\n paddingTop: 15\r\n },\r\n sermonSeriesTitle: {\r\n maxWidth: 801\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string }>, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n id?: number;\r\n originalSermonSeriesId?: number;\r\n sermonSeriesId?: number;\r\n originalSermonSeriesName: string;\r\n sermonSeriesName: string;\r\n title: string;\r\n intro: string;\r\n body: string;\r\n type: string;\r\n language: string;\r\n targetAudience: string;\r\n scriptures: string[];\r\n addScriptureReferenceText: string;\r\n tags: string[];\r\n addTopicText: string;\r\n date: Date;\r\n status: number;\r\n url: string;\r\n rejectionNotes?: string;\r\n updateSuccessMessage: string;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n languages: { name: string }[];\r\n types: { name: string }[];\r\n targetAudiences: { id: number, name: string }[];\r\n sermonSeries: SermonSeries[];\r\n}\r\n\r\nclass EditSermon extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n id: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n originalSermonSeriesId: undefined,\r\n sermonSeriesId: undefined,\r\n originalSermonSeriesName: '',\r\n sermonSeriesName: '',\r\n title: '',\r\n intro: '',\r\n body: '',\r\n type: 'Full Sermon',\r\n language: 'English',\r\n targetAudience: 'All',\r\n scriptures: [],\r\n addScriptureReferenceText: '',\r\n tags: [],\r\n addTopicText: '',\r\n date: new Date(),\r\n status: SermonStatus.Pending,\r\n url: '',\r\n updateSuccessMessage: '',\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n languages: [],\r\n types: [],\r\n targetAudiences: [],\r\n sermonSeries: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('sermonSeriesId')) {\r\n this.setState({ sermonSeriesId: parseInt(params.get('sermonSeriesId')!, 10) });\r\n }\r\n\r\n document.title = \"SermonCentral Account - Add Sermon\";\r\n\r\n if (this.state.id) {\r\n document.title = \"SermonCentral Account - Edit Sermon\";\r\n\r\n try {\r\n const sermon = await ContributionsService.getSermon(this.state.id);\r\n\r\n if (sermon) {\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n originalSermonSeriesId: sermon.sermonSeriesId,\r\n sermonSeriesId: sermon.sermonSeriesId,\r\n originalSermonSeriesName: sermon.sermonSeriesName,\r\n sermonSeriesName: sermon.sermonSeriesName,\r\n title: sermon.title,\r\n intro: sermon.intro,\r\n body: sermon.body,\r\n type: sermon.type,\r\n language: sermon.language,\r\n targetAudience: sermon.targetAudience,\r\n scriptures: sermon.scriptures,\r\n tags: sermon.tags,\r\n date: new Date(sermon.date),\r\n status: sermon.status,\r\n url: sermon.url,\r\n rejectionNotes: sermon.rejectionNotes\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false, enableSubmit: true });\r\n }\r\n\r\n // The following calls aren't necessary to use the interface, so if there are any errors, ignore them\r\n ContributionsService.getChurchServiceLanguages()\r\n .then(languages => this.setState({ languages: languages! }));\r\n\r\n ContributionsService.getSermonTypes()\r\n .then(types => this.setState({ types: types! }));\r\n\r\n ContributionsService.getChurchServiceTargetAudiences()\r\n .then(targetAudiences => this.setState({ targetAudiences: targetAudiences! }));\r\n\r\n ContributionsService.getAllSermonSeries()\r\n .then(sermonSeries => this.setState({ sermonSeries: sermonSeries! }));\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.title && this.state.intro && this.state.body) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const sermonSeriesId = this.state.sermonSeriesId === 0 ? undefined : this.state.sermonSeriesId;\r\n const sermonSeriesName = this.state.sermonSeriesId === 0 ? '' : this.state.sermonSeriesName;\r\n const response = await ContributionsService.saveSermon(this.state.id, sermonSeriesId, sermonSeriesName, this.state.title, this.state.intro, this.state.body, this.state.language, this.state.targetAudience, this.state.type, this.state.tags, this.state.scriptures);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n const sermon = response.data;\r\n\r\n document.title = \"SermonCentral Account - Edit Sermon\";\r\n this.props.history.replace(`/contributions/sermons/edit/${response.data.id}`);\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n id: sermon.id,\r\n originalSermonSeriesId: sermon.sermonSeriesId,\r\n sermonSeriesId: sermon.sermonSeriesId,\r\n originalSermonSeriesName: sermon.sermonSeriesName,\r\n sermonSeriesName: sermon.sermonSeriesName,\r\n title: sermon.title,\r\n intro: sermon.intro,\r\n body: sermon.body,\r\n type: sermon.type,\r\n language: sermon.language,\r\n targetAudience: sermon.targetAudience,\r\n scriptures: sermon.scriptures,\r\n tags: sermon.tags,\r\n date: new Date(sermon.date),\r\n status: sermon.status,\r\n url: sermon.url,\r\n updateSuccessMessage: response.message,\r\n showUpdateSuccessMessage: true,\r\n errors: []\r\n });\r\n\r\n // If the user added a new series, we need to reload list\r\n ContributionsService.getAllSermonSeries()\r\n .then(sermonSeries => this.setState({ sermonSeries: sermonSeries! }));\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true })\r\n ;\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n }\r\n\r\n addScriptureReference() {\r\n\r\n if (this.state.addScriptureReferenceText.length > 0) {\r\n const updatedScriptures = ArrayHelper.addString(this.state.addScriptureReferenceText, this.state.scriptures);\r\n this.setState({\r\n scriptures: updatedScriptures,\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n }\r\n\r\n removeScriptureReference(scriptureReference: string) {\r\n\r\n if (scriptureReference.length > 0) {\r\n\r\n let scriptures = ArrayHelper.removeString(scriptureReference, this.state.scriptures);\r\n this.setState({ scriptures });\r\n }\r\n }\r\n\r\n addTopic() {\r\n\r\n if (this.state.addTopicText.length > 0) {\r\n const updatedTags = ArrayHelper.addString(this.state.addTopicText, this.state.tags);\r\n this.setState({\r\n tags: updatedTags,\r\n addTopicText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addTopicText: ''\r\n });\r\n }\r\n }\r\n\r\n removeTopic(topic: string) {\r\n\r\n if (topic.length > 0) {\r\n let tags = ArrayHelper.removeString(topic, this.state.tags);\r\n this.setState({ tags });\r\n }\r\n }\r\n\r\n onSeriesChange(e: React.ChangeEvent) {\r\n if (parseInt(e.target.value, 10) === -1) {\r\n this.setState({ originalSermonSeriesId: this.state.sermonSeriesId, sermonSeriesName: '', sermonSeriesId: parseInt(e.target.value, 10) });\r\n }\r\n else {\r\n this.setState({ sermonSeriesId: parseInt(e.target.value, 10) });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n this.props.history.goBack()}>\r\n \r\n \r\n \r\n {this.state.id ? 'Edit' : 'Share a new'} Sermon\r\n \r\n {this.state.url &&\r\n \r\n }\r\n \r\n
this.handleFormSubmit(e)}>\r\n {!this.state.id &&\r\n \r\n Thank you for sharing your sermon, which will inspire others in the process of preaching.\r\n Please complete the following submission form to upload your sermon.\r\n \r\n }\r\n\r\n {this.state.sermonSeriesId === -1 &&\r\n \r\n this.setState({ sermonSeriesName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SermonSeriesTitle')}\r\n helperText={}\r\n />\r\n \r\n \r\n }\r\n\r\n {this.state.sermonSeriesId !== -1 && this.state.sermonSeries.length > 0 &&\r\n \r\n Sermon Series\r\n this.onSeriesChange(e as React.ChangeEvent)}\r\n inputProps={{\r\n name: 'sermonSeries',\r\n id: 'sermonSeries',\r\n }}\r\n >\r\n \r\n {this.state.sermonSeries.map(sermonSeries => {\r\n return (\r\n \r\n \r\n {sermonSeries.title}\r\n \r\n \r\n );\r\n })}\r\n \r\n Add to New Sermon Series\r\n \r\n \r\n \r\n }\r\n\r\n {this.state.sermonSeriesId !== -1 && this.state.sermonSeries.length === 0 &&\r\n this.setState({ sermonSeriesName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SermonSeriesId')}\r\n helperText={}\r\n />\r\n }\r\n\r\n this.setState({ title: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Title')}\r\n helperText={}\r\n />\r\n this.setState({ intro: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Description')}\r\n helperText={}\r\n />\r\n {this.state.types.length > 0 &&\r\n \r\n Type\r\n this.setState({ type: e.target.value as string })}\r\n inputProps={{\r\n name: 'type',\r\n id: 'type',\r\n }}\r\n >\r\n {this.state.types.map(type => {\r\n return (\r\n \r\n {type.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.types.length === 0 &&\r\n this.setState({ type: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Type')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.languages.length > 0 &&\r\n \r\n Language\r\n this.setState({ language: e.target.value as string })}\r\n inputProps={{\r\n name: 'language',\r\n id: 'language',\r\n }}\r\n >\r\n {this.state.languages.map(language => {\r\n return (\r\n \r\n {language.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.languages.length === 0 &&\r\n this.setState({ language: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Language')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.targetAudiences.length > 0 &&\r\n \r\n Target Audience\r\n this.setState({ targetAudience: e.target.value as string })}\r\n inputProps={{\r\n name: 'targetAudience',\r\n id: 'targetAudience',\r\n }}\r\n >\r\n {this.state.targetAudiences.map(targetAudience => {\r\n return (\r\n \r\n {targetAudience.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.targetAudiences.length === 0 &&\r\n this.setState({ targetAudience: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'TargetAudience')}\r\n helperText={}\r\n />\r\n }\r\n \r\n Scripture References (At least 1 scripture reference must be added)\r\n this.setState({ addScriptureReferenceText: e.currentTarget.value })}\r\n onBlur={() => this.addScriptureReference()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addScriptureReference();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addScriptureReference()}\r\n disabled={this.state.addScriptureReferenceText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addScriptureReference',\r\n id: 'addScriptureReference',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.scriptures.map(scriptureReference => {\r\n return (\r\n this.removeScriptureReference(scriptureReference)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n \r\n Topics (At least 2 topics must be added)\r\n this.setState({ addTopicText: e.currentTarget.value })}\r\n onBlur={() => this.addTopic()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addTopic();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addTopic()}\r\n disabled={this.state.addTopicText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addTopic',\r\n id: 'addTopic',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.tags.map(topic => {\r\n return (\r\n this.removeTopic(topic)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n this.setState({ body: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Body')}\r\n helperText={}\r\n />\r\n {this.state.rejectionNotes &&\r\n
\r\n Notes from your reviewer\r\n ') }} />\r\n
\r\n }\r\n {!this.state.id &&\r\n \r\n \r\n Your uploading of the above content to SermonCentral affirms it is your property, and you have appropriate permissions and rights to upload it. SermonCentral prohibits the posting of copyrighted material without proper and required permissions. If any portion of material is copyrighted please explicitly indicate it.\r\n \r\n
\r\n \r\n By clicking the submit button you are agreeing to the terms and conditions.\r\n \r\n
\r\n }\r\n \r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(EditSermon));","import {Button,Chip, CircularProgress, FormControl, FormHelperText, IconButton, Input, InputAdornment, InputLabel, MenuItem, \r\n Paper, Select, Snackbar, SnackbarContent, Theme, createStyles, withStyles, WithStyles, TextField, Toolbar, Typography} from '@material-ui/core';\r\n\r\nimport green from '@material-ui/core/colors/green';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport SermonIllustration, { SermonIllustrationStatus } from '../../entities/SermonIllustration';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { ArrayHelper } from '../../utilities/ArrayHelper';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '72vh',\r\n maxWidth: '900px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n chip: {\r\n margin: theme.spacing() / 2,\r\n color: \"#FFF\",\r\n backgroundColor: theme.palette.primary.light,\r\n \"& svg\": {\r\n color: \"rgb(255,255,255,.7)\",\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n }\r\n }\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n mainToolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n rejectionNotes: {\r\n paddingTop: 15\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string }>, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n id?: number;\r\n title: string;\r\n body: string;\r\n language: string;\r\n category: string;\r\n targetAudience: string;\r\n scriptures: string[];\r\n addScriptureReferenceText: string;\r\n tags: string[];\r\n addTopicText: string;\r\n date: Date;\r\n status: number;\r\n url: string;\r\n updateSuccessMessage: string;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n languages: { name: string }[];\r\n categories: { name: string }[];\r\n targetAudiences: { id: number, name: string }[];\r\n rejectionNotes?: string;\r\n}\r\n\r\nclass EditSermonIllustration extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n id: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n title: '',\r\n body: '',\r\n language: 'English',\r\n category: '',\r\n targetAudience: 'All',\r\n scriptures: [],\r\n addScriptureReferenceText: '',\r\n tags: [],\r\n addTopicText: '',\r\n date: new Date(),\r\n status: SermonIllustrationStatus.Pending,\r\n url: '',\r\n updateSuccessMessage: '',\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n languages: [],\r\n categories: [],\r\n targetAudiences: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Add Sermon Illustration\";\r\n\r\n if (this.state.id) {\r\n document.title = \"SermonCentral Account - Edit Sermon Illustration\";\r\n\r\n try {\r\n const sermonIllustration = await ContributionsService.getSermonIllustration(this.state.id);\r\n\r\n if (sermonIllustration) {\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n title: sermonIllustration.title,\r\n body: sermonIllustration.body,\r\n language: sermonIllustration.language,\r\n category: sermonIllustration.category,\r\n targetAudience: sermonIllustration.targetAudience,\r\n scriptures: sermonIllustration.scriptures,\r\n tags: sermonIllustration.tags,\r\n date: new Date(sermonIllustration.date),\r\n status: sermonIllustration.status,\r\n url: sermonIllustration.url,\r\n rejectionNotes: sermonIllustration.rejectionNotes\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false, enableSubmit: true });\r\n }\r\n\r\n // The following calls aren't necessary to use the interface, so if there are any errors, ignore them\r\n ContributionsService.getChurchServiceLanguages()\r\n .then(languages => this.setState({ languages: languages! }));\r\n\r\n ContributionsService.getSermonIllustrationCategories()\r\n .then(categories => this.setState({ categories: categories! }));\r\n\r\n ContributionsService.getChurchServiceTargetAudiences()\r\n .then(targetAudiences => this.setState({ targetAudiences: targetAudiences! }));\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.title && this.state.body) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ContributionsService.saveSermonIllustration(this.state.id, this.state.title, this.state.body, this.state.language, this.state.category, this.state.targetAudience, this.state.tags, this.state.scriptures);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n const sermonIllustration = response.data;\r\n\r\n document.title = \"SermonCentral Account - Edit Sermon Illustration\";\r\n this.props.history.replace(`/contributions/sermon-illustrations/edit/${response.data.id}`);\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n id: sermonIllustration.id,\r\n title: sermonIllustration.title,\r\n body: sermonIllustration.body,\r\n language: sermonIllustration.language,\r\n category: sermonIllustration.category,\r\n targetAudience: sermonIllustration.targetAudience,\r\n scriptures: sermonIllustration.scriptures,\r\n tags: sermonIllustration.tags,\r\n date: new Date(sermonIllustration.date),\r\n status: sermonIllustration.status,\r\n url: sermonIllustration.url,\r\n updateSuccessMessage: response.message,\r\n showUpdateSuccessMessage: true,\r\n errors: []\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n }\r\n addScriptureReference() {\r\n\r\n if (this.state.addScriptureReferenceText.length > 0) {\r\n const updatedScriptures = ArrayHelper.addString(this.state.addScriptureReferenceText, this.state.scriptures);\r\n this.setState({\r\n scriptures: updatedScriptures,\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n }\r\n\r\n removeScriptureReference(scriptureReference: string) {\r\n\r\n if (scriptureReference.length > 0) {\r\n\r\n let scriptures = ArrayHelper.removeString(scriptureReference, this.state.scriptures);\r\n this.setState({ scriptures });\r\n }\r\n }\r\n\r\n addTopic() {\r\n\r\n if (this.state.addTopicText.length > 0) {\r\n const updatedTags = ArrayHelper.addString(this.state.addTopicText, this.state.tags);\r\n this.setState({\r\n tags: updatedTags,\r\n addTopicText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addTopicText: ''\r\n });\r\n }\r\n }\r\n\r\n removeTopic(topic: string) {\r\n\r\n if (topic.length > 0) {\r\n let tags = ArrayHelper.removeString(topic, this.state.tags);\r\n this.setState({ tags });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n this.props.history.goBack()}>\r\n \r\n \r\n \r\n {this.state.id ? 'Edit' : 'Share a new'} Sermon Illustration\r\n \r\n {this.state.url &&\r\n \r\n }\r\n \r\n
this.handleFormSubmit(e)}>\r\n {!this.state.id &&\r\n \r\n Thank you for sharing your sermon illustration, which will inspire others in the process of preaching.\r\n Please complete the following submission form to upload your sermon illustration.\r\n \r\n }\r\n this.setState({ title: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Title')}\r\n helperText={}\r\n />\r\n {this.state.categories.length > 0 &&\r\n \r\n Category\r\n this.setState({ category: e.target.value as string })}\r\n inputProps={{\r\n name: 'category',\r\n id: 'category',\r\n }}\r\n >\r\n {this.state.categories.map(category => {\r\n return (\r\n \r\n {category.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.categories.length === 0 &&\r\n this.setState({ category: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Category')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.languages.length > 0 &&\r\n \r\n Language\r\n this.setState({ language: e.target.value as string })}\r\n inputProps={{\r\n name: 'language',\r\n id: 'language',\r\n }}\r\n >\r\n {this.state.languages.map(language => {\r\n return (\r\n \r\n {language.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.languages.length === 0 &&\r\n this.setState({ language: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Language')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.targetAudiences.length > 0 &&\r\n \r\n Target Audience\r\n this.setState({ targetAudience: e.target.value as string })}\r\n inputProps={{\r\n name: 'targetAudience',\r\n id: 'targetAudience',\r\n }}\r\n >\r\n {this.state.targetAudiences.map(targetAudience => {\r\n return (\r\n \r\n {targetAudience.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.targetAudiences.length === 0 &&\r\n this.setState({ targetAudience: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'TargetAudience')}\r\n helperText={}\r\n />\r\n }\r\n \r\n Scripture References (At least 1 scripture reference must be added)\r\n this.setState({ addScriptureReferenceText: e.currentTarget.value })}\r\n onBlur={() => this.addScriptureReference()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addScriptureReference();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addScriptureReference()}\r\n disabled={this.state.addScriptureReferenceText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addScriptureReference',\r\n id: 'addScriptureReference',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.scriptures.map(scriptureReference => {\r\n return (\r\n this.removeScriptureReference(scriptureReference)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n \r\n Topics (At least 2 topics must be added)\r\n this.setState({ addTopicText: e.currentTarget.value })}\r\n onBlur={() => this.addTopic()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addTopic();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addTopic()}\r\n disabled={this.state.addTopicText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addTopic',\r\n id: 'addTopic',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.tags.map(topic => {\r\n return (\r\n this.removeTopic(topic)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n this.setState({ body: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Body')}\r\n helperText={}\r\n />\r\n {this.state.rejectionNotes &&\r\n
\r\n Notes from your reviewer\r\n ') }} />\r\n
\r\n }\r\n {!this.state.id &&\r\n \r\n \r\n Your uploading of the above content to SermonCentral affirms it is your property, and you have appropriate permissions and rights to upload it. SermonCentral prohibits the posting of copyrighted material without proper and required permissions. If any portion of material is copyrighted please explicitly indicate it.\r\n \r\n
\r\n \r\n By clicking the submit button you are agreeing to the terms and conditions.\r\n \r\n
\r\n }\r\n \r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(EditSermonIllustration));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport InsertCommentIcon from '@material-ui/icons/InsertComment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport StarHalfIcon from '@material-ui/icons/StarHalf';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport 'url-search-params-polyfill';\r\nimport SermonIllustration from '../../entities/SermonIllustration';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n ratingStarContainer: {\r\n verticalAlign: \"text-top\",\r\n marginLeft: \"4px\"\r\n },\r\n ratingStar: {\r\n fontSize: \"16px\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 4,\r\n right: theme.spacing() * 4,\r\n [theme.breakpoints.down('md')]: {\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n tagsAndScriptures: {\r\n fontStyle: 'italic',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n infiniteScroll: {\r\n width: '100%',\r\n },\r\n cardContainer: {\r\n width: \"100%\",\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n rejectionNotes: {\r\n paddingTop: 10,\r\n borderTop: '1px solid #d90000'\r\n }\r\n });\r\n\r\nenum FilterValue {\r\n Rejected = 0,\r\n Approved = 1,\r\n Pending = 3,\r\n Deleted = 4,\r\n All = 5\r\n}\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n sermonIllustrations: SermonIllustration[];\r\n filteredSermonIllustrations: SermonIllustration[];\r\n visibleSermonIllustrationCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: FilterValue;\r\n showDeleteDialog: boolean;\r\n selectedSermonIllustrationIdToDelete?: number;\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass SermonIllustrations extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n sermonIllustrations: [],\r\n filteredSermonIllustrations: [],\r\n visibleSermonIllustrationCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: FilterValue.All,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - My Sermon Illustrations\";\r\n\r\n try {\r\n const sermonIllustrations = await ContributionsService.getSermonIllustrations();\r\n\r\n let filterValue = FilterValue.All;\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('status') && params.get('status')!.match(/rejected/i)) {\r\n filterValue = FilterValue.Rejected;\r\n }\r\n else if (params.get('status') && params.get('status')!.match(/approved/i)) {\r\n filterValue = FilterValue.Approved;\r\n }\r\n else if (params.get('status') && params.get('status')!.match(/pending/i)) {\r\n filterValue = FilterValue.Pending;\r\n }\r\n\r\n if (sermonIllustrations) {\r\n this.setState({ sermonIllustrations, filterValue, loading: false }, this.updateFilteredSermonIllustrations);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteSermonIllustration() {\r\n if (this.state.selectedSermonIllustrationIdToDelete) {\r\n try {\r\n const response = await ContributionsService.deleteSermonIllustration(this.state.selectedSermonIllustrationIdToDelete);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonIllustrations = this.state.sermonIllustrations;\r\n sermonIllustrations = sermonIllustrations.filter(l => l.id !== this.state.selectedSermonIllustrationIdToDelete!);\r\n\r\n this.setState({\r\n sermonIllustrations,\r\n selectedSermonIllustrationIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The sermon illustration was deleted'\r\n }, this.updateFilteredSermonIllustrations);\r\n\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredSermonIllustrations);\r\n }\r\n\r\n updateFilteredSermonIllustrations() {\r\n\r\n let filteredSermonIllustrations = this.state.sermonIllustrations;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredSermonIllustrations = filteredSermonIllustrations.filter(s => {\r\n\r\n if (s.title && s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.intro && s.intro.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.scriptures && s.scriptures.some(sr => sr.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n if (s.tags && s.tags.some(tg => tg.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.state.filterValue !== 5) {\r\n filteredSermonIllustrations = filteredSermonIllustrations.filter(s => +s.status === +this.state.filterValue);\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredSermonIllustrations.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredSermonIllustrations });\r\n }\r\n\r\n renderStars = (rating: number) => {\r\n let val: JSX.Element[] = [];\r\n\r\n for (let i = 1; i <= 5; i++) {\r\n if (i <= rating) {\r\n val.push();\r\n } else if (i <= Math.ceil(rating)) {\r\n val.push();\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleSermonIllustrations = this.state.filteredSermonIllustrations.slice(0, this.state.visibleSermonIllustrationCount);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n My Sermon Illustrations\r\n \r\n {!this.state.loading && this.state.sermonIllustrations.length > 0 && this.state.sermonIllustrations.length === this.state.filteredSermonIllustrations.length &&\r\n \r\n {this.state.sermonIllustrations.length} shared sermon illustration{this.state.sermonIllustrations.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.sermonIllustrations.length > 0 && this.state.sermonIllustrations.length !== this.state.filteredSermonIllustrations.length &&\r\n \r\n {this.state.filteredSermonIllustrations.length} match{this.state.filteredSermonIllustrations.length === 1 ? '' : 'es'} of {this.state.sermonIllustrations.length} shared sermon illustration{this.state.sermonIllustrations.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Rating')}>\r\n \r\n {this.state.orderBy === 'Rating' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Views')}>\r\n \r\n {this.state.orderBy === 'Views' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.All }, this.updateFilteredSermonIllustrations)}>\r\n \r\n {this.state.filterValue === FilterValue.All ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Approved }, this.updateFilteredSermonIllustrations)}>\r\n \r\n {this.state.filterValue === FilterValue.Approved ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Pending }, this.updateFilteredSermonIllustrations)}>\r\n \r\n {this.state.filterValue === FilterValue.Pending ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Rejected }, this.updateFilteredSermonIllustrations)}>\r\n \r\n {this.state.filterValue === FilterValue.Rejected ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleSermonIllustrationCount: 10 }, this.updateFilteredSermonIllustrations)}\r\n />\r\n
\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.sermonIllustrations.length === 0 &&\r\n \r\n \r\n
\r\n You haven't shared any sermon illustrations yet. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.sermonIllustrations.length > 0 && visibleSermonIllustrations.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleSermonIllustrations.length > 0 &&\r\n this.setState({ visibleSermonIllustrationCount: this.state.visibleSermonIllustrationCount + 10 })}\r\n hasMore={visibleSermonIllustrations.length < this.state.filteredSermonIllustrations.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleSermonIllustrations.map(illustration =>\r\n \r\n \r\n \r\n {new Date(illustration.date).toLocaleDateString()}\r\n \r\n \r\n {FilterValue[illustration.status]}\r\n \r\n \r\n\r\n \r\n {illustration.views} {illustration.views === 1 ? \"view\" : \"views\"} | {illustration.ratingCount} {illustration.ratingCount === 1 ? \"rating\" : \"ratings\"}\r\n {this.renderStars(illustration.rating)}\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Scripture: {illustration.scriptures.length > 0 ? : 'None'}\r\n
\r\n Tags: {illustration.tags.length > 0 ? : 'None'}\r\n
\r\n
\r\n {illustration.rejectionNotes &&\r\n \r\n
\r\n Notes from your reviewer\r\n ') }} />\r\n
\r\n
\r\n }\r\n
\r\n )}\r\n \r\n }\r\n
\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Sermon Illustration\r\n \r\n \r\n Are you sure you wish to delete this sermon illustration?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Add Illustration\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SermonIllustrations));","import {Button, Chip, CircularProgress , Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Divider, FormControl, \r\n FormHelperText, Hidden, IconButton, Input, InputAdornment, InputBase, InputLabel, List, ListItem, ListItemSecondaryAction, \r\n ListItemText, Paper, Snackbar, SnackbarContent, TextField, Toolbar, Typography, fade, Theme, createStyles, withStyles, \r\n WithStyles } from '@material-ui/core';\r\n\r\nimport { green } from '@material-ui/core/colors';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport InsertCommentIcon from '@material-ui/icons/InsertComment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\nimport Sermon, { SermonStatus } from '../../entities/Sermon';\r\nimport SermonSeries from '../../entities/SermonSeries';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { ArrayHelper } from '../../utilities/ArrayHelper';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '72vh',\r\n maxWidth: '900px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n chip: {\r\n margin: theme.spacing() / 2,\r\n color: \"#FFF\",\r\n backgroundColor: theme.palette.primary.light,\r\n \"& svg\": {\r\n color: \"rgb(255,255,255,.7)\",\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n }\r\n }\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n link: {\r\n textDecoration: 'none',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n },\r\n sermonActions: {\r\n [theme.breakpoints.down('sm')]: {\r\n top: '18px',\r\n right: '0',\r\n position: 'relative'\r\n }\r\n },\r\n addExistingDialogContent: {\r\n width: '500px',\r\n [theme.breakpoints.down('xs')]: {\r\n width: 'auto'\r\n },\r\n },\r\n addExistingDialogList: {\r\n height: '400px',\r\n overflow: 'auto'\r\n },\r\n mainToolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string }>, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n id?: number;\r\n title: string;\r\n intro: string;\r\n scriptures: string[];\r\n addScriptureReferenceText: string;\r\n tags: string[];\r\n addTopicText: string;\r\n date: Date;\r\n status: number;\r\n url: string;\r\n updateSuccessMessage: string;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n sermonsInSeries?: Sermon[];\r\n showDeleteDialog: boolean;\r\n selectedSermonIdToDelete?: number;\r\n showAddExistingDialog: boolean;\r\n sermons: Sermon[];\r\n unassignedSermons: Sermon[];\r\n queryText: string;\r\n loadingSermons: boolean;\r\n}\r\n\r\nclass EditSeriesSermon extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n id: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n title: '',\r\n intro: '',\r\n scriptures: [],\r\n addScriptureReferenceText: '',\r\n tags: [],\r\n addTopicText: '',\r\n date: new Date(),\r\n status: SermonStatus.Pending,\r\n url: '',\r\n updateSuccessMessage: '',\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n sermonsInSeries: undefined,\r\n showDeleteDialog: false,\r\n selectedSermonIdToDelete: undefined,\r\n showAddExistingDialog: false,\r\n sermons: [],\r\n unassignedSermons: [],\r\n queryText: '',\r\n loadingSermons: true\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Add Sermon Series\";\r\n\r\n if (this.state.id) {\r\n document.title = \"SermonCentral Account - Edit Sermon Series\";\r\n\r\n try {\r\n const sermonSeries = await ContributionsService.getSermonSeries(parseInt(this.props.match.params.id, 10));\r\n if (sermonSeries) {\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n id: sermonSeries.id,\r\n title: sermonSeries.title,\r\n intro: sermonSeries.intro,\r\n scriptures: sermonSeries.scriptures,\r\n tags: sermonSeries.tags,\r\n url: sermonSeries.url,\r\n });\r\n\r\n const sermonsInSeries = await ContributionsService.getSermonSeriesSermons(sermonSeries.id);\r\n if (sermonsInSeries) {\r\n this.setState({ sermonsInSeries });\r\n }\r\n\r\n const sermons = await ContributionsService.getSermons();\r\n if (sermons) {\r\n this.setState({ sermons, unassignedSermons: sermons.filter(s => !s.sermonSeriesId), loadingSermons: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false, enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.title && this.state.intro) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ContributionsService.saveSermonSeries(this.state.id, this.state.title, this.state.intro, this.state.tags, this.state.scriptures);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n const sermonSeries = response.data;\r\n\r\n document.title = \"SermonCentral Account - Edit Sermon Series\";\r\n this.props.history.replace(`/contributions/sermon-series/edit/${response.data.id}`);\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n id: sermonSeries.id,\r\n title: sermonSeries.title,\r\n intro: sermonSeries.intro,\r\n scriptures: sermonSeries.scriptures,\r\n tags: sermonSeries.tags,\r\n url: sermonSeries.url,\r\n updateSuccessMessage: response.message,\r\n showUpdateSuccessMessage: true,\r\n errors: []\r\n });\r\n\r\n const sermonsInSeries = await ContributionsService.getSermonSeriesSermons(sermonSeries.id);\r\n if (sermonsInSeries) {\r\n this.setState({ sermonsInSeries });\r\n }\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n addScriptureReference() {\r\n\r\n if (this.state.addScriptureReferenceText.length > 0) {\r\n const updatedScriptures = ArrayHelper.addString(this.state.addScriptureReferenceText, this.state.scriptures);\r\n this.setState({\r\n scriptures: updatedScriptures,\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n }\r\n\r\n removeScriptureReference(scriptureReference: string) {\r\n\r\n if (scriptureReference.length > 0) {\r\n\r\n let scriptures = ArrayHelper.removeString(scriptureReference, this.state.scriptures);\r\n this.setState({ scriptures });\r\n }\r\n }\r\n\r\n addTopic() {\r\n\r\n if (this.state.addTopicText.length > 0) {\r\n const updatedTags = ArrayHelper.addString(this.state.addTopicText, this.state.tags);\r\n this.setState({\r\n tags: updatedTags,\r\n addTopicText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addTopicText: ''\r\n });\r\n }\r\n }\r\n\r\n removeTopic(topic: string) {\r\n\r\n if (topic.length > 0) {\r\n let tags = ArrayHelper.removeString(topic, this.state.tags);\r\n this.setState({ tags });\r\n }\r\n }\r\n\r\n async deleteSermon() {\r\n if (this.state.selectedSermonIdToDelete) {\r\n try {\r\n const response = await ContributionsService.removeSermonSeriesSermon(this.state.selectedSermonIdToDelete, this.state.id!);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonsInSeries = this.state.sermonsInSeries;\r\n sermonsInSeries = sermonsInSeries!.filter(l => l.id !== this.state.selectedSermonIdToDelete);\r\n\r\n let sermons = this.state.sermons;\r\n let sermon = sermons.find(s => s.id === this.state.selectedSermonIdToDelete!)!;\r\n sermon.sermonSeriesId = undefined;\r\n\r\n this.setState({\r\n unassignedSermons: sermons.filter(s => !s.sermonSeriesId),\r\n sermonsInSeries,\r\n selectedSermonIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The sermon was removed from the series',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n }\r\n\r\n async moveSermon(sermonId: number, index: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n let sermonsInSeries = this.state.sermonsInSeries;\r\n const currentIndex = sermonsInSeries!.findIndex(f => f.id === sermonId);\r\n let sermon = sermonsInSeries![currentIndex];\r\n\r\n const response = await ContributionsService.updateSermonSeriesSermon(sermonId, this.state.id!, index);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n sermon = response.data;\r\n\r\n sermonsInSeries!.splice(currentIndex, 1);\r\n sermonsInSeries!.splice(index, 0, sermon);\r\n\r\n this.setState({\r\n sermonsInSeries,\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Sermon moved.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n\r\n async addSermonToSeries(id: number) {\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n\r\n const response = await ContributionsService.addSermonSeriesSermon(id, this.state.id!);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonsInSeries = this.state.sermonsInSeries!;\r\n sermonsInSeries.push(response.data);\r\n\r\n let sermons = this.state.sermons;\r\n let sermon = sermons.find(s => s.id === id)!;\r\n sermon.sermonSeriesId = this.state.id;\r\n\r\n this.setState({\r\n unassignedSermons: sermons.filter(s => !s.sermonSeriesId),\r\n showAddExistingDialog: false,\r\n sermonsInSeries,\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Sermon added to Series.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddExistingDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddExistingDialog: false });\r\n }\r\n\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddExistingDialog: false });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n this.props.history.goBack()}>\r\n \r\n \r\n \r\n {this.state.id ? 'Edit' : 'Share a new'} Sermon Series\r\n \r\n {this.state.url &&\r\n \r\n }\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ title: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Title')}\r\n helperText={}\r\n />\r\n this.setState({ intro: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Summary')}\r\n helperText={}\r\n />\r\n \r\n Scripture References (At least 1 scripture reference must be added)\r\n this.setState({ addScriptureReferenceText: e.currentTarget.value })}\r\n onBlur={() => this.addScriptureReference()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addScriptureReference();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addScriptureReference()}\r\n disabled={this.state.addScriptureReferenceText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addScriptureReference',\r\n id: 'addScriptureReference',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.scriptures.map(scriptureReference => {\r\n return (\r\n this.removeScriptureReference(scriptureReference)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n \r\n Topics (At least 2 topics must be added)\r\n this.setState({ addTopicText: e.currentTarget.value })}\r\n onBlur={() => this.addTopic()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addTopic();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addTopic()}\r\n disabled={this.state.addTopicText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addTopic',\r\n id: 'addTopic',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.tags.map(topic => {\r\n return (\r\n this.removeTopic(topic)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n \r\n \r\n {!this.state.sermonsInSeries && this.state.id &&\r\n
\r\n \r\n
\r\n \r\n Loading Sermons...\r\n \r\n
\r\n }\r\n {this.state.sermonsInSeries && this.state.id &&\r\n
\r\n \r\n Sermons in Series ({this.state.sermonsInSeries.length.toLocaleString()})\r\n \r\n \r\n \r\n {this.state.sermonsInSeries.map((sermon, index) =>\r\n <>\r\n \r\n \r\n \r\n {index > 0 &&\r\n this.moveSermon(sermon.id, index - 1)}>\r\n \r\n \r\n }\r\n {index < this.state.sermonsInSeries!.length - 1 &&\r\n this.moveSermon(sermon.id, index + 1)}>\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedSermonIdToDelete: sermon.id, showDeleteDialog: true })}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n }\r\n this.setState({ showDeleteDialog: false, selectedSermonIdToDelete: undefined })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Remove Sermon from Series\r\n \r\n \r\n Are you sure you wish to remove this sermon from this series? This will not delete the sermon.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showAddExistingDialog: false })}\r\n aria-labelledby=\"add-sermons-dialog-title\"\r\n aria-describedby=\"add-sermons-dialog-description\"\r\n >\r\n Select a sermon to add\r\n \r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value })}\r\n />\r\n
\r\n {this.state.loadingSermons &&\r\n
\r\n \r\n
\r\n \r\n Loading Sermons...\r\n \r\n
\r\n }\r\n {!this.state.loadingSermons && this.state.unassignedSermons.length === 0 &&\r\n \r\n \r\n
\r\n You don't have any sermons that aren't already part of sermon series.\r\n
\r\n }\r\n {this.state.unassignedSermons.length > 0 && this.state.unassignedSermons.filter(s => s.title.toLowerCase().indexOf(this.state.queryText) >= 0).length === 0 &&\r\n \r\n \r\n
\r\n There are no sermons that match your search.\r\n
\r\n }\r\n {this.state.unassignedSermons.length > 0 && this.state.unassignedSermons.filter(s => s.title.toLowerCase().indexOf(this.state.queryText) >= 0).length > 0 &&\r\n \r\n {this.state.unassignedSermons.filter(s => s.title.toLowerCase().indexOf(this.state.queryText) >= 0).slice(0, 20).map(sermon =>\r\n \r\n \r\n \r\n this.addSermonToSeries(sermon.id)}>\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n }\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(EditSeriesSermon));","import Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Breakpoint } from '@material-ui/core/styles/createBreakpoints';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport LanguageIcon from '@material-ui/icons/Language';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport axios from 'axios';\r\nimport * as d3 from 'd3';\r\nimport * as d3GeoProjection from 'd3-geo-projection';\r\nimport * as React from 'react';\r\nimport * as topojson from \"topojson-client\";\r\nimport Country from '../../entities/Country';\r\nimport Sermon from '../../entities/Sermon';\r\nimport SermonIllustration from '../../entities/SermonIllustration';\r\nimport USState from '../../entities/USState';\r\nimport { ContributionsService, SermonIllustrationRegionViewSummary, SermonRegionViewSummary } from '../../services/ContributionsService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n gridContainer: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingRight: theme.spacing() * 25,\r\n paddingBottom: theme.spacing() * 2,\r\n paddingLeft: theme.spacing() * 25,\r\n ['@media (max-width: 1700px)']: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingRight: theme.spacing() * 10,\r\n paddingBottom: theme.spacing() * 2,\r\n paddingLeft: theme.spacing() * 10,\r\n },\r\n ['@media (max-width: 1500px)']: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingRight: theme.spacing() * 5,\r\n paddingBottom: theme.spacing() * 2,\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n padding: 0\r\n }\r\n },\r\n grid: {\r\n flexGrow: 1\r\n },\r\n mapCard: {\r\n height: '433px',\r\n overflow: 'hidden',\r\n [theme.breakpoints.down('md')]: {\r\n width: '100%',\r\n }\r\n },\r\n mapContainer: {\r\n marginTop: '10px',\r\n display: 'inline-block',\r\n position: 'relative',\r\n paddingBottom: '100%',\r\n verticalAlign: 'top',\r\n overflow: 'hidden',\r\n height: \"100%\",\r\n width: '100%'\r\n },\r\n worldMap: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n \"& path\": {\r\n strokeLinejoin: \"round\",\r\n strokeLinecap: \"round\",\r\n fill: \"rgb(163, 219, 241)\",\r\n stroke: \"#9d9d9d\",\r\n strokeWidth: \".5px\",\r\n opacity: 0.8\r\n },\r\n \"& .names\": {\r\n fill: \"none\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\"\r\n },\r\n },\r\n stateMap: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n \"& path\": {\r\n strokeLinejoin: \"round\",\r\n strokeLinecap: \"round\",\r\n fill: \"rgb(163, 219, 241)\",\r\n stroke: \"#9d9d9d\",\r\n strokeWidth: \".5px\",\r\n opacity: 0.8\r\n },\r\n \"& .names\": {\r\n fill: \"none\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\"\r\n },\r\n },\r\n mapLoader: {\r\n textAlign: 'center'\r\n },\r\n tableWrapper: {\r\n overflowX: 'auto',\r\n },\r\n tableToolbar: {\r\n height: '2rem'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n toolbar: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n regionContainer: {\r\n float: 'right'\r\n },\r\n timeframeContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n width: Breakpoint;\r\n}\r\n\r\ntype State = {\r\n anchorRegion: undefined;\r\n region: string;\r\n anchorTimeframe: undefined;\r\n timeframe: string;\r\n sermons: Sermon[] | undefined;\r\n sermonIllustrations: SermonIllustration[] | undefined;\r\n countries: Country[] | undefined;\r\n topRegions: { name: string, views: number, percent: number }[] | undefined,\r\n topRegionsQueryText: string;\r\n topRegionsOrderBy: string;\r\n topRegionsOrder: string;\r\n topRegionsRowsPerPage: number;\r\n topRegionsPage: number;\r\n topContributions: { id: number, name: string, type: string, date: Date, views: number, percent: number }[] | undefined,\r\n topContributionsQueryText: string;\r\n topContributionsOrderBy: string;\r\n topContributionsOrder: string;\r\n topContributionsRowsPerPage: number;\r\n topContributionsPage: number;\r\n usStates: USState[] | undefined;\r\n sermonRegionViewSummaries: SermonRegionViewSummary[] | undefined;\r\n sermonIllustrationRegionViewSummaries: SermonIllustrationRegionViewSummary[] | undefined;\r\n loadingMap: boolean;\r\n worldMapData: any;\r\n usMapData: any;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass Home extends React.Component {\r\n\r\n private mapRef: SVGGElement | null = null;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n anchorRegion: undefined,\r\n region: 'world',\r\n anchorTimeframe: undefined,\r\n timeframe: 'last7days',\r\n sermons: undefined,\r\n sermonIllustrations: undefined,\r\n countries: undefined,\r\n topRegions: undefined,\r\n topRegionsQueryText: '',\r\n topRegionsOrderBy: 'views',\r\n topRegionsOrder: 'desc',\r\n topRegionsRowsPerPage: 10,\r\n topRegionsPage: 0,\r\n topContributions: undefined,\r\n topContributionsQueryText: '',\r\n topContributionsOrderBy: 'views',\r\n topContributionsOrder: 'desc',\r\n topContributionsRowsPerPage: 10,\r\n topContributionsPage: 0,\r\n usStates: undefined,\r\n sermonRegionViewSummaries: undefined,\r\n sermonIllustrationRegionViewSummaries: undefined,\r\n loadingMap: true,\r\n worldMapData: undefined,\r\n usMapData: undefined,\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Contribution Dashboard\";\r\n\r\n ContributionsService.getSermons()\r\n .then((sermons) => {\r\n this.setState({ sermons: sermons || [] }, this.updateMap);\r\n });\r\n\r\n ContributionsService.getSermonIllustrations()\r\n .then((sermonIllustrations) => {\r\n this.setState({ sermonIllustrations: sermonIllustrations || [] }, this.updateMap);\r\n });\r\n\r\n ContributionsService.getCountries()\r\n .then((countries) => {\r\n this.setState({ countries: countries || [] }, this.updateMap);\r\n });\r\n\r\n ContributionsService.getUSStates()\r\n .then((usStates) => {\r\n this.setState({ usStates: usStates || [] }, this.updateMap);\r\n });\r\n\r\n this.updateRegion();\r\n\r\n axios.get('/data/world-data.json', { headers: { Pragma: 'no-cache' } })\r\n .then(response => {\r\n\r\n // Request of shadow-gm to remove Antartica from the map, done by country code (ATA)\r\n let data = response.data;\r\n data.features = data.features.filter((f: any) => f.id !== 'ATA');\r\n this.setState({ worldMapData: data }, this.updateMap);\r\n });\r\n\r\n axios.get('/data/usStates-data.json', { headers: { Pragma: 'no-cache' } })\r\n .then(response => {\r\n this.setState({ usMapData: response.data }, this.updateMap);\r\n });\r\n }\r\n\r\n updateRegion() {\r\n\r\n this.setState({\r\n loadingMap: true,\r\n sermonRegionViewSummaries: undefined,\r\n sermonIllustrationRegionViewSummaries: undefined,\r\n topRegionsQueryText: '',\r\n topRegionsOrder: 'desc',\r\n topRegionsOrderBy: 'views',\r\n topRegionsPage: 0,\r\n topRegionsRowsPerPage: 10,\r\n topContributionsQueryText: '',\r\n topContributionsOrder: 'desc',\r\n topContributionsOrderBy: 'views',\r\n topContributionsPage: 0,\r\n topContributionsRowsPerPage: 10\r\n }, () => { this.updateTopRegions(); this.updateTopContributions(); });\r\n\r\n ContributionsService.getSermonRegionViewSummaries(this.state.timeframe)\r\n .then((sermonRegionViewSummaries) => {\r\n this.setState({ sermonRegionViewSummaries: sermonRegionViewSummaries || [] }, this.updateMap);\r\n });\r\n\r\n ContributionsService.getSermonIllustrationRegionViewSummaries(this.state.timeframe)\r\n .then((sermonIllustrationRegionViewSummaries) => {\r\n this.setState({ sermonIllustrationRegionViewSummaries: sermonIllustrationRegionViewSummaries || [] }, this.updateMap);\r\n });\r\n }\r\n\r\n updateMap() {\r\n\r\n if (!this.mapRef) {\r\n return;\r\n }\r\n\r\n if (this.state.region === 'us') {\r\n this.updateUSMap();\r\n }\r\n else {\r\n this.updateWorldMap();\r\n }\r\n\r\n this.updateTopRegions();\r\n this.updateTopContributions();\r\n }\r\n\r\n updateTopRegions() {\r\n\r\n this.setState({ topRegions: undefined });\r\n\r\n if (!(this.state.countries && this.state.usStates && this.state.sermonRegionViewSummaries && this.state.sermonIllustrationRegionViewSummaries)) {\r\n return;\r\n }\r\n\r\n if (this.state.region === 'us') {\r\n this.updateTopStates();\r\n }\r\n else {\r\n this.updateTopCountries();\r\n }\r\n }\r\n\r\n updateTopStates() {\r\n\r\n let filteredUSStates = this.state.usStates!;\r\n\r\n if (this.state.topRegionsQueryText.length >= 0) {\r\n\r\n const query = this.state.topRegionsQueryText.toLowerCase();\r\n filteredUSStates = filteredUSStates.filter(c => {\r\n\r\n if (c.name && c.name.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const grandTotalViews = this.getTotalViews()!;\r\n\r\n const topUSStates = filteredUSStates.map(c => {\r\n\r\n const name = c.name;\r\n let views = 0;\r\n\r\n const filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.countryCode === 'US' && s.regionName === c.name);\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.countryCode === 'US' && s.regionName === c.name);\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const percent = +((views / grandTotalViews) * 100).toFixed(1);\r\n return {\r\n name,\r\n views,\r\n percent\r\n };\r\n });\r\n\r\n const sortGreaterThanValue = this.state.topRegionsOrder === 'asc' ? 1 : -1;\r\n const sortLessThanValue = this.state.topRegionsOrder === 'asc' ? -1 : 1;\r\n const fieldName = this.state.topRegionsOrderBy;\r\n\r\n topUSStates.sort((c1, c2) => {\r\n\r\n let c1FieldValue = c1[fieldName];\r\n if (typeof c1FieldValue === 'string') {\r\n c1FieldValue = c1FieldValue.toLowerCase();\r\n }\r\n\r\n let c2FieldValue = c2[fieldName];\r\n if (typeof c2FieldValue === 'string') {\r\n c2FieldValue = c2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof c1FieldValue === 'string' && typeof c2FieldValue === 'string') {\r\n const value = c1FieldValue.localeCompare(c2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (c1FieldValue > c2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (c1FieldValue < c2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n this.setState({ topRegions: topUSStates });\r\n }\r\n\r\n updateTopCountries() {\r\n\r\n let filteredCountries = this.state.countries!;\r\n\r\n if (this.state.topRegionsQueryText.length >= 0) {\r\n\r\n const query = this.state.topRegionsQueryText.toLowerCase();\r\n filteredCountries = filteredCountries.filter(c => {\r\n\r\n if (c.name && c.name.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const grandTotalViews = this.getTotalViews()!;\r\n\r\n const topCountries = filteredCountries.map(c => {\r\n\r\n const name = c.name;\r\n let views = 0;\r\n\r\n const filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.countryCode === c.twoCharCode);\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.countryCode === c.twoCharCode);\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const percent = +((views / grandTotalViews) * 100).toFixed(1);\r\n return {\r\n name,\r\n views,\r\n percent\r\n };\r\n });\r\n\r\n const sortGreaterThanValue = this.state.topRegionsOrder === 'asc' ? 1 : -1;\r\n const sortLessThanValue = this.state.topRegionsOrder === 'asc' ? -1 : 1;\r\n const fieldName = this.state.topRegionsOrderBy;\r\n\r\n topCountries.sort((c1, c2) => {\r\n\r\n let c1FieldValue = c1[fieldName];\r\n if (typeof c1FieldValue === 'string') {\r\n c1FieldValue = c1FieldValue.toLowerCase();\r\n }\r\n\r\n let c2FieldValue = c2[fieldName];\r\n if (typeof c2FieldValue === 'string') {\r\n c2FieldValue = c2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof c1FieldValue === 'string' && typeof c2FieldValue === 'string') {\r\n const value = c1FieldValue.localeCompare(c2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (c1FieldValue > c2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (c1FieldValue < c2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ topRegions: topCountries });\r\n }\r\n\r\n updateTopContributions() {\r\n\r\n this.setState({ topContributions: undefined });\r\n\r\n if (!(this.state.sermons && this.state.sermonIllustrations && this.state.sermonRegionViewSummaries && this.state.sermonIllustrationRegionViewSummaries)) {\r\n return;\r\n }\r\n\r\n const grandTotalViews = this.getTotalViews()!;\r\n\r\n let filteredSermons = this.state.sermons!;\r\n\r\n if (this.state.topContributionsQueryText.length >= 0) {\r\n\r\n const query = this.state.topContributionsQueryText.toLowerCase();\r\n filteredSermons = filteredSermons.filter(c => {\r\n\r\n if (c.title && c.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const topSermons = filteredSermons.map(c => {\r\n\r\n const id = c.id;\r\n const name = c.title;\r\n const type = 'Sermon';\r\n const date = new Date(c.date);\r\n let views = 0;\r\n\r\n let filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.sermonId === c.id);\r\n\r\n if (this.state.region === 'us') {\r\n filteredSermonViews = filteredSermonViews.filter(s => s.countryCode === 'US');\r\n }\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const percent = +((views / grandTotalViews) * 100).toFixed(1);\r\n return {\r\n id,\r\n name,\r\n type,\r\n date,\r\n views,\r\n percent\r\n };\r\n });\r\n\r\n let filteredSermonIllustrations = this.state.sermonIllustrations!;\r\n\r\n if (this.state.topContributionsQueryText.length >= 0) {\r\n\r\n const query = this.state.topContributionsQueryText.toLowerCase();\r\n filteredSermonIllustrations = filteredSermonIllustrations.filter(c => {\r\n\r\n if (c.title && c.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const topSermonIllustrations = filteredSermonIllustrations.map(c => {\r\n\r\n const id = c.id;\r\n const name = c.title;\r\n const type = 'Illustration';\r\n const date = new Date(c.date);\r\n let views = 0;\r\n\r\n let filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.sermonIllustrationId === c.id);\r\n\r\n if (this.state.region === 'us') {\r\n filteredSermonIllustrationViews = filteredSermonIllustrationViews.filter(s => s.countryCode === 'US');\r\n }\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const percent = +((views / grandTotalViews) * 100).toFixed(1);\r\n return {\r\n id,\r\n name,\r\n type,\r\n date,\r\n views,\r\n percent\r\n };\r\n });\r\n\r\n const topContributions = topSermons.concat(topSermonIllustrations);\r\n\r\n const sortGreaterThanValue = this.state.topContributionsOrder === 'asc' ? 1 : -1;\r\n const sortLessThanValue = this.state.topContributionsOrder === 'asc' ? -1 : 1;\r\n const fieldName = this.state.topContributionsOrderBy;\r\n\r\n topContributions.sort((c1, c2) => {\r\n\r\n let c1FieldValue = c1[fieldName];\r\n if (typeof c1FieldValue === 'string') {\r\n c1FieldValue = c1FieldValue.toLowerCase();\r\n }\r\n\r\n let c2FieldValue = c2[fieldName];\r\n if (typeof c2FieldValue === 'string') {\r\n c2FieldValue = c2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof c1FieldValue === 'string' && typeof c2FieldValue === 'string') {\r\n const value = c1FieldValue.localeCompare(c2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (c1FieldValue > c2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (c1FieldValue < c2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ topContributions: topContributions });\r\n }\r\n\r\n updateUSMap() {\r\n\r\n var classes = this.props.classes;\r\n\r\n if (!(this.state.usMapData && this.state.usStates && this.state.sermonRegionViewSummaries && this.state.sermonIllustrationRegionViewSummaries)) {\r\n return;\r\n }\r\n\r\n this.setState({ loadingMap: true });\r\n\r\n this.state.usMapData.objects.states.geometries.forEach((geometry: any) => {\r\n\r\n let views: number = 0;\r\n const usState = this.state.usStates!.filter(c => c.postalAbbreviation === geometry.code)[0];\r\n if (!usState) {\r\n geometry.views = views;\r\n return;\r\n }\r\n\r\n const filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.countryCode === 'US' && s.regionName === usState.name);\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.countryCode === 'US' && s.regionName === usState.name);\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n geometry.views = views;\r\n });\r\n\r\n const rangeArray: Array = [];\r\n\r\n rangeArray.push('#ffffff');\r\n rangeArray.push('#cde8f3');\r\n rangeArray.push('#b4dcee');\r\n rangeArray.push('#9bd1e8');\r\n rangeArray.push('#82c6e3');\r\n rangeArray.push('#69badd');\r\n rangeArray.push('#50afd7');\r\n rangeArray.push('#36a3d2');\r\n rangeArray.push('#1d98cc');\r\n rangeArray.push('#058dc7');\r\n rangeArray.push('#0376ae');\r\n rangeArray.push('#026096');\r\n rangeArray.push('#01497e');\r\n rangeArray.push('#003366');\r\n\r\n const color = d3.scaleQuantile()\r\n .domain([0, 1, 5, 10, 20, 50, 100, 250, 400, 800, 1500, 4000, 10000, 20000])\r\n .range(rangeArray);\r\n\r\n const component = this;\r\n const svg = d3.select(this.mapRef);\r\n svg.html(null);\r\n\r\n const projection = d3.geoAlbersUsa();\r\n var path: any = d3.geoPath(projection);\r\n\r\n svg.attr(\"preserveAspectRatio\", \"xMidYMid meet\")\r\n .attr(\"viewBox\", \"-150 0 1200 600\")\r\n .attr('class', classes.stateMap)\r\n .append(\"g\")\r\n .selectAll(\"path\")\r\n .data(topojson.feature(this.state.usMapData, this.state.usMapData.objects.states).features)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"d\", path)\r\n .style('fill', (d: any) => {\r\n const geometry = component.state.usMapData.objects.states.geometries.find((geo: any) => geo.id === d.id);\r\n return color(geometry.views);\r\n })\r\n .append('svg:title')\r\n .text((d: any) => {\r\n const geometry = component.state.usMapData.objects.states.geometries.find((geo: any) => geo.id === d.id);\r\n return geometry.name + ' - ' + ('toLocaleString' in Number ? geometry.views.toLocaleString() : geometry.views.toString(10)) + ' view' + (geometry.views !== 1 ? 's' : '');\r\n });\r\n\r\n svg.append(\"path\")\r\n .datum(topojson.mesh(this.state.usMapData, this.state.usMapData.objects.states, (a: any, b: any) => a.id !== b.id))\r\n .attr(\"class\", \"names\")\r\n .attr(\"d\", path);\r\n\r\n this.setState({ loadingMap: false });\r\n }\r\n\r\n updateWorldMap() {\r\n\r\n var classes = this.props.classes;\r\n\r\n if (!(this.state.worldMapData && this.state.countries && this.state.sermonRegionViewSummaries && this.state.sermonIllustrationRegionViewSummaries)) {\r\n return;\r\n }\r\n\r\n this.setState({ loadingMap: true });\r\n\r\n this.state.worldMapData.features.forEach((feature: any) => {\r\n\r\n let views: number = 0;\r\n const country = this.state.countries!.filter(c => c.threeCharCode === feature.id)[0];\r\n if (!country) {\r\n feature.views = views;\r\n return;\r\n }\r\n\r\n const filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.countryCode === country.twoCharCode);\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.countryCode === country.twoCharCode);\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n feature.views = views;\r\n });\r\n\r\n const rangeArray: Array = [];\r\n\r\n rangeArray.push('#ffffff');\r\n rangeArray.push('#cde8f3');\r\n rangeArray.push('#b4dcee');\r\n rangeArray.push('#9bd1e8');\r\n rangeArray.push('#82c6e3');\r\n rangeArray.push('#69badd');\r\n rangeArray.push('#50afd7');\r\n rangeArray.push('#36a3d2');\r\n rangeArray.push('#1d98cc');\r\n rangeArray.push('#058dc7');\r\n rangeArray.push('#0376ae');\r\n rangeArray.push('#026096');\r\n rangeArray.push('#01497e');\r\n rangeArray.push('#003366');\r\n\r\n const color = d3.scaleQuantile()\r\n .domain([0, 1, 5, 10, 20, 50, 100, 250, 400, 800, 1500, 4000, 10000, 20000])\r\n .range(rangeArray);\r\n\r\n const component = this;\r\n const svg = d3.select(this.mapRef);\r\n svg.html(null);\r\n\r\n const projection = d3GeoProjection.geoRobinson();\r\n var path: any = d3.geoPath(projection);\r\n\r\n svg.attr(\"preserveAspectRatio\", \"xMidYMid meet\")\r\n .attr(\"viewBox\", \"0 0 1000 600\")\r\n .attr('class', classes.worldMap)\r\n .append(\"g\")\r\n .selectAll(\"path\")\r\n .data(this.state.worldMapData.features)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"d\", path)\r\n .style('fill', (d: any) => {\r\n return color(d.views);\r\n })\r\n .on('click', function (d: any) {\r\n if (d.id === \"USA\") {\r\n component.setState({ region: 'us' }, component.updateMap);\r\n }\r\n })\r\n .append('svg:title')\r\n .text((d: any) => {\r\n return d.properties.name + ' - ' + ('toLocaleString' in Number ? d.views.toLocaleString() : d.views.toString(10)) + ' view' + (d.views !== 1 ? 's' : '');\r\n });\r\n\r\n svg.append(\"path\")\r\n .datum(topojson.mesh(this.state.worldMapData, this.state.worldMapData.features, (a: any, b: any) => a.id !== b.id))\r\n .attr(\"class\", \"names\")\r\n .attr(\"d\", path);\r\n\r\n this.setState({ loadingMap: false });\r\n }\r\n\r\n getTimeframeDisplayName(timeframe: string) {\r\n\r\n switch (timeframe) {\r\n case 'realtime':\r\n return 'Real-Time';\r\n\r\n case 'last7days':\r\n default:\r\n return 'Last 7 Days';\r\n\r\n case 'last30days':\r\n return 'Last 30 Days';\r\n\r\n case 'last60days':\r\n return 'Last 60 Days';\r\n\r\n case 'last90days':\r\n return 'Last 90 Days';\r\n\r\n case 'last180days':\r\n return 'Last 180 Days';\r\n }\r\n }\r\n\r\n getTotalViews(): number | undefined {\r\n\r\n if (!this.state.sermonRegionViewSummaries || !this.state.sermonIllustrationRegionViewSummaries) {\r\n return undefined;\r\n }\r\n\r\n let retVal: number = 0;\r\n\r\n if (this.state.sermonRegionViewSummaries.length > 0) {\r\n\r\n retVal += this.state.sermonRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n if (this.state.sermonIllustrationRegionViewSummaries.length > 0) {\r\n\r\n retVal += this.state.sermonIllustrationRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n getSermonsViewed(): number | undefined {\r\n\r\n if (!this.state.sermonRegionViewSummaries) {\r\n return undefined;\r\n }\r\n\r\n let retVal: number = 0;\r\n\r\n retVal += this.state.sermonRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => s.sermonId)\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .length;\r\n\r\n return retVal;\r\n }\r\n\r\n getRegionsReached(): number | undefined {\r\n\r\n if (!this.state.sermonRegionViewSummaries || !this.state.sermonIllustrationRegionViewSummaries) {\r\n return undefined;\r\n }\r\n\r\n let retVal: number = 0;\r\n\r\n const sermonRegions = this.state.sermonRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => this.state.region === 'us' ? s.regionName : s.countryCode)\r\n .filter((region, index, self) => self.indexOf(region) === index);\r\n\r\n const sermonIllustrationRegions = this.state.sermonIllustrationRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => this.state.region === 'us' ? s.regionName : s.countryCode)\r\n .filter((region, index, self) => self.indexOf(region) === index);\r\n\r\n retVal += sermonRegions.concat(sermonIllustrationRegions).filter((region, index, self) => self.indexOf(region) === index).length;\r\n\r\n return retVal;\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortTopRegionsColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.topRegionsOrder === 'asc' ? 'desc' : 'asc';\r\n if (orderBy !== this.state.topRegionsOrderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ topRegionsOrder: sortOrder, topRegionsOrderBy: orderBy }, this.updateTopRegions);\r\n }\r\n\r\n sortTopContributionsColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.topContributionsOrder === 'asc' ? 'desc' : 'asc';\r\n if (orderBy !== this.state.topContributionsOrderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ topContributionsOrder: sortOrder, topContributionsOrderBy: orderBy }, this.updateTopContributions);\r\n }\r\n\r\n renderTotalViewsCard() {\r\n\r\n const totalViews = this.getTotalViews();\r\n return (\r\n \r\n \r\n \r\n Total Views\r\n \r\n \r\n {totalViews !== undefined ? ('toLocaleString' in Number ? totalViews.toLocaleString() : totalViews.toString(10)) : '...'}\r\n \r\n \r\n {this.getTimeframeDisplayName(this.state.timeframe)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderSermonsViewedCard() {\r\n\r\n const sermonsViewed = this.getSermonsViewed();\r\n return (\r\n \r\n \r\n \r\n Sermons Viewed\r\n \r\n \r\n {sermonsViewed !== undefined ? ('toLocaleString' in Number ? sermonsViewed.toLocaleString() : sermonsViewed.toString(10)) : '...'}\r\n \r\n \r\n {this.getTimeframeDisplayName(this.state.timeframe)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderRegionsReachedCard() {\r\n\r\n const regionsReached = this.getRegionsReached();\r\n\r\n return (\r\n \r\n \r\n \r\n {this.state.region === 'world' ? 'Countries' : 'States'} Reached\r\n \r\n \r\n {regionsReached !== undefined ? ('toLocaleString' in Number ? regionsReached.toLocaleString() : regionsReached.toString(10)) : '...'}\r\n \r\n \r\n {this.getTimeframeDisplayName(this.state.timeframe)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderMapCard() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n {this.state.loadingMap &&\r\n
\r\n \r\n
\r\n \r\n Loading Map...\r\n \r\n
\r\n }\r\n
\r\n { this.mapRef = input; }} />\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderTopCountriesCard() {\r\n\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n Top {this.state.region === 'us' ? 'States' : 'Countries'}\r\n \r\n
\r\n
\r\n {this.state.topRegions &&\r\n
\r\n
\r\n \r\n
\r\n this.setState({ topRegionsQueryText: e.target.value }, this.updateTopRegions)}\r\n />\r\n
\r\n }\r\n \r\n {!this.state.topRegions &&\r\n
\r\n \r\n
\r\n \r\n Loading {this.state.region === 'us' ? 'Top States' : 'Top Countries'}...\r\n \r\n
\r\n }\r\n {this.state.topRegions && this.state.topRegions.length === 0 &&\r\n
\r\n \r\n No {this.state.region === 'us' ? 'states' : 'countries'} found.\r\n \r\n
\r\n }\r\n {this.state.topRegions && this.state.topRegions.length > 0 &&\r\n \r\n
\r\n \r\n \r\n \r\n \r\n this.sortTopRegionsColumn('name')}\r\n >\r\n {this.state.region === 'us' ? 'State' : 'Country'}\r\n \r\n \r\n \r\n this.sortTopRegionsColumn('views')}\r\n >\r\n Views\r\n \r\n \r\n \r\n this.sortTopRegionsColumn('percent')}\r\n >\r\n Percent\r\n \r\n \r\n \r\n \r\n \r\n {this.state.topRegions.slice(this.state.topRegionsPage * this.state.topRegionsRowsPerPage, this.state.topRegionsPage * this.state.topRegionsRowsPerPage + this.state.topRegionsRowsPerPage).map(c =>\r\n \r\n \r\n {('toLocaleString' in Number ? c.views.toLocaleString() : c.views.toString(10))}\r\n {('toLocaleString' in Number ? (c.percent ? c.percent.toLocaleString() : 0) : (c.percent ? c.percent.toString(10) : 0))}%\r\n \r\n )}\r\n \r\n
\r\n
\r\n this.setState({ topRegionsPage: page })}\r\n onChangeRowsPerPage={(e) => this.setState({ topRegionsRowsPerPage: parseInt(e.target.value, 10) })}\r\n />\r\n
\r\n }\r\n \r\n );\r\n }\r\n\r\n renderTopContributionsCard() {\r\n\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n Top Contributions\r\n \r\n
\r\n
\r\n {this.state.topContributions &&\r\n
\r\n
\r\n \r\n
\r\n this.setState({ topContributionsQueryText: e.target.value }, this.updateTopContributions)}\r\n />\r\n
\r\n }\r\n \r\n {!this.state.topContributions &&\r\n
\r\n \r\n
\r\n \r\n Loading Top Contributions...\r\n \r\n
\r\n }\r\n {this.state.topContributions && this.state.topContributions.length === 0 &&\r\n
\r\n \r\n No contributions found.\r\n \r\n
\r\n }\r\n {this.state.topContributions && this.state.topContributions.length > 0 &&\r\n \r\n
\r\n \r\n \r\n \r\n \r\n this.sortTopContributionsColumn('name')}\r\n >\r\n Name\r\n \r\n \r\n \r\n this.sortTopContributionsColumn('type')}\r\n >\r\n Contribution Type\r\n \r\n \r\n \r\n this.sortTopContributionsColumn('date')}\r\n >\r\n Date Contributed\r\n \r\n \r\n \r\n this.sortTopContributionsColumn('views')}\r\n >\r\n Views\r\n \r\n \r\n \r\n this.sortTopContributionsColumn('percent')}\r\n >\r\n Percent\r\n \r\n \r\n \r\n \r\n \r\n {this.state.topContributions.slice(this.state.topContributionsPage * this.state.topContributionsRowsPerPage, this.state.topContributionsPage * this.state.topContributionsRowsPerPage + this.state.topContributionsRowsPerPage).map(c =>\r\n \r\n \r\n {c.type}\r\n {('toLocaleDateString' in Date.prototype ? c.date.toLocaleDateString() : c.date.toString())}\r\n {('toLocaleString' in Number ? c.views.toLocaleString() : c.views.toString(10))}\r\n {('toLocaleString' in Number ? (c.percent ? c.percent.toLocaleString() : 0) : (c.percent ? c.percent.toString(10) : 0))}%\r\n \r\n )}\r\n \r\n
\r\n
\r\n this.setState({ topContributionsPage: page })}\r\n onChangeRowsPerPage={(e) => this.setState({ topContributionsRowsPerPage: parseInt(e.target.value, 10) })}\r\n />\r\n
\r\n }\r\n \r\n );\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Contribution Dashboard\r\n \r\n
\r\n
\r\n
\r\n this.setState({ anchorRegion: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorRegion: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorRegion: undefined, region: 'world' }, this.updateMap)}>\r\n \r\n {this.state.region === 'world' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorRegion: undefined, region: 'us' }, this.updateMap)}>\r\n \r\n {this.state.region === 'us' ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n this.setState({ anchorTimeframe: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorTimeframe: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorTimeframe: undefined, timeframe: 'realtime' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'realtime' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last7days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last7days' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last30days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last30days' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last60days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last60days' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last90days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last90days' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last180days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last180days' ? : }\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n
\r\n \r\n \r\n {this.renderMapCard()}\r\n \r\n \r\n \r\n \r\n {this.renderTotalViewsCard()}\r\n \r\n \r\n {this.renderSermonsViewedCard()}\r\n \r\n \r\n {this.renderRegionsReachedCard()}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {this.renderTopCountriesCard()}\r\n \r\n \r\n {this.renderTopContributionsCard()}\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withWidth()(withStyles(styles)(Home)));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport InsertCommentIcon from '@material-ui/icons/InsertComment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport StarHalfIcon from '@material-ui/icons/StarHalf';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport 'url-search-params-polyfill';\r\nimport Sermon from '../../entities/Sermon';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n ratingStarContainer: {\r\n verticalAlign: \"text-top\",\r\n marginLeft: \"4px\"\r\n },\r\n ratingStar: {\r\n fontSize: \"16px\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 4,\r\n right: theme.spacing() * 4,\r\n [theme.breakpoints.down('md')]: {\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n tagsAndScriptures: {\r\n fontStyle: 'italic',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n infiniteScroll: {\r\n width: '100%',\r\n },\r\n cardContainer: {\r\n width: \"100%\",\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n rejectionNotes: {\r\n paddingTop: 10,\r\n borderTop: '1px solid #d90000'\r\n }\r\n });\r\n\r\nenum FilterValue {\r\n Rejected = 4,\r\n Approved = 3,\r\n Pending = 1,\r\n Deleted = 5,\r\n All = 0\r\n}\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n sermons: Sermon[];\r\n filteredSermons: Sermon[];\r\n visibleSermonCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: FilterValue;\r\n showDeleteDialog: boolean;\r\n selectedSermonIdToDelete?: number;\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass Sermons extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n sermons: [],\r\n filteredSermons: [],\r\n visibleSermonCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: FilterValue.All,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - My Sermons\";\r\n\r\n try {\r\n const sermons = await ContributionsService.getSermons();\r\n\r\n let filterValue = FilterValue.All;\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('status') && params.get('status')!.match(/rejected/i)) {\r\n filterValue = FilterValue.Rejected;\r\n }\r\n else if (params.get('status') && params.get('status')!.match(/approved/i)) {\r\n filterValue = FilterValue.Approved;\r\n }\r\n else if (params.get('status') && params.get('status')!.match(/pending/i)) {\r\n filterValue = FilterValue.Pending;\r\n }\r\n\r\n if (sermons) {\r\n this.setState({ sermons, filterValue, loading: false }, this.updateFilteredSermons);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteSermon() {\r\n if (this.state.selectedSermonIdToDelete) {\r\n try {\r\n const sermon = this.state.sermons.find(s => s.id === this.state.selectedSermonIdToDelete)\r\n if(sermon === undefined)\r\n return;\r\n \r\n const response = await ContributionsService.deleteSermon(sermon.id, sermon.sermonSeriesId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermons = this.state.sermons;\r\n sermons = sermons.filter(l => l.id !== this.state.selectedSermonIdToDelete!);\r\n\r\n this.setState({\r\n sermons,\r\n selectedSermonIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The sermon was deleted'\r\n }, this.updateFilteredSermons);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredSermons);\r\n }\r\n\r\n updateFilteredSermons() {\r\n\r\n let filteredSermons = this.state.sermons;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredSermons = filteredSermons.filter(s => {\r\n\r\n if (s.title && s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.intro && s.intro.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.scriptures && s.scriptures.some(sr => sr.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n if (s.tags && s.tags.some(tg => tg.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.state.filterValue !== 0) {\r\n filteredSermons = filteredSermons.filter(s => +s.status === +this.state.filterValue);\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredSermons.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredSermons });\r\n }\r\n\r\n renderStars = (rating: number) => {\r\n let val: JSX.Element[] = [];\r\n\r\n for (let i = 1; i <= 5; i++) {\r\n if (i <= rating) {\r\n val.push();\r\n } else if (i <= Math.ceil(rating)) {\r\n val.push();\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleSermons = this.state.filteredSermons.slice(0, this.state.visibleSermonCount);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n My Sermons\r\n \r\n {!this.state.loading && this.state.sermons.length > 0 && this.state.sermons.length === this.state.filteredSermons.length &&\r\n \r\n {this.state.sermons.length} shared sermon{this.state.sermons.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.sermons.length > 0 && this.state.sermons.length !== this.state.filteredSermons.length &&\r\n \r\n {this.state.filteredSermons.length} match{this.state.filteredSermons.length === 1 ? '' : 'es'} of {this.state.sermons.length} shared sermon{this.state.sermons.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Rating')}>\r\n \r\n {this.state.orderBy === 'Rating' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Views')}>\r\n \r\n {this.state.orderBy === 'Views' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.All }, this.updateFilteredSermons)}>\r\n \r\n {this.state.filterValue === FilterValue.All ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Approved }, this.updateFilteredSermons)}>\r\n \r\n {this.state.filterValue === FilterValue.Approved ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Pending }, this.updateFilteredSermons)}>\r\n \r\n {this.state.filterValue === FilterValue.Pending ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Rejected }, this.updateFilteredSermons)}>\r\n \r\n {this.state.filterValue === FilterValue.Rejected ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleSermonCount: 10 }, this.updateFilteredSermons)}\r\n />\r\n
\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.sermons.length === 0 &&\r\n \r\n \r\n
\r\n You haven't shared any sermons yet. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.sermons.length > 0 && visibleSermons.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleSermons.length > 0 &&\r\n this.setState({ visibleSermonCount: this.state.visibleSermonCount + 10 })}\r\n hasMore={visibleSermons.length < this.state.filteredSermons.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleSermons.map(sermon =>\r\n \r\n \r\n \r\n {new Date(sermon.date).toLocaleDateString()}\r\n \r\n \r\n {FilterValue[sermon.status]}\r\n \r\n \r\n \r\n {`${sermon.views} ${sermon.views === 1 ? \"view\" : \"views\"} | ${sermon.ratingCount} ${sermon.ratingCount === 1 ? \"rating\" : \"ratings\"}`}\r\n {this.renderStars(sermon.rating)}\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n\r\n \r\n Scripture: {sermon.scriptures.length > 0 ? : 'None'}\r\n
\r\n Tags: {sermon.tags.length > 0 ? : 'None'}\r\n
\r\n
\r\n {sermon.rejectionNotes &&\r\n \r\n
\r\n Notes from your reviewer\r\n ') }} />\r\n
\r\n
\r\n }\r\n
\r\n )}\r\n \r\n }\r\n
\r\n\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Sermon\r\n \r\n \r\n Are you sure you wish to delete this sermon?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Add Sermon\r\n \r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Sermons));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport InsertCommentIcon from '@material-ui/icons/InsertComment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport StarHalfIcon from '@material-ui/icons/StarHalf';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { Link } from 'react-router-dom';\r\nimport SermonSeries from '../../entities/SermonSeries';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n ratingStarContainer: {\r\n verticalAlign: \"text-top\",\r\n marginLeft: \"4px\"\r\n },\r\n ratingStar: {\r\n fontSize: \"16px\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 4,\r\n right: theme.spacing() * 4,\r\n [theme.breakpoints.down('md')]: {\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n tagsAndScriptures: {\r\n fontStyle: 'italic',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n infiniteScroll: {\r\n width: '100%',\r\n },\r\n cardContainer: {\r\n width: \"100%\",\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n sermonSeries: SermonSeries[];\r\n filteredSermonSeries: SermonSeries[];\r\n visibleSermonSeriesCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n showDeleteDialog: boolean;\r\n selectedSermonSeriesIdToDelete?: number;\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass SermonSeriesPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n sermonSeries: [],\r\n filteredSermonSeries: [],\r\n visibleSermonSeriesCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - My Sermon Series\";\r\n\r\n try {\r\n const sermonSeries = await ContributionsService.getAllSermonSeries();\r\n\r\n if (sermonSeries) {\r\n this.setState({ sermonSeries, filteredSermonSeries: sermonSeries, loading: false });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteSermonSeries() {\r\n if (this.state.selectedSermonSeriesIdToDelete) {\r\n try {\r\n const response = await ContributionsService.deleteSermonSeries(this.state.selectedSermonSeriesIdToDelete);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonSeries = this.state.sermonSeries;\r\n sermonSeries = sermonSeries.filter(l => l.id !== this.state.selectedSermonSeriesIdToDelete!);\r\n\r\n this.setState({\r\n sermonSeries,\r\n selectedSermonSeriesIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The sermon series was deleted'\r\n }, this.updateFilteredSermonSeries);\r\n\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredSermonSeries);\r\n }\r\n\r\n updateFilteredSermonSeries() {\r\n\r\n let filteredSermonSeries = this.state.sermonSeries;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredSermonSeries = filteredSermonSeries.filter(s => {\r\n\r\n if (s.title && s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.intro && s.intro.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.scriptures && s.scriptures.some(sr => sr.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n if (s.tags && s.tags.some(tg => tg.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredSermonSeries.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredSermonSeries });\r\n }\r\n\r\n renderStars = (rating: number) => {\r\n let val: JSX.Element[] = [];\r\n\r\n for (let i = 1; i <= 5; i++) {\r\n if (i <= rating) {\r\n val.push();\r\n } else if (i <= Math.ceil(rating)) {\r\n val.push();\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleSermonSeries = this.state.filteredSermonSeries.slice(0, this.state.visibleSermonSeriesCount);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n My Sermon Series\r\n \r\n {!this.state.loading && this.state.sermonSeries.length > 0 && this.state.sermonSeries.length === this.state.filteredSermonSeries.length &&\r\n \r\n {this.state.sermonSeries.length} shared sermon series\r\n \r\n }\r\n {!this.state.loading && this.state.sermonSeries.length > 0 && this.state.sermonSeries.length !== this.state.filteredSermonSeries.length &&\r\n \r\n {this.state.filteredSermonSeries.length} match{this.state.filteredSermonSeries.length === 1 ? '' : 'es'} of {this.state.sermonSeries.length} shared sermon series\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Rating')}>\r\n \r\n {this.state.orderBy === 'Rating' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Views')}>\r\n \r\n {this.state.orderBy === 'Views' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleSermonSeriesCount: 10 }, this.updateFilteredSermonSeries)}\r\n />\r\n
\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.sermonSeries.length === 0 &&\r\n \r\n \r\n
\r\n You haven't shared any sermon series yet. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.sermonSeries.length > 0 && visibleSermonSeries.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleSermonSeries.length > 0 &&\r\n this.setState({ visibleSermonSeriesCount: this.state.visibleSermonSeriesCount + 10 })}\r\n hasMore={visibleSermonSeries.length < this.state.filteredSermonSeries.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleSermonSeries.map(series =>\r\n \r\n \r\n \r\n {new Date(series.date).toLocaleDateString()}\r\n \r\n \r\n\r\n \r\n {series.views} {series.views === 1 ? \"view\" : \"views\"} | {series.ratingCount} {series.ratingCount === 1 ? \"rating\" : \"ratings\"}\r\n {this.renderStars(series.rating)}\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Sermons in Series: {series.sermonCount}\r\n
\r\n Scripture: {series.scriptures.length > 0 ? : 'None'}\r\n
\r\n Tags: {series.tags.length > 0 ? : 'None'}\r\n
\r\n
\r\n
\r\n )}\r\n \r\n }\r\n
\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Sermon Series\r\n \r\n \r\n Are you sure you wish to delete this sermon series?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Add Series\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SermonSeriesPage));","export interface MediaItem {\r\n id: number;\r\n title: string;\r\n summary: string;\r\n type: MediaType;\r\n isEnabled: boolean;\r\n needsAttention: boolean;\r\n dateAvailable?: Date;\r\n previewImageUrl: string;\r\n url: string;\r\n mediaProducerId: number;\r\n mediaProducer: string;\r\n scriptureReferences: string[];\r\n genres: string[];\r\n styles: string[];\r\n topics: string[];\r\n status: MediaItemStatus;\r\n parentId?: number;\r\n} \r\n\r\nexport enum MediaType {\r\n Still_Background = \"Still Background\",\r\n Countdown_Video = \"Countdown Video\",\r\n Video_Illustration = \"Video Illustration\",\r\n Motion_Background = \"Motion Background\",\r\n Preaching_Slide = \"Preaching Slide\",\r\n Worship_Lyric_Slide = \"Worship Lyric Slide\",\r\n Comedy = \"Comedy\",\r\n Inspirational = \"Inspirational\",\r\n Small_Group_Study = \"Small Group Study\",\r\n Social_Graphic = \"Social Graphic\"\r\n}\r\n\r\nexport enum MediaItemStatus {\r\n Pending = 0,\r\n Rejected,\r\n Approved\r\n}","import { ServerResponse, WebClient } from './ServiceHelper';\r\nimport { MediaItem, MediaType, MediaItemStatus } from '../entities/MediaItem';\r\n\r\nexport interface MediaItemHistory {\r\n id: number;\r\n imageUrl: string;\r\n title: string;\r\n type: string;\r\n summary: string;\r\n date: Date;\r\n shareableUrl: string;\r\n shareableUrlName: string;\r\n url: string;\r\n kitDownloadUrl: string;\r\n publiclyAvailable: boolean;\r\n shareLink: string;\r\n views: number;\r\n invoiceId?: number;\r\n invoiceNumber?: string;\r\n}\r\n\r\nexport interface MediaItemInvoice {\r\n orderDate: Date;\r\n orderId: number;\r\n title: string;\r\n purchasePrice: number;\r\n}\r\n\r\ninterface ServerMediaItem {\r\n id: number;\r\n title: string;\r\n summary: string;\r\n type: string;\r\n isEnabled: boolean;\r\n needsAttention: boolean;\r\n dateAvailable?: string;\r\n previewImageUrl: string;\r\n url: string;\r\n mediaProducerId: number;\r\n mediaProducer: string;\r\n scriptureReferences: string[];\r\n genres: string[];\r\n styles: string[];\r\n topics: string[];\r\n status: MediaItemStatus\r\n}\r\nexport interface SearchMediaItemRequest {\r\n query: string;\r\n skip: number;\r\n take: number;\r\n sortBy: string;\r\n sortDescending: boolean;\r\n type: string;\r\n includeDisabled: boolean;\r\n needsAttention?: boolean;\r\n status: MediaItemStatus;\r\n}\r\n\r\nexport interface MediaDisableRequest {\r\n title: string;\r\n id: number;\r\n reason: string;\r\n}\r\n\r\nexport interface MediaDeleteRequest {\r\n title: string;\r\n id: number;\r\n reason: string;\r\n}\r\n\r\nexport interface MediaEnableRequest {\r\n title: string;\r\n id: number;\r\n reason: string;\r\n}\r\n\r\nexport interface MediaCancelRequest {\r\n id: number;\r\n}\r\nexport class MediaService {\r\n\r\n public static async getDownloadHistory() {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetDownloadHistory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getPurchaseHistory() {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetPurchaseHistory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getActivationHistory() {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetActivationHistory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getMediaInvoice(id: number) {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetMediaInvoice/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async GetInvoice(id: number) {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetInvoice/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async searchMediaItems(request: SearchMediaItemRequest) {\r\n let response = await WebClient.Post(\"api/Media/SearchMedia\", request);\r\n if (ServerResponse.isSuccess(response)) {\r\n let translatedResponse: ServerResponse = {\r\n message: response.message,\r\n data: response.data.map(r => {\r\n let mediaItem: MediaItem = {\r\n ...r,\r\n type: MediaType[r.type],\r\n dateAvailable: r.dateAvailable ? new Date(r.dateAvailable) : undefined\r\n };\r\n return mediaItem;\r\n })\r\n };\r\n return translatedResponse;\r\n }\r\n return response;\r\n }\r\n \r\n static async requestDisable(request: MediaDisableRequest) {\r\n return await WebClient.Post(\"api/Media/RequestDisable\", request); \r\n }\r\n\r\n static async requestDelete(request: MediaDeleteRequest) {\r\n return await WebClient.Post(\"api/Media/RequestDelete\", request); \r\n }\r\n\r\n static async requestEnable(request: MediaEnableRequest) {\r\n return await WebClient.Post(\"api/Media/RequestEnable\", request); \r\n }\r\n\r\n static async requestCancel(request: MediaCancelRequest) {\r\n return await WebClient.Post(\"api/Media/CancelPending\", request); \r\n }\r\n}","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport SaveAltIcon from '@material-ui/icons/SaveAlt';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport 'url-search-params-polyfill';\r\nimport { MediaItemHistory, MediaService } from '../../services/MediaService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n unselectedListItem: {\r\n marginLeft: \"22px\"\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n maxWidth: '500px',\r\n marginBottom: \"16px\",\r\n [theme.breakpoints.up('md')]: {\r\n minWidth: '500px',\r\n },\r\n },\r\n cardImage: {\r\n height: 250,\r\n backgroundSize: \"contain\"\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\nenum FilterValue {\r\n PreachingSlide = \"Preaching Slide\",\r\n WorshipLyricSlide = \"Worship Lyric Slide\",\r\n SocialGraphic = \"Social Graphic\",\r\n MotionBackground = \"Motion Background\",\r\n VideoIllustration = \"Video Illustration\",\r\n Comedy = \"Comedy\",\r\n Inspirational = \"Inspirational\",\r\n SmallGroupStudy = \"Small Group Study\",\r\n CountdownVideo = \"Countdown Video\",\r\n StillBackground = \"Still Background\",\r\n ChurchMediaSet = \"Church Media Set\",\r\n All = \"\"\r\n}\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n mediaItems: MediaItemHistory[];\r\n filteredMediaItems: MediaItemHistory[];\r\n visibleMediaItemCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: FilterValue;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass Downloads extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n mediaItems: [],\r\n filteredMediaItems: [],\r\n visibleMediaItemCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: FilterValue.All,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Download History\";\r\n\r\n try {\r\n const mediaItems = await MediaService.getDownloadHistory();\r\n\r\n let filterValue = FilterValue.All;\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('type') && params.get('type')!.match(/stillBackgrounds/i)) {\r\n filterValue = FilterValue.StillBackground;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/countdownvideos/i)) {\r\n filterValue = FilterValue.CountdownVideo;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/motionbackgrounds/i)) {\r\n filterValue = FilterValue.MotionBackground;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/preachingslides/i)) {\r\n filterValue = FilterValue.PreachingSlide;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/worshiplyricslides/i)) {\r\n filterValue = FilterValue.WorshipLyricSlide;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/videoillustrations/i)) {\r\n filterValue = FilterValue.VideoIllustration;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/socialgraphics/i)) {\r\n filterValue = FilterValue.SocialGraphic;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/comedy/i)) {\r\n filterValue = FilterValue.Comedy;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/inspirational/i)) {\r\n filterValue = FilterValue.Inspirational;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/smallgroupstudy/i)) {\r\n filterValue = FilterValue.SmallGroupStudy;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/churchmediaset/i)) {\r\n filterValue = FilterValue.ChurchMediaSet;\r\n }\r\n\r\n if (mediaItems) {\r\n this.setState({ mediaItems, filterValue, loading: false }, this.updateFilteredMediaItems);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n \r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n const htmlRegex = new RegExp(/(<(?:.|\\n)*?>)/, \"gm\");\r\n \r\n const contentNodes:React.ReactNode[] = text.split(htmlRegex) ?? [];\r\n const highlightedNodes = contentNodes.map((node) => {\r\n if(!node){\r\n return node\r\n } \r\n const value = node.toString();\r\n if(htmlRegex.test(value)){\r\n return ' ';\r\n } else {\r\n return value.replace(regexp, '$1');\r\n }\r\n })\r\n return highlightedNodes.join('')\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredMediaItems);\r\n }\r\n\r\n updateFilteredMediaItems() {\r\n\r\n let filteredMediaItems = this.state.mediaItems;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredMediaItems = filteredMediaItems.filter(s => {\r\n\r\n if (s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.summary.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.state.filterValue !== \"\") {\r\n filteredMediaItems = filteredMediaItems.filter(s => s.type === this.state.filterValue);\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredMediaItems.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredMediaItems });\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleMediaItems = this.state.filteredMediaItems.slice(0, this.state.visibleMediaItemCount);\r\n\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Download History\r\n \r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length === this.state.filteredMediaItems.length &&\r\n \r\n {this.state.mediaItems.length} download{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length !== this.state.filteredMediaItems.length &&\r\n \r\n {this.state.filteredMediaItems.length} match{this.state.filteredMediaItems.length === 1 ? '' : 'es'} of {this.state.mediaItems.length} download{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.All }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.All ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.ChurchMediaSet }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.ChurchMediaSet ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.CountdownVideo }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.CountdownVideo ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.StillBackground }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.StillBackground ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.MotionBackground }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.MotionBackground ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.PreachingSlide }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.PreachingSlide ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.VideoIllustration }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.VideoIllustration ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.WorshipLyricSlide }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.WorshipLyricSlide ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Comedy }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.Comedy ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Inspirational }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.Inspirational ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SmallGroupStudy }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SmallGroupStudy ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SocialGraphic }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SocialGraphic ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleMediaItemCount: 10 }, this.updateFilteredMediaItems)}\r\n />\r\n
\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length === 0 &&\r\n \r\n \r\n
\r\n You haven't downloaded any media.\r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && visibleMediaItems.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleMediaItems.length > 0 &&\r\n this.setState({ visibleMediaItemCount: this.state.visibleMediaItemCount + 10 })}\r\n hasMore={visibleMediaItems.length < this.state.filteredMediaItems.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleMediaItems.map(mediaItem =>\r\n \r\n \r\n \r\n \r\n {new Date(mediaItem.date).toLocaleDateString()}\r\n \r\n \r\n {mediaItem.type}\r\n \r\n \r\n \r\n \r\n \r\n {!mediaItem.kitDownloadUrl && mediaItem.publiclyAvailable && mediaItem.url && mediaItem.url.indexOf('/') >= 0 &&\r\n <>\r\n \r\n {(mediaItem.shareLink && mediaItem.shareableUrl && mediaItem.shareableUrlName) &&\r\n \r\n }\r\n \r\n }\r\n {mediaItem.kitDownloadUrl &&\r\n \r\n }\r\n \r\n \r\n {mediaItem.shareLink &&\r\n \r\n Share link: \r\n Views: {mediaItem.views}\r\n \r\n }\r\n \r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Downloads));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport SaveAltIcon from '@material-ui/icons/SaveAlt';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { MediaItemHistory, MediaService } from '../../services/MediaService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\n\r\n\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n maxWidth: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardImage: {\r\n height: 250,\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n mediaItems: MediaItemHistory[];\r\n filteredMediaItems: MediaItemHistory[];\r\n visibleMediaItemCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: \"All\" | \"Sermon Series Kits\" | \"Premium Sermon Kits\"\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass Activations extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n mediaItems: [],\r\n filteredMediaItems: [],\r\n visibleMediaItemCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: \"All\",\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Kit Activation History\";\r\n\r\n try {\r\n const mediaItems = await MediaService.getActivationHistory();\r\n\r\n if (mediaItems) {\r\n this.setState({ mediaItems, loading: false }, this.updateFilteredMediaItems);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredMediaItems);\r\n }\r\n\r\n updateFilteredMediaItems() {\r\n\r\n let filteredMediaItems = this.state.mediaItems;\r\n\r\n switch(this.state.filterValue) {\r\n case \"All\":\r\n break;\r\n case \"Sermon Series Kits\":\r\n filteredMediaItems = filteredMediaItems.filter(i => i.type === \"Sermon Series Kit\");\r\n break;\r\n case \"Premium Sermon Kits\":\r\n filteredMediaItems = filteredMediaItems.filter(i => i.type === \"Premium Sermon Kit\");\r\n break;\r\n }\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredMediaItems = filteredMediaItems.filter(s => {\r\n\r\n if (s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.summary.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredMediaItems.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredMediaItems });\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleMediaItems = this.state.filteredMediaItems.slice(0, this.state.visibleMediaItemCount);\r\n\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Kit Activation History\r\n \r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length === this.state.filteredMediaItems.length &&\r\n \r\n {this.state.mediaItems.length} activation{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length !== this.state.filteredMediaItems.length &&\r\n \r\n {this.state.filteredMediaItems.length} match{this.state.filteredMediaItems.length === 1 ? '' : 'es'} of {this.state.mediaItems.length} activation{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: \"All\" }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === \"All\" ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: \"Sermon Series Kits\" }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === \"Sermon Series Kits\" ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: \"Premium Sermon Kits\" }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === \"Premium Sermon Kits\" ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleMediaItemCount: 10 }, this.updateFilteredMediaItems)}\r\n />\r\n
\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length === 0 &&\r\n \r\n \r\n
\r\n You haven't activated any kits.\r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && visibleMediaItems.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleMediaItems.length > 0 &&\r\n this.setState({ visibleMediaItemCount: this.state.visibleMediaItemCount + 10 })}\r\n hasMore={visibleMediaItems.length < this.state.filteredMediaItems.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleMediaItems.map(mediaItem =>\r\n \r\n \r\n \r\n \r\n {new Date(mediaItem.date).toLocaleDateString()}\r\n \r\n \r\n {mediaItem.type}\r\n \r\n \r\n \r\n \r\n {mediaItem.url && mediaItem.url.indexOf('/') >= 0 &&\r\n \r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Activations));","export interface VideoMedia {\r\n id: number;\r\n parentId?: number;\r\n type: VideoMediaType;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n isEnabled: boolean;\r\n needsAttention: boolean;\r\n dateAvailable?: Date;\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n thumbnailImageUrl?: string;\r\n posterImageUrl?: string;\r\n previewVideoUrl?: string;\r\n url: string;\r\n genres: string[];\r\n audiences: string[];\r\n styles: string[];\r\n scriptureReferences: string[];\r\n topics: string[];\r\n status: MediaStatus;\r\n adminComment?: string;\r\n producerComment?: string\r\n}\r\n\r\nexport enum MediaStatus {\r\n Pending = 0,\r\n Rejected,\r\n Approved\r\n}\r\n\r\nexport enum VideoMediaType {\r\n /// A countdown video.\r\n Countdown_Video = \"Countdown Video\",\r\n /// A video illustration.\r\n Video_Illustration = \"Video Illustration\",\r\n /// A motion background.\r\n Motion_Background = \"Motion Background\",\r\n}","import * as React from 'react';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../withRoot';\r\n\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { green } from '@material-ui/core/colors';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n onClose?: () => void;\r\n message?: string;\r\n autoHideDuration?: number;\r\n}\r\n\r\ntype State = {\r\n};\r\n\r\nclass ForgotPassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n };\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n {this.props.message}\r\n }\r\n action={\r\n this.props.onClose\r\n &&\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ForgotPassword));","import * as React from 'react';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../withRoot';\r\n\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n onClose?: () => void;\r\n message?: string;\r\n autoHideDuration?: number;\r\n}\r\n\r\ntype State = {\r\n};\r\n\r\nclass ForgotPassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n };\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ForgotPassword));","import * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport withRoot from '../../../withRoot';\r\n\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport EyeIcon from '@material-ui/icons/RemoveRedEye';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport SpeedDialIcon from '@material-ui/lab/SpeedDialIcon';\r\nimport TimerIcon from '@material-ui/icons/Timer';\r\nimport MovieCreationIcon from '@material-ui/icons/MovieCreation';\r\nimport WallpaperIcon from '@material-ui/icons/Wallpaper';\r\n\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\n\r\nimport AppConfig from '../../../entities/AppConfig';\r\nimport ApplicationUser from '../../../entities/ApplicationUser';\r\nimport { MediaItem, MediaType, MediaItemStatus } from '../../../entities/MediaItem';\r\nimport { MediaService, SearchMediaItemRequest, MediaDisableRequest, MediaEnableRequest } from '../../../services/MediaService';\r\nimport { ServerResponse } from '../../../services/ServiceHelper';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Button from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\r\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\r\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\r\nimport SpeedDial from '@material-ui/lab/SpeedDial';\r\nimport SpeedDialAction from '@material-ui/lab/SpeedDialAction';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SuccessSnackbar from '../../../components/SuccessSnackbar';\r\nimport ErrorSnackbar from '../../../components/ErrorSnackbar';\r\nimport { MediaStatus } from '../../../entities/VideoMedia';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n toolbar: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'block',\r\n padding: 0\r\n }\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n [theme.breakpoints.down('sm')]: {\r\n float: 'left'\r\n }\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n sort: {\r\n display: \"flex\",\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'block',\r\n float: 'right'\r\n }\r\n },\r\n switch: {\r\n width: 140\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n menuListItemIcon: {\r\n paddingLeft: \"0px\",\r\n paddingRight: \"0px\",\r\n marginRight: \"0px\"\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n [theme.breakpoints.down('sm')]: {\r\n width: '100%'\r\n }\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\",\r\n [theme.breakpoints.down('sm')]: {\r\n width: \"100%\",\r\n }\r\n },\r\n cardHeader: {\r\n paddingBottom: 0,\r\n paddingTop: 0\r\n },\r\n avatar: {\r\n margin: '5px 0px'\r\n },\r\n removeBorderRadius: {\r\n \"&:first-child\": {\r\n borderTopLeftRadius: 0,\r\n borderTopRightRadius: 0,\r\n },\r\n \"&:last-child\": {\r\n borderBottomLeftRadius: 0,\r\n borderBottomRightRadius: 0,\r\n }\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 4,\r\n right: theme.spacing() * 4,\r\n [theme.breakpoints.down('md')]: {\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n },\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ type?: string }>, WithStyles {\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n mediaItems: MediaItem[];\r\n hasMore: boolean;\r\n sortBy: string;\r\n anchorSortMenu?: HTMLElement;\r\n sortDescending: boolean;\r\n filterMediaType: string;\r\n filterStatus: MediaItemStatus;\r\n anchorFilterMenu?: HTMLElement;\r\n anchorFilterStatusMenu?: HTMLElement;\r\n showSelectProducerDialog: boolean;\r\n showDisabledMedia: boolean;\r\n queryText: string;\r\n mediaItemToDisable?: MediaItem;\r\n mediaItemToEnable?: MediaItem;\r\n enableSubmit: boolean;\r\n openSpeedDial: boolean;\r\n disableReason: string;\r\n enableReason: string;\r\n successMessage?: string;\r\n errorMessage?: string;\r\n filterNeedsAttention?: boolean;\r\n filterNeedsaAttentionMenu?: HTMLElement;\r\n}\r\n\r\nclass ManageMedia extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n let filterMediaType = \"All\";\r\n if (props.match.params.type) {\r\n switch (props.match.params.type) {\r\n case \"preaching-slide\":\r\n filterMediaType = \"Preaching Slide\";\r\n break;\r\n case \"worship-lyric-slides\":\r\n filterMediaType = \"Worship Lyric Slide\";\r\n break;\r\n case \"video-illustrations\":\r\n filterMediaType = \"Video Illustration\";\r\n break;\r\n case \"motion-backgrounds\":\r\n filterMediaType = \"Motion Background\";\r\n break;\r\n case \"countdown-videos\":\r\n filterMediaType = \"Countdown Video\";\r\n break;\r\n case \"still-background\":\r\n filterMediaType = \"Still Background\";\r\n break;\r\n case \"documents\":\r\n filterMediaType = \"Document\";\r\n break;\r\n default:\r\n filterMediaType = \"All\";\r\n }\r\n }\r\n\r\n this.state = {\r\n loading: true,\r\n mediaItems: [],\r\n hasMore: true,\r\n sortBy: \"title\",\r\n sortDescending: false,\r\n filterMediaType: filterMediaType,\r\n showSelectProducerDialog: false,\r\n showDisabledMedia: false,\r\n queryText: \"\",\r\n enableSubmit: true,\r\n openSpeedDial: false,\r\n filterStatus: MediaItemStatus.Approved,\r\n disableReason: \"\",\r\n enableReason: \"\",\r\n filterNeedsAttention: undefined\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Admin - Manage All Media\";\r\n this.searchMediaItems(true);\r\n }\r\n\r\n onChangeShowDisabledMedia = () => {\r\n const { showDisabledMedia } = this.state;\r\n this.setState({ showDisabledMedia: !showDisabledMedia }, () => this.searchMediaItems(true));\r\n }\r\n\r\n onChangeFilterBy(filterBy: string) {\r\n this.setState({ filterMediaType: filterBy, anchorFilterMenu: undefined }, () => this.searchMediaItems(true));\r\n }\r\n\r\n onChangeItemStatusBy(filterBy: MediaItemStatus) {\r\n this.setState({ filterStatus: filterBy, anchorFilterStatusMenu: undefined }, () => this.searchMediaItems(true));\r\n }\r\n\r\n onChangeSortBy(sortBy: string) {\r\n this.setState({ sortBy, anchorSortMenu: undefined }, () => this.searchMediaItems(true));\r\n }\r\n\r\n onFilterNeedsAttention(needsAttention: boolean | undefined){\r\n this.setState({filterNeedsAttention: needsAttention, filterNeedsaAttentionMenu: undefined}, () => this.searchMediaItems(true))\r\n }\r\n\r\n searchMediaItems = async (reset: boolean) => {\r\n const { mediaItems, hasMore, filterMediaType, showDisabledMedia, sortBy, sortDescending, queryText, enableSubmit, filterStatus, filterNeedsAttention } = this.state;\r\n\r\n if ((!reset && !hasMore) || !enableSubmit) {\r\n return;\r\n }\r\n if (reset) {\r\n this.setState({ loading: true });\r\n }\r\n\r\n let searchRequest: SearchMediaItemRequest = {\r\n query: queryText,\r\n skip: reset ? 0 : mediaItems.length,\r\n take: 10,\r\n sortBy: sortBy,\r\n sortDescending,\r\n type: filterMediaType,\r\n includeDisabled: showDisabledMedia,\r\n status: filterStatus,\r\n needsAttention: filterNeedsAttention\r\n };\r\n let response = await MediaService.searchMediaItems(searchRequest);\r\n if (ServerResponse.isSuccess(response)) {\r\n let mediaItemsResult = reset ? response.data : [...mediaItems, ...response.data];\r\n this.setState({ mediaItems: mediaItemsResult, loading: false, hasMore: response.data.length === 10 });\r\n }\r\n }\r\n\r\n onDisable = async () => {\r\n const { mediaItemToDisable, disableReason } = this.state;\r\n\r\n if (!mediaItemToDisable) {\r\n return;\r\n }\r\n\r\n this.setState({ enableSubmit: false });\r\n\r\n var request: MediaDisableRequest = {\r\n id: mediaItemToDisable.id,\r\n title: mediaItemToDisable.title,\r\n reason: disableReason\r\n };\r\n\r\n let response = await MediaService.requestDisable(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n disableReason: \"\",\r\n mediaItemToDisable: undefined,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n enableSubmit: true,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n onEnable = async () => {\r\n const { mediaItemToEnable, enableReason } = this.state;\r\n\r\n if (!mediaItemToEnable) {\r\n return;\r\n }\r\n\r\n this.setState({ enableSubmit: false });\r\n\r\n var request: MediaEnableRequest = {\r\n id: mediaItemToEnable.id,\r\n title: mediaItemToEnable.title,\r\n reason: enableReason\r\n };\r\n\r\n let response = await MediaService.requestEnable(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n enableReason: \"\",\r\n mediaItemToEnable: undefined,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n enableSubmit: true,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n getEditLink(mediaItem: MediaItem) {\r\n let status = mediaItem.status === MediaItemStatus.Approved ? 'approved' : 'pending';\r\n if (mediaItem.type === MediaType.Countdown_Video) {\r\n return `/media/video-media/${status}/edit/${mediaItem.id}`;\r\n } else if (mediaItem.type === MediaType.Motion_Background) {\r\n return `/media/video-media/${status}/edit/${mediaItem.id}`;\r\n } else if (mediaItem.type === MediaType.Video_Illustration) {\r\n return `/media/video-media/${status}/edit/${mediaItem.id}`;\r\n }\r\n\r\n return ``;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const {\r\n loading,\r\n mediaItems,\r\n hasMore,\r\n filterMediaType,\r\n filterStatus,\r\n anchorFilterMenu,\r\n anchorFilterStatusMenu,\r\n showDisabledMedia,\r\n sortBy,\r\n sortDescending,\r\n anchorSortMenu,\r\n queryText,\r\n mediaItemToDisable,\r\n mediaItemToEnable,\r\n enableSubmit,\r\n openSpeedDial,\r\n disableReason,\r\n enableReason,\r\n filterNeedsAttention,\r\n filterNeedsaAttentionMenu\r\n } = this.state;\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n Manage Media\r\n \r\n
\r\n
\r\n
\r\n }\r\n label={Show Disabled Media}\r\n />\r\n
\r\n
\r\n \r\n this.setState({ filterNeedsaAttentionMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.onFilterNeedsAttention(undefined)}>\r\n \r\n {filterNeedsAttention === undefined ? : }\r\n \r\n \r\n \r\n this.onFilterNeedsAttention(true)}>\r\n \r\n {filterNeedsAttention ? : }\r\n \r\n \r\n \r\n this.onFilterNeedsAttention(false)}>\r\n \r\n {filterNeedsAttention === false ? : }\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n this.setState({ anchorFilterMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.onChangeFilterBy('All')}>\r\n \r\n {filterMediaType === 'All' ? : }\r\n \r\n \r\n \r\n this.onChangeFilterBy('Video Illustration')}>\r\n \r\n {filterMediaType === 'Video Illustration' ? : }\r\n \r\n \r\n \r\n this.onChangeFilterBy('Motion Background')}>\r\n \r\n {filterMediaType === 'Motion Background' ? : }\r\n \r\n \r\n \r\n this.onChangeFilterBy('Countdown Video')}>\r\n \r\n {filterMediaType === 'Countdown Video' ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n this.setState({ anchorFilterStatusMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.onChangeItemStatusBy(MediaItemStatus.Approved)}>\r\n \r\n {filterStatus === MediaItemStatus.Approved ? : }\r\n \r\n \r\n \r\n this.onChangeItemStatusBy(MediaItemStatus.Pending)}>\r\n \r\n {filterStatus === MediaItemStatus.Pending ? : }\r\n \r\n \r\n \r\n this.onChangeItemStatusBy(MediaItemStatus.Rejected)}>\r\n \r\n {filterStatus === MediaItemStatus.Rejected ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n this.setState({ anchorSortMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.onChangeSortBy('dateAvailable')}>\r\n \r\n {sortBy === 'dateAvailable' ? : }\r\n \r\n \r\n \r\n this.onChangeSortBy('title')}>\r\n \r\n {sortBy === 'title' ? : }\r\n \r\n \r\n \r\n \r\n\r\n this.setState({ sortDescending: !sortDescending }, () => this.searchMediaItems(true))}>\r\n {sortDescending ? : }\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value }, () => this.searchMediaItems(true))}\r\n />\r\n
\r\n \r\n \r\n {\r\n loading\r\n &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {\r\n !loading\r\n &&\r\n mediaItems.length === 0\r\n &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {\r\n !loading\r\n &&\r\n mediaItems.length > 0\r\n &&\r\n this.searchMediaItems(false)}\r\n hasMore={hasMore}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {mediaItems.map(mediaItem =>\r\n \r\n \r\n
\r\n { mediaItem.needsAttention &&\r\n \r\n Needs Attention\r\n \r\n }\r\n \r\n {mediaItem.status === MediaItemStatus.Approved && (mediaItem.isEnabled ? \"Approved: Enabled\" : \"Approved: Disabled\")}\r\n {mediaItem.status === MediaItemStatus.Pending && \"Pending\"}\r\n {mediaItem.status === MediaItemStatus.Rejected && \"Rejected\"}\r\n \r\n \r\n }\r\n title={}\r\n subheader={{mediaItem.mediaProducer} - {mediaItem.type}}\r\n />\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n {\r\n (!mediaItem.isEnabled && mediaItem.status === MediaItemStatus.Approved)\r\n &&\r\n <>\r\n \r\n \r\n }\r\n {\r\n this.getEditLink(mediaItem) &&\r\n (mediaItem.isEnabled && mediaItem.status === MediaItemStatus.Approved)\r\n &&\r\n <>\r\n \r\n \r\n }\r\n
\r\n {mediaItem.status === MediaItemStatus.Approved &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.getEditLink(mediaItem) &&\r\n\r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n }>\r\n \r\n Date Available: {mediaItem.dateAvailable ? mediaItem.dateAvailable.toLocaleDateString() : \"None\"}\r\n \r\n \r\n \r\n \r\n Topic{mediaItem.topics.length !== 1 && \"s\"}: {mediaItem.topics.length > 0 ? mediaItem.topics.join(', ') : 'None'}\r\n
\r\n Scripture{mediaItem.scriptureReferences.length !== 1 && \"s\"}: {mediaItem.scriptureReferences.length > 0 ? mediaItem.scriptureReferences.join(', ') : 'None'}\r\n
\r\n Style{mediaItem.styles.length !== 1 && \"s\"}: {mediaItem.styles.length > 0 ? mediaItem.styles.join(', ') : 'None'}\r\n
\r\n Genre{mediaItem.genres.length !== 1 && \"s\"}: {mediaItem.genres.length > 0 ? mediaItem.genres.join(', ') : 'None'}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n )}\r\n \r\n }\r\n \r\n {this.props.user.roles.some(a => ['HasCountdownVideoAccess', 'HasMotionBackgroundAccess', 'HasVideoIllustrationAccess'].indexOf(a) >= 0) &&\r\n }\r\n onClick={() => this.setState({ openSpeedDial: !openSpeedDial })}\r\n onClose={() => this.setState({ openSpeedDial: false })}\r\n open={openSpeedDial}\r\n >\r\n {this.props.user.roles.filter((r) => r === 'HasCountdownVideoAccess').length > 0 &&\r\n }\r\n tooltipTitle={\"Countdown Video\"}\r\n tooltipOpen\r\n onClick={() => this.props.history.push(\"/media/video-media/pending/add/countdown-video\")}\r\n />\r\n }\r\n {this.props.user.roles.filter((r) => r === 'HasMotionBackgroundAccess').length > 0 &&\r\n }\r\n tooltipTitle={\"Motion Background\"}\r\n tooltipOpen\r\n onClick={() => this.props.history.push(\"/media/video-media/pending/add/motion-background\")}\r\n />\r\n }\r\n {this.props.user.roles.filter((r) => r === 'HasVideoIllustrationAccess').length > 0 &&\r\n }\r\n tooltipTitle={\"Video Illustration\"}\r\n tooltipOpen\r\n onClick={() => this.props.history.push(\"/media/video-media/pending/add/video-illustration\")}\r\n />\r\n }\r\n \r\n }\r\n this.setState({ mediaItemToDisable: undefined })}\r\n aria-labelledby=\"disable-dialog-title\"\r\n aria-describedby=\"disable-dialog-description\"\r\n >\r\n Disable Media\r\n \r\n \r\n Are you sure you wish to request {mediaItemToDisable && mediaItemToDisable.title} to be disabled?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be disabled.\r\n \r\n this.setState({ disableReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ errorMessage: undefined })}\r\n />\r\n this.setState({ successMessage: undefined })}\r\n />\r\n this.setState({ mediaItemToEnable: undefined })}\r\n aria-labelledby=\"enable-dialog-title\"\r\n aria-describedby=\"enable-dialog-description\"\r\n >\r\n Enable Media\r\n \r\n \r\n Are you sure you wish to request {mediaItemToEnable && mediaItemToEnable.title} to be enabled?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be enabled.\r\n \r\n this.setState({ enableReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ManageMedia));\r\n","import { WebClient, ServerResponse, ServerError, ServerModelValidationResponse } from \"./ServiceHelper\";\r\nimport { VideoMedia, VideoMediaType, MediaStatus } from \"../entities/VideoMedia\";\r\n\r\ninterface ServerVideoMedia {\r\n id: number;\r\n type: string;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n isEnabled: boolean;\r\n needsAttention: boolean;\r\n dateAvailable?: string;\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n previewImageUrl?: string;\r\n thumbnailImageUrl?: string;\r\n posterImageUrl?: string;\r\n url: string;\r\n scriptureReferences: string[];\r\n genres: string[];\r\n audiences: string[];\r\n styles: string[];\r\n topics: string[];\r\n status: MediaStatus;\r\n parentId?: number;\r\n adminComment?: string;\r\n producerComment?: string\r\n}\r\n\r\ninterface ServerPendingVideoMedia {\r\n id: number;\r\n type: string;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n dateAvailable?: string;\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n previewImageUrl?: string;\r\n thumbnailImageUrl?: string;\r\n posterImageUrl?: string;\r\n scriptureReferences: string[];\r\n genres: string[];\r\n audiences: string[];\r\n styles: string[];\r\n topics: string[];\r\n}\r\n\r\nexport interface VideoDownload {\r\n id: number;\r\n extension: string;\r\n quality: string;\r\n}\r\n\r\n\r\nexport interface SaveVideoMediaRequest {\r\n id?: number;\r\n parentId?: number;\r\n type: string;\r\n dateAvailable: Date;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n topics: string[];\r\n scriptureReferences: string[];\r\n serviceStyles: string[];\r\n audiences: string[];\r\n serviceGenres: string[];\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n status: MediaStatus;\r\n producerComment?: string;\r\n adminComment?: string\r\n}\r\n\r\nexport interface SaveRejectedVideoMediaRequest {\r\n id: number;\r\n parentId?: number;\r\n type: string;\r\n dateAvailable: Date;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n topics: string[];\r\n scriptureReferences: string[];\r\n serviceStyles: string[];\r\n audiences: string[];\r\n serviceGenres: string[];\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n status: MediaStatus;\r\n producerComment?: string;\r\n adminComment?: string\r\n}\r\n\r\nexport interface SaveApprovedVideoMediaRequest {\r\n id?: number;\r\n type: string;\r\n dateAvailable: Date;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n topics: string[];\r\n scriptureReferences: string[];\r\n serviceStyles: string[];\r\n audiences: string[];\r\n serviceGenres: string[];\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n status: MediaStatus;\r\n producerComment?: string;\r\n adminComment?: string\r\n}\r\n\r\nexport interface SaveVideoMediaPreviewImageRequest {\r\n videoMediaId: number;\r\n base64ThumbnailImage: string;\r\n base64PosterImage: string;\r\n}\r\n\r\nexport interface SaveMediaVideoAssetRequest {\r\n videoMediaId: number;\r\n previewVideoPath: string;\r\n downloadDetails: VideoMediaDetail[];\r\n}\r\n\r\ninterface VideoMediaDetail {\r\n path: string;\r\n extension: string;\r\n quality: string;\r\n duration: number;\r\n}\r\n\r\nexport interface CreateEncodingJobRequest {\r\n videoMediaId: number;\r\n videoMediaType: VideoMediaType;\r\n sourceFileName: string;\r\n sourceQuality: string;\r\n}\r\n\r\nexport interface EncodingJobStatus {\r\n isComplete: boolean;\r\n error?: string;\r\n completionPercentage: number;\r\n preview?: EncodingOutputDetail;\r\n downloads?: EncodingOutputDetail[];\r\n}\r\n\r\nexport interface EncodingOutputDetail {\r\n extension: string;\r\n path: string;\r\n quality: string;\r\n duration: number;\r\n}\r\n\r\nexport class VideoMediaService {\r\n static async getVideoMedia(id: number) {\r\n let response = await WebClient.Get(\"api/VideoMedia/GetVideoMedia/\" + id);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async getPendingVideoMedia(id: number) {\r\n let response = await WebClient.Get(\"api/VideoMedia/GetPendingVideoMedia/\" + id);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async getVideoMediaAvailableVideoDownloads(videoMediaId: number) {\r\n let response = await WebClient.Get(\"api/VideoMedia/GetVideoMediaAvailableVideoDownloads/\" + videoMediaId);\r\n return response;\r\n }\r\n\r\n static async getPendingVideoMediaAvailableVideoDownloads(videoMediaId: number) {\r\n let response = await WebClient.Get(\"api/VideoMedia/GetPendingVideoMediaAvailableVideoDownloads/\" + videoMediaId);\r\n return response;\r\n }\r\n\r\n static async generateVideoUploadUrl(id: number, type: VideoMediaType, fileName: string) {\r\n let response = await WebClient.Get<{ url: string }>(`api/VideoMedia/GenerateVideoUploadUrl?id=${id}&type=${type}&fileName=${fileName}`);\r\n return response;\r\n }\r\n\r\n static async saveVideoMedia(request: SaveVideoMediaRequest) {\r\n let response = await WebClient.Put(\"api/VideoMedia/SaveVideoMedia/\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async enableVideoMedia(videoMediaId: number) {\r\n let response = await WebClient.Put(\"api/VideoMedia/EnableVideoMedia/\" + videoMediaId, {});\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async disableVideoMedia(videoMediaId: number) {\r\n let response = await WebClient.Put(\"api/VideoMedia/DisableVideoMedia/\" + videoMediaId, {});\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async saveVideoMediaPreviewImage(request: SaveVideoMediaPreviewImageRequest) {\r\n let response = await WebClient.Put(\"api/VideoMedia/SaveVideoMediaPreviewImage/\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async saveVideoMediaVideoMedia(request: SaveMediaVideoAssetRequest) {\r\n let response = await WebClient.Put(\"api/VideoMedia/SaveMediaVideoAsset/\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async uploadSourceVideo(uploadUrl: string, file: File, progress: (percentage: number) => void) {\r\n let response = await WebClient.PutFile(uploadUrl, file, progress);\r\n return response;\r\n }\r\n\r\n static async createEncodingJob(request: CreateEncodingJobRequest) {\r\n let response = await WebClient.Put<{ jobId: string }>(\"api/VideoMedia/CreateEncodingJob/\", request);\r\n return response;\r\n }\r\n\r\n static async getEncodingJobStatus(jobId: string) {\r\n let response = await WebClient.Get(`api/VideoMedia/GetEncodingJobStatus/${jobId}`);\r\n return response;\r\n }\r\n\r\n static async createPendingItemFromApproved(request: SaveApprovedVideoMediaRequest) {\r\n let response = await WebClient.Post(\"api/VideoMedia/CreatePendingMediaItemFromApproved\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async changeRejectedToPending(request: SaveRejectedVideoMediaRequest) {\r\n let response = await WebClient.Post(\"api/VideoMedia/CreatePendingMediaItemFromRejected\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n private static translateSingleResponse(response: ServerError | ServerModelValidationResponse | ServerResponse) {\r\n if (ServerResponse.isSuccess(response)) {\r\n let videoMedia: VideoMedia = {\r\n ...response.data,\r\n dateAvailable: response.data.dateAvailable ? new Date(response.data.dateAvailable) : undefined,\r\n type: VideoMediaService.translateVideoMediaType(response.data.type)\r\n };\r\n let translatedResponse: ServerResponse = {\r\n message: response.message,\r\n data: videoMedia\r\n };\r\n return translatedResponse;\r\n }\r\n return response;\r\n }\r\n\r\n private static translateVideoMediaType(type: string) {\r\n switch (type) {\r\n case VideoMediaType.Countdown_Video: return VideoMediaType.Countdown_Video;\r\n case VideoMediaType.Motion_Background: return VideoMediaType.Motion_Background;\r\n case VideoMediaType.Video_Illustration: return VideoMediaType.Video_Illustration;\r\n default: return VideoMediaType.Video_Illustration;\r\n }\r\n }\r\n}","export default class DateHelper {\r\n static getDateStringFormattedForInput = (date: Date) => {\r\n let pad = \"00\";\r\n\r\n let year = date.getFullYear().toString();\r\n let month = (date.getMonth() + 1).toString();\r\n let day = date.getDate().toString();\r\n\r\n return year + '-' + (pad.substring(0, pad.length - month.length) + month) + '-' + (pad.substring(0, pad.length - day.length) + day);\r\n }\r\n}","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport 'url-search-params-polyfill';\r\nimport { MediaItemHistory, MediaService } from '../../services/MediaService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport CartIcon from '@material-ui/icons/ShoppingCart';\r\nimport { routes } from '../../utilities/routes';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n maxWidth: \"500px\",\r\n marginBottom: \"16px\",\r\n [theme.breakpoints.up('md')]: {\r\n minWidth: '500px',\r\n },\r\n },\r\n cardImage: {\r\n height: 250,\r\n backgroundSize: \"contain\"\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\nenum FilterValue {\r\n PreachingSlide = \"Preaching Slide\",\r\n WorshipLyricSlide = \"Worship Lyric Slide\",\r\n MotionBackground = \"Motion Background\",\r\n VideoIllustration = \"Video Illustration\",\r\n CountdownVideo = \"Countdown Video\",\r\n StillBackground = \"Still Background\",\r\n SermonSeriesKit = \"Sermon Series Kit\",\r\n PremiumSermonKit = \"Premium Sermon Kit\",\r\n SocialGraphic = \"Social Graphic\",\r\n Comedy = \"Comedy\",\r\n Inspirational = \"Inspirational\",\r\n SmallGroupStudy = \"Small Group Study\",\r\n ChurchMediaSet = \"Church Media Set\",\r\n All = \"\"\r\n}\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n mediaItems: MediaItemHistory[];\r\n filteredMediaItems: MediaItemHistory[];\r\n visibleMediaItemCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: FilterValue;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass Purchases extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n mediaItems: [],\r\n filteredMediaItems: [],\r\n visibleMediaItemCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: FilterValue.All,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Purchase History\";\r\n\r\n try {\r\n const mediaItems = await MediaService.getPurchaseHistory();\r\n\r\n let filterValue = FilterValue.All;\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('type') && params.get('type')!.match(/backgroundimages/i)) {\r\n filterValue = FilterValue.StillBackground;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/countdownvideos/i)) {\r\n filterValue = FilterValue.CountdownVideo;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/motionbackgrounds/i)) {\r\n filterValue = FilterValue.MotionBackground;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/preachingslides/i)) {\r\n filterValue = FilterValue.PreachingSlide;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/worshiplyricsldies/i)) {\r\n filterValue = FilterValue.WorshipLyricSlide;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/sermonserieskits/i)) {\r\n filterValue = FilterValue.SermonSeriesKit;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/videoillustrations/i)) {\r\n filterValue = FilterValue.VideoIllustration;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/socialgraphics/i)) {\r\n filterValue = FilterValue.SocialGraphic;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/comedy/i)) {\r\n filterValue = FilterValue.Comedy;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/inspirational/i)) {\r\n filterValue = FilterValue.Inspirational;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/smallgroupstudy/i)) {\r\n filterValue = FilterValue.SmallGroupStudy;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/churchmediaset/i)) {\r\n filterValue = FilterValue.ChurchMediaSet;\r\n }\r\n\r\n\r\n if (mediaItems) {\r\n this.setState({ mediaItems, filterValue, loading: false }, this.updateFilteredMediaItems);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredMediaItems);\r\n }\r\n\r\n updateFilteredMediaItems() {\r\n\r\n let filteredMediaItems = this.state.mediaItems;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredMediaItems = filteredMediaItems.filter(s => {\r\n\r\n if (s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.summary.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.state.filterValue !== \"\") {\r\n filteredMediaItems = filteredMediaItems.filter(s => s.type === this.state.filterValue);\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredMediaItems.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredMediaItems });\r\n }\r\n\r\n downloadInvoice(invoiceId: number) {\r\n\t\twindow.open(routes.media.resolve.downloadInvoice(invoiceId), \"_blank\");\r\n\t};\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleMediaItems = this.state.filteredMediaItems.slice(0, this.state.visibleMediaItemCount);\r\n\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Purchase History\r\n \r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length === this.state.filteredMediaItems.length &&\r\n \r\n {this.state.mediaItems.length} purchase{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length !== this.state.filteredMediaItems.length &&\r\n \r\n {this.state.filteredMediaItems.length} match{this.state.filteredMediaItems.length === 1 ? '' : 'es'} of {this.state.mediaItems.length} purchase{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.All }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.All ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.ChurchMediaSet }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.ChurchMediaSet ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.CountdownVideo }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.CountdownVideo ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.StillBackground }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.StillBackground ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.MotionBackground }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.MotionBackground ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.PreachingSlide }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.PreachingSlide ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.WorshipLyricSlide }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.WorshipLyricSlide ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SermonSeriesKit }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SermonSeriesKit ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SermonSeriesKit }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.PremiumSermonKit ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.VideoIllustration }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.VideoIllustration ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SocialGraphic }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SocialGraphic ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Comedy }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.Comedy ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Inspirational }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.Inspirational ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SmallGroupStudy }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SmallGroupStudy ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleMediaItemCount: 10 }, this.updateFilteredMediaItems)}\r\n />\r\n
\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length === 0 &&\r\n \r\n \r\n
\r\n You haven't purchased any media.\r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && visibleMediaItems.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleMediaItems.length > 0 &&\r\n this.setState({ visibleMediaItemCount: this.state.visibleMediaItemCount + 10 })}\r\n hasMore={visibleMediaItems.length < this.state.filteredMediaItems.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleMediaItems.map(mediaItem =>\r\n \r\n \r\n \r\n \r\n {new Date(mediaItem.date).toLocaleDateString()}\r\n \r\n \r\n {mediaItem.type}\r\n \r\n \r\n \r\n \r\n \r\n {mediaItem.type !== \"Church Media Set\" &&\r\n <>\r\n {(mediaItem.shareLink && mediaItem.shareableUrl && mediaItem.shareableUrlName) &&\r\n \r\n }\r\n \r\n }\r\n {\r\n mediaItem.invoiceId &&\r\n <>\r\n \r\n \r\n }\r\n {mediaItem.url && mediaItem.url.indexOf('/') >= 0 &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n {mediaItem.shareLink &&\r\n \r\n Share link: \r\n Views: {mediaItem.views}\r\n \r\n }\r\n
\r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Purchases));","import * as React from 'react';\r\nimport AvatarEditor from 'react-avatar-editor';\r\n\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport Slider from '@material-ui/core/Slider';\r\nimport withRoot from '../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n slider: {\r\n padding: '22px 0px',\r\n },\r\n cropDialog: {\r\n minWidth: '400px',\r\n overflow: 'hidden',\r\n [theme.breakpoints.down('xs')]: {\r\n minWidth: 'inherit'\r\n },\r\n },\r\n });\r\n\r\ninterface ImageExportConfiguration {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface ExportedImage {\r\n width: number;\r\n height: number;\r\n base64ImageData: string;\r\n}\r\n\r\ninterface Props extends WithStyles {\r\n open: boolean;\r\n onClose: () => void;\r\n imageToEdit: string;\r\n onImageEdited: (exportedImages: ExportedImage[]) => void;\r\n disabled?: boolean;\r\n editorWidth?: number;\r\n editorHeight?: number;\r\n exportConfigurations?: ImageExportConfiguration[];\r\n exportJpgQuality?: number;\r\n}\r\n\r\ninterface State {\r\n cropScale: number;\r\n disabled: boolean;\r\n}\r\n\r\nclass EditImageDialog extends React.Component {\r\n cropperRef: AvatarEditor | null;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.cropperRef = null;\r\n this.state = {\r\n cropScale: 1,\r\n disabled: false\r\n };\r\n }\r\n\r\n onAcceptEdit = () => {\r\n const { editorWidth, editorHeight, exportJpgQuality, exportConfigurations } = this.props;\r\n const disabled = this.props.disabled || this.state.disabled;\r\n const avatarEditor = this.cropperRef;\r\n if (disabled || !avatarEditor) {\r\n return;\r\n }\r\n this.setState({ disabled: true });\r\n\r\n if (exportConfigurations) {\r\n let exportedImages = exportConfigurations.map(c => this.exportJpg(c.width, c.height, avatarEditor, exportJpgQuality));\r\n this.setState({ disabled: false }, () => this.props.onImageEdited(exportedImages));\r\n } else {\r\n let width = editorWidth ? editorWidth : 500;\r\n let height = editorHeight ? editorHeight : 500;\r\n let exportedImage = this.exportJpg(width, height, avatarEditor, exportJpgQuality);\r\n this.setState({ disabled: false }, () => this.props.onImageEdited([exportedImage]));\r\n }\r\n }\r\n\r\n exportJpg = (width: number, height: number, avatarEditor: AvatarEditor, jpgQuality?: number) => {\r\n let canvas = document.createElement('canvas');\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n const image = avatarEditor.getImage();\r\n const ctx = canvas.getContext('2d');\r\n ctx!.drawImage(image, 0, 0, width, height);\r\n\r\n let exportQuality = jpgQuality || .7;\r\n const base64ImageData = canvas.toDataURL(\"image/jpeg\", exportQuality);\r\n\r\n let exportedImage: ExportedImage = {\r\n width,\r\n height,\r\n base64ImageData\r\n };\r\n\r\n return exportedImage;\r\n }\r\n\r\n render() {\r\n let classes = this.props.classes;\r\n const { open, onClose, imageToEdit, editorWidth, editorHeight } = this.props;\r\n\r\n const disabled = this.props.disabled || this.state.disabled;\r\n\r\n return (\r\n \r\n Crop Image\r\n \r\n this.cropperRef = cropper}\r\n image={imageToEdit}\r\n width={editorWidth ? editorWidth : 250}\r\n height={editorHeight ? editorHeight : 250}\r\n border={10}\r\n rotate={0}\r\n scale={this.state.cropScale}\r\n />\r\n Zoom\r\n this.setState({ cropScale: value as number })}\r\n disabled={disabled}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(EditImageDialog));","import Button from '@material-ui/core/Button';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Select from '@material-ui/core/Select';\r\nimport { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport * as React from 'react';\r\nimport EditImageDialog, { ExportedImage } from '../../../../components/EditImageDialog';\r\nimport { VideoMedia, MediaStatus } from '../../../../entities/VideoMedia';\r\nimport { FieldValidationError, ServerResponse } from '../../../../services/ServiceHelper';\r\nimport { CreateEncodingJobRequest, EncodingJobStatus, SaveMediaVideoAssetRequest, SaveVideoMediaPreviewImageRequest, VideoDownload, VideoMediaService } from '../../../../services/VideoMediaService';\r\nimport withRoot from '../../../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '70vh',\r\n maxWidth: '1000px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto',\r\n [theme.breakpoints.up('sm')]: {\r\n minWidth: 800\r\n }\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n videoMedia: VideoMedia;\r\n disableSubmit: boolean;\r\n status: MediaStatus\r\n onUpdate: (videoMedia: VideoMedia, onCompletion?: () => void) => void;\r\n onChangeDisableSubmit: (disableSubmit: boolean) => void;\r\n onError: (message: string) => void;\r\n onSuccess: (message: string) => void;\r\n activeReadOnlyPrompt: () => void;\r\n}\r\n\r\ninterface State {\r\n videoDownloads: VideoDownload[];\r\n uploadedPreviewImage?: HTMLImageElement;\r\n newPreviewImage?: string;\r\n sourceVideoQuality: string;\r\n uploadVideoPercentage?: number;\r\n encodeVideoPercentage?: number;\r\n uploadVideoEnabled: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass VideoMediaUpload extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n videoDownloads: [],\r\n sourceVideoQuality: \"\",\r\n uploadVideoEnabled: props.videoMedia.previewVideoUrl == null,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n let downloadResponse = this.props.status !== MediaStatus.Approved ? \r\n await VideoMediaService.getPendingVideoMediaAvailableVideoDownloads(this.props.videoMedia.id) : \r\n await VideoMediaService.getVideoMediaAvailableVideoDownloads(this.props.videoMedia.id);\r\n if (ServerResponse.isSuccess(downloadResponse)) {\r\n this.setState({ videoDownloads: downloadResponse.data });\r\n }\r\n }\r\n\r\n async handlePreviewImageUpload(e: React.ChangeEvent) {\r\n if (this.props.status === MediaStatus.Approved || this.props.status === MediaStatus.Rejected) {\r\n this.props.activeReadOnlyPrompt();\r\n return;\r\n }\r\n let file = e.target.files && e.target.files[0];\r\n // clear the value of the selected file to uploaded so that it can be selected again if there is an error \r\n e.target.value = \"\";\r\n\r\n if (file) {\r\n let dataUrl = await this.readFileAsDataUrl(file);\r\n try {\r\n let image = await this.loadImage(dataUrl);\r\n this.setState({ uploadedPreviewImage: image });\r\n } catch (error) {\r\n this.props.onError(\"Unsupported image type\");\r\n }\r\n }\r\n }\r\n\r\n onSavePreviewImage = async (exportedImages: ExportedImage[]) => {\r\n const { videoMedia, disableSubmit } = this.props;\r\n\r\n if (disableSubmit) {\r\n return;\r\n }\r\n\r\n this.props.onChangeDisableSubmit(true);\r\n\r\n const thumbnail = exportedImages.find(i => i.width === 512);\r\n const poster = exportedImages.find(i => i.width === 854);\r\n\r\n if (!thumbnail || !poster) {\r\n this.props.onError(\"Preview image could not be cropped\");\r\n return;\r\n }\r\n\r\n this.setState({ errors: [] });\r\n\r\n let request: SaveVideoMediaPreviewImageRequest = {\r\n videoMediaId: videoMedia.id,\r\n base64ThumbnailImage: thumbnail.base64ImageData,\r\n base64PosterImage: poster.base64ImageData\r\n };\r\n let response = await VideoMediaService.saveVideoMediaPreviewImage(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n const message = response.message;\r\n this.props.onUpdate(response.data, () => {\r\n this.setState({ uploadedPreviewImage: undefined, newPreviewImage: thumbnail.base64ImageData });\r\n this.props.onSuccess(message);\r\n });\r\n } else if (ServerResponse.isModelValidation(response)) {\r\n let errors = response.errors;\r\n let hasGenericError = FieldValidationError.hasGenericError(errors);\r\n this.setState({ errors });\r\n let errorMessage = hasGenericError ? FieldValidationError.getGenericErrorSummary(errors) : `${errors.length} Field${errors.length > 1 ? \"s\" : \"\"} Is Invalid`;\r\n this.props.onError(errorMessage);\r\n } else {\r\n this.props.onError(response.message);\r\n }\r\n this.props.onChangeDisableSubmit(false);\r\n }\r\n\r\n async handleVideoUpload(e: React.ChangeEvent) {\r\n const { sourceVideoQuality } = this.state;\r\n const { videoMedia, disableSubmit } = this.props;\r\n\r\n let file = e.target.files && e.target.files[0];\r\n // clear the value of the selected file to uploaded so that it can be selected again if there is an error \r\n e.target.value = \"\";\r\n\r\n if (!file || disableSubmit) {\r\n return;\r\n }\r\n\r\n if (!sourceVideoQuality) {\r\n let error: FieldValidationError = { field: \"VideoPreview\", errors: [\"Must select source video quality\"] };\r\n this.setState({ errors: [error] });\r\n this.props.onError(`Video quality not set`);\r\n return;\r\n }\r\n\r\n this.props.onChangeDisableSubmit(true);\r\n\r\n let uploadedFileNameSplit = file.name.split(\".\");\r\n let extension = uploadedFileNameSplit[uploadedFileNameSplit.length - 1];\r\n let fileName = videoMedia.title.replace(/[^A-Z0-9]/ig, \"\") + `.${extension}`;\r\n\r\n let uploadUrlResponse = await VideoMediaService.generateVideoUploadUrl(videoMedia.id, videoMedia.type, fileName);\r\n if (ServerResponse.isError(uploadUrlResponse)) {\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(`(${uploadUrlResponse.statusCode}) ${uploadUrlResponse.message}`);\r\n return;\r\n } else if (ServerResponse.isSuccess(uploadUrlResponse)) {\r\n let uploadResponse = await VideoMediaService.uploadSourceVideo(uploadUrlResponse.data.url, file, uploadVideoPercentage => this.setState({ uploadVideoPercentage }));\r\n if (ServerResponse.isError(uploadResponse)) {\r\n this.setState({ uploadVideoPercentage: undefined });\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(`(${uploadResponse.statusCode}) ${uploadResponse.message}`);\r\n return;\r\n }\r\n \r\n let encodingJobRequest: CreateEncodingJobRequest = {\r\n videoMediaId: videoMedia.id,\r\n videoMediaType: videoMedia.type,\r\n sourceFileName: fileName,\r\n sourceQuality: sourceVideoQuality\r\n };\r\n let encodeJobResponse = await VideoMediaService.createEncodingJob(encodingJobRequest);\r\n if (ServerResponse.isError(encodeJobResponse) || ServerResponse.isModelValidation(encodeJobResponse)) {\r\n this.setState({ uploadVideoPercentage: undefined });\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(\"Failed to create encoding job\");\r\n return;\r\n }\r\n \r\n const encodeJobId = encodeJobResponse.data.jobId;\r\n this.setState({ uploadVideoPercentage: undefined, encodeVideoPercentage: 0 }, () => this.monitorEncodingJob(encodeJobId));\r\n }\r\n }\r\n\r\n monitorEncodingJob = (encodeJobId: string) => {\r\n const interval = setInterval(async () => {\r\n let response = await VideoMediaService.getEncodingJobStatus(encodeJobId);\r\n if (ServerResponse.isSuccess(response)) {\r\n let status = response.data;\r\n if (status.isComplete && status.error) {\r\n this.setState({ encodeVideoPercentage: undefined });\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(status.error);\r\n clearInterval(interval);\r\n } else if (status.isComplete) {\r\n this.setState({ encodeVideoPercentage: 100 });\r\n this.onVideoEncodingComplete(status);\r\n clearInterval(interval);\r\n } else if (!status.isComplete && status.completionPercentage >= 0){\r\n this.setState({ encodeVideoPercentage: status.completionPercentage });\r\n }\r\n }\r\n }, 15 * 1000);\r\n }\r\n\r\n onVideoEncodingComplete = async (status: EncodingJobStatus) => {\r\n const { videoMedia } = this.props;\r\n if (!status.isComplete || status.error || !status.preview || !status.downloads) {\r\n this.setState({ encodeVideoPercentage: undefined });\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(\"Video encode failed\");\r\n return;\r\n }\r\n\r\n let request: SaveMediaVideoAssetRequest = {\r\n videoMediaId: videoMedia.id,\r\n previewVideoPath: status.preview.path,\r\n downloadDetails: status.downloads.map(d => ({\r\n path: d.path,\r\n extension: d.extension,\r\n quality: d.quality,\r\n duration: d.duration\r\n }))\r\n };\r\n let response = await VideoMediaService.saveVideoMediaVideoMedia(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n this.props.onUpdate(response.data, this.onEncodingSuccess);\r\n\r\n let videoDownloadResponse = await VideoMediaService.getPendingVideoMediaAvailableVideoDownloads(videoMedia.id);\r\n if (ServerResponse.isSuccess(videoDownloadResponse)) {\r\n this.setState({ videoDownloads: videoDownloadResponse.data });\r\n }\r\n } else {\r\n this.setState({ encodeVideoPercentage: undefined });\r\n this.props.onError(\"Video encode failed\");\r\n }\r\n this.props.onChangeDisableSubmit(false);\r\n }\r\n\r\n onEncodingSuccess = () => {\r\n this.setState({ uploadVideoEnabled: false, encodeVideoPercentage: undefined });\r\n this.props.onSuccess(\"Video successfully encoded\");\r\n }\r\n\r\n loadImage(src: string) {\r\n return new Promise((resolve, reject) => {\r\n let img = new Image();\r\n img.onload = function () {\r\n resolve(img);\r\n };\r\n img.onerror = function () {\r\n reject(img);\r\n };\r\n img.src = src;\r\n });\r\n }\r\n\r\n readFileAsDataUrl(file: File) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n // FileReader.readAsDataURL always returns strings\r\n let dataUrl = reader.result as string;\r\n resolve(dataUrl);\r\n };\r\n reader.onabort = e => {\r\n reject(e);\r\n };\r\n reader.onerror = e => {\r\n reject(e);\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n\r\n onDownload = async (videoDownload: VideoDownload) => {\r\n window.location.href = \"api/VideoMedia/GetVideoDownload/\" + videoDownload.id;\r\n }\r\n\r\n readOnlyState () {\r\n this.props.activeReadOnlyPrompt();\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n const {\r\n uploadedPreviewImage,\r\n newPreviewImage,\r\n sourceVideoQuality,\r\n videoDownloads,\r\n uploadVideoEnabled,\r\n uploadVideoPercentage,\r\n encodeVideoPercentage,\r\n errors,\r\n } = this.state;\r\n const { videoMedia, disableSubmit } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n Upload Media}\r\n />\r\n
\r\n \r\n Preview Image *\r\n \r\n {\r\n videoMedia.thumbnailImageUrl || newPreviewImage\r\n ?\r\n \r\n \r\n
\r\n \"\"\r\n
\r\n
\r\n \r\n this.handlePreviewImageUpload(e)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n :\r\n <>\r\n {\r\n this.handlePreviewImageUpload(e)}\r\n />\r\n }\r\n \r\n \r\n Add Preview Image\r\n \r\n \r\n \r\n }\r\n \r\n \r\n
\r\n
\r\n Video *\r\n {\r\n videoMedia.previewVideoUrl\r\n &&\r\n !uploadVideoEnabled\r\n &&\r\n <>\r\n \r\n \r\n Preview Video\r\n
\r\n \r\n
\r\n \r\n \r\n {this.props.status === MediaStatus.Approved || this.props.status === MediaStatus.Rejected ? this.props.activeReadOnlyPrompt() : this.setState({ uploadVideoEnabled: true })}}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n {\r\n videoDownloads.length > 0\r\n &&\r\n <>\r\n
\r\n Video Downloads\r\n
\r\n {videoDownloads.map(videoDownload =>\r\n this.onDownload(videoDownload)}\r\n disabled={disableSubmit}\r\n style={{ margin: 5 }}\r\n >\r\n Download {videoDownload.extension.toUpperCase()} ({videoDownload.quality})\r\n \r\n )}\r\n \r\n }\r\n \r\n }\r\n {\r\n uploadVideoEnabled\r\n &&\r\n encodeVideoPercentage == null\r\n &&\r\n uploadVideoPercentage == null\r\n &&\r\n <>\r\n \r\n Select Quality\r\n this.setState({ sourceVideoQuality: e.target.value as string })}\r\n >\r\n Select Quality\r\n 720p\r\n 1080p\r\n 4K\r\n \r\n \r\n
\r\n this.handleVideoUpload(e)}\r\n />\r\n \r\n \r\n Add Video\r\n \r\n \r\n \r\n }\r\n {\r\n uploadVideoPercentage != null\r\n &&\r\n <>\r\n Upload Progress: {uploadVideoPercentage}%\r\n \r\n \r\n }\r\n {\r\n encodeVideoPercentage != null\r\n &&\r\n <>\r\n Encoding Progress: {encodeVideoPercentage}%\r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n this.setState({ uploadedPreviewImage: undefined })}\r\n imageToEdit={uploadedPreviewImage ? uploadedPreviewImage.src : \"\"}\r\n onImageEdited={this.onSavePreviewImage}\r\n editorWidth={854}\r\n editorHeight={480}\r\n exportConfigurations={[{ width: 854, height: 480 }, { width: 512, height: 288 }]}\r\n disabled={disableSubmit}\r\n />\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(VideoMediaUpload));","import Button from '@material-ui/core/Button';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Input from '@material-ui/core/Input';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Select from '@material-ui/core/Select';\r\nimport { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core/styles';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport EyeIcon from '@material-ui/icons/RemoveRedEye';\r\nimport * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { VideoMedia, VideoMediaType, MediaStatus } from '../../../../entities/VideoMedia';\r\nimport { FieldValidationError, ServerResponse } from '../../../../services/ServiceHelper';\r\nimport { SaveVideoMediaRequest, VideoMediaService, SaveApprovedVideoMediaRequest, SaveRejectedVideoMediaRequest } from '../../../../services/VideoMediaService';\r\nimport DateHelper from '../../../../utilities/DateHelper';\r\nimport SuccessSnackbar from '../../../../components/SuccessSnackbar';\r\nimport ErrorSnackbar from '../../../../components/ErrorSnackbar';\r\nimport withRoot from '../../../../withRoot';\r\nimport AppConfig from '../../../../entities/AppConfig';\r\nimport VideoMediaUpload from './videoMediaUpload';\r\nimport { MediaItemStatus } from '../../../../entities/MediaItem';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { MediaService, MediaDisableRequest, MediaDeleteRequest, MediaEnableRequest, MediaCancelRequest } from '../../../../services/MediaService';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '70vh',\r\n maxWidth: '1000px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto',\r\n [theme.breakpoints.up('sm')]: {\r\n minWidth: 800\r\n }\r\n },\r\n form: {\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n formButtonsWrapper: {\r\n flex: '0 0 auto',\r\n margin: '8px 4px',\r\n paddingBottom: '20px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n formButton: {\r\n marginLeft: 'auto'\r\n },\r\n chip: {\r\n margin: theme.spacing() / 2,\r\n color: \"#FFF\",\r\n backgroundColor: theme.palette.primary.light,\r\n \"& svg\": {\r\n color: \"rgb(255,255,255,.7)\",\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n }\r\n }\r\n },\r\n weightedTopicChip: {\r\n backgroundColor: theme.palette.secondary.light,\r\n \"& svg\": {\r\n \"&:hover\": {\r\n color: theme.palette.secondary.main\r\n }\r\n }\r\n },\r\n buttonProgress: {\r\n color: \"rgb(255,255,255,.7)\",\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n config: AppConfig;\r\n id?: string;\r\n status: MediaStatus;\r\n type?: string;\r\n onPathChange: (path: string) => void;\r\n onPathReplace: (path: string) => void;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n videoMedia?: VideoMedia;\r\n videoMediaId?: number;\r\n url?: string;\r\n dateAvailableValue?: string;\r\n isEnabled: boolean;\r\n showAddProducerDialog: boolean;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n serviceStyles: string[];\r\n audiences: string[];\r\n serviceGenres: string[];\r\n topics: string[];\r\n topicInput: string;\r\n scriptureReferences: string[];\r\n scriptureReferenceInput: string;\r\n listPrice: number;\r\n hasDiscount: boolean;\r\n discountedPrice: number;\r\n showSaveConfirmationDialog: boolean;\r\n disableSubmit: boolean;\r\n errors: FieldValidationError[];\r\n successMessage?: string;\r\n errorMessage?: string;\r\n videoMediaType: VideoMediaType;\r\n status: MediaStatus;\r\n readonly: boolean;\r\n activateReadOnlyPrompt: boolean;\r\n reasonForUpdate: string;\r\n creatingPending: boolean;\r\n showDisable: boolean;\r\n disableReason: string;\r\n showDelete: boolean;\r\n deleteReason: string;\r\n showEnable: boolean;\r\n enableReason: string;\r\n showCancel: boolean;\r\n}\r\n\r\nclass VideoMediaDetail extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n const addType = this.props.type ? this.getAddType(this.props.type) : VideoMediaType.Video_Illustration;\r\n\r\n this.state = {\r\n loading: true,\r\n videoMediaId: this.props.id ? parseInt(this.props.id, 10) : undefined,\r\n status: this.props.status,\r\n videoMediaType: addType,\r\n isEnabled: false,\r\n showAddProducerDialog: false,\r\n title: \"\",\r\n summary: \"\",\r\n language: \"English\",\r\n serviceStyles: [],\r\n audiences: [],\r\n serviceGenres: [],\r\n topics: [],\r\n topicInput: \"\",\r\n scriptureReferences: [],\r\n scriptureReferenceInput: \"\",\r\n listPrice: 19.99,\r\n hasDiscount: false,\r\n discountedPrice: 0,\r\n\r\n showSaveConfirmationDialog: false,\r\n disableSubmit: false,\r\n errors: [],\r\n dateAvailableValue: DateHelper.getDateStringFormattedForInput(new Date()),\r\n readonly: this.props.status === MediaStatus.Approved,\r\n activateReadOnlyPrompt: false,\r\n reasonForUpdate: \"\",\r\n creatingPending: false,\r\n showDisable: false,\r\n disableReason: \"\",\r\n showDelete: false,\r\n deleteReason: \"\",\r\n showEnable: false,\r\n enableReason: \"\",\r\n showCancel: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props.type) {\r\n document.title = `SermonCentral Account - Add ${this.state.videoMediaType}`;\r\n }\r\n\r\n if (this.state.videoMediaId) {\r\n const videoMediaResponse = this.state.status !== MediaStatus.Approved ?\r\n await VideoMediaService.getPendingVideoMedia(this.state.videoMediaId) :\r\n await VideoMediaService.getVideoMedia(this.state.videoMediaId);\r\n\r\n if (ServerResponse.isSuccess(videoMediaResponse)) {\r\n let videoMedia = videoMediaResponse.data;\r\n this.setVideoMediaToState(videoMedia, () => this.setState({ loading: false }));\r\n }\r\n else {\r\n this.setState({ errorMessage: \"Media not found\" });\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n getAddType(type: string) {\r\n switch (type) {\r\n case \"video-illustrations\": return VideoMediaType.Video_Illustration;\r\n case \"motion-backgrounds\": return VideoMediaType.Motion_Background;\r\n case \"countdown-videos\": return VideoMediaType.Countdown_Video;\r\n default: return VideoMediaType.Video_Illustration;\r\n }\r\n }\r\n\r\n setVideoMediaToState = (videoMedia: VideoMedia, onCompletion?: () => void) => {\r\n document.title = `SermonCentral Admin - Edit ${videoMedia.type}`;\r\n this.setState({\r\n videoMedia: videoMedia,\r\n videoMediaId: videoMedia.id,\r\n title: videoMedia.title,\r\n videoMediaType: videoMedia.type,\r\n summary: videoMedia.summary,\r\n language: videoMedia.language,\r\n isEnabled: videoMedia.isEnabled,\r\n dateAvailableValue: videoMedia.dateAvailable ? DateHelper.getDateStringFormattedForInput(videoMedia.dateAvailable) : undefined,\r\n listPrice: videoMedia.listPrice || 0,\r\n discountedPrice: videoMedia.discountedPrice || 0,\r\n hasDiscount: videoMedia.discountedPrice != null,\r\n serviceGenres: videoMedia.genres,\r\n audiences: videoMedia.audiences,\r\n serviceStyles: videoMedia.styles,\r\n scriptureReferences: videoMedia.scriptureReferences,\r\n topics: videoMedia.topics,\r\n url: videoMedia.url,\r\n status: videoMedia.status\r\n }, onCompletion);\r\n }\r\n\r\n onPageClose = () => {\r\n const { videoMediaType } = this.state;\r\n if (videoMediaType === VideoMediaType.Countdown_Video) {\r\n this.props.onPathChange('/media/manage/countdown-videos');\r\n }\r\n if (videoMediaType === VideoMediaType.Motion_Background) {\r\n this.props.onPathChange('/media/manage/motion-backgrounds');\r\n }\r\n if (videoMediaType === VideoMediaType.Video_Illustration) {\r\n this.props.onPathChange('/media/manage/video-illustrations');\r\n }\r\n }\r\n\r\n onSaveRequested = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n const { topics, scriptureReferences, disableSubmit } = this.state;\r\n\r\n if (disableSubmit) {\r\n return;\r\n }\r\n let errors = this.validateStatus();\r\n if (errors.length > 0) {\r\n this.setState({ errors, errorMessage: `${errors.length} Field${errors.length > 1 ? \"s\" : \"\"} Invalid` });\r\n return;\r\n }\r\n\r\n // Topics and scripture references aren't required but should be encouraged \r\n if (topics.length < 2 || scriptureReferences.length < 1) {\r\n this.setState({ showSaveConfirmationDialog: true });\r\n return;\r\n }\r\n\r\n this.onSaveVideoMedia();\r\n }\r\n\r\n onSaveVideoMedia = async () => {\r\n let {\r\n videoMediaId,\r\n videoMediaType,\r\n status,\r\n dateAvailableValue,\r\n title,\r\n summary,\r\n language,\r\n topics,\r\n scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n hasDiscount,\r\n discountedPrice,\r\n videoMedia,\r\n } = this.state;\r\n\r\n // Type check nullable state for typescript \r\n // (required fields should be caught in validation step, so this should never actually return)\r\n if (!dateAvailableValue) {\r\n return;\r\n }\r\n this.setState({ disableSubmit: true, errors: [] });\r\n\r\n let request: SaveVideoMediaRequest = {\r\n id: videoMediaId,\r\n type: videoMediaType,\r\n dateAvailable: new Date(dateAvailableValue),\r\n title: title,\r\n summary: summary,\r\n language: language,\r\n topics: topics,\r\n scriptureReferences: scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n discountedPrice: hasDiscount ? discountedPrice : undefined,\r\n status: status,\r\n parentId: videoMedia ? videoMedia.parentId : undefined,\r\n adminComment: videoMedia?.adminComment,\r\n producerComment: videoMedia?.producerComment\r\n };\r\n let response = await VideoMediaService.saveVideoMedia(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n const message = response.message;\r\n this.setVideoMediaToState(response.data, () => this.setState({ disableSubmit: false, successMessage: message, showSaveConfirmationDialog: false }));\r\n if (videoMediaId == null || this.props.status === MediaStatus.Approved) {\r\n this.props.onPathReplace(`/media/video-media/pending/edit/${response.data.id}`);\r\n }\r\n } else if (ServerResponse.isModelValidation(response)) {\r\n let hasGenericError = FieldValidationError.hasGenericError(response.errors);\r\n this.setState({\r\n disableSubmit: false,\r\n errorMessage: hasGenericError ? FieldValidationError.getGenericErrorSummary(response.errors) : `${response.errors.length} Field${response.errors.length > 1 ? \"s\" : \"\"} Is Invalid`,\r\n errors: response.errors,\r\n showSaveConfirmationDialog: false\r\n });\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n errorMessage: response.message,\r\n showSaveConfirmationDialog: false\r\n });\r\n }\r\n }\r\n\r\n styleIsSelected = (style: string) => {\r\n const { serviceStyles } = this.state;\r\n return serviceStyles.includes(style);\r\n }\r\n\r\n toggleStyle = (style: string) => {\r\n const { serviceStyles } = this.state;\r\n let isSelected = this.styleIsSelected(style);\r\n if (isSelected) {\r\n this.setState({ serviceStyles: serviceStyles.filter(s => s !== style) });\r\n } else {\r\n this.setState({ serviceStyles: [...serviceStyles, style] });\r\n }\r\n }\r\n\r\n audienceIsSelected = (audience: string) => {\r\n const { audiences } = this.state;\r\n return audiences.includes(audience);\r\n }\r\n\r\n toggleAudience = (audience: string) => {\r\n const { audiences } = this.state;\r\n let isSelected = this.audienceIsSelected(audience);\r\n if (isSelected) {\r\n this.setState({ audiences: audiences.filter(a => a !== audience) });\r\n } else {\r\n this.setState({ audiences: [...audiences, audience] });\r\n }\r\n }\r\n\r\n genreIsSelected = (genre: string) => {\r\n const { serviceGenres } = this.state;\r\n return serviceGenres.includes(genre);\r\n }\r\n\r\n toggleGenre = (genre: string) => {\r\n const { serviceGenres } = this.state;\r\n let isSelected = this.genreIsSelected(genre);\r\n if (isSelected) {\r\n this.setState({ serviceGenres: serviceGenres.filter(g => g !== genre) });\r\n } else {\r\n this.setState({ serviceGenres: [...serviceGenres, genre] });\r\n }\r\n }\r\n\r\n addTopic = () => {\r\n const { topics, topicInput } = this.state;\r\n let newTopics = topicInput\r\n .split(\",\")\r\n .map(t => t.trim())\r\n .filter(t => t)\r\n .filter(t => !topics.includes(t));\r\n if (newTopics.length === 0) {\r\n return;\r\n }\r\n\r\n this.setState({ topics: [...topics, ...newTopics], topicInput: \"\" });\r\n }\r\n\r\n removeTopic = (topicToRemove: string) => {\r\n this.setState({ topics: this.state.topics.filter(t => t !== topicToRemove) });\r\n }\r\n\r\n addScriptureReference = () => {\r\n const { scriptureReferences, scriptureReferenceInput } = this.state;\r\n let newScriptureReferences = scriptureReferenceInput\r\n .split(\",\")\r\n .map(t => t.trim())\r\n .filter(t => t)\r\n .filter(t => !scriptureReferences.includes(t));\r\n\r\n if (newScriptureReferences.length === 0) {\r\n return;\r\n }\r\n\r\n this.setState({ scriptureReferences: [...scriptureReferences, ...newScriptureReferences], scriptureReferenceInput: \"\" });\r\n }\r\n\r\n removeScriptureReference = (scriptureReferenceToRemove: string) => {\r\n const { scriptureReferences } = this.state;\r\n this.setState({ scriptureReferences: scriptureReferences.filter(sr => sr !== scriptureReferenceToRemove) });\r\n }\r\n\r\n getPriceStatus() {\r\n const { listPrice: listingPrice, discountedPrice, hasDiscount, } = this.state;\r\n\r\n if (listingPrice === 0 && !hasDiscount) {\r\n return <>Only available for PRO Download;\r\n }\r\n\r\n if (discountedPrice >= listingPrice) {\r\n return Invalid;\r\n }\r\n\r\n return hasDiscount ? <>${listingPrice} ${discountedPrice} : <>${listingPrice};\r\n }\r\n\r\n validateStatus() {\r\n const {\r\n dateAvailableValue,\r\n title,\r\n summary,\r\n serviceGenres,\r\n listPrice,\r\n discountedPrice,\r\n } = this.state;\r\n\r\n let errors: FieldValidationError[] = [];\r\n\r\n if (!dateAvailableValue) {\r\n errors.push({ field: \"DateAvailable\", errors: [\"Must set date that media will be available\"] });\r\n }\r\n if (dateAvailableValue && isNaN(new Date(dateAvailableValue).getTime())) {\r\n errors.push({ field: \"DateAvailable\", errors: [\"Must set date that media will be available\"] });\r\n }\r\n if (title.trim().length === 0) {\r\n errors.push({ field: \"Title\", errors: [\"Missing Title\"] });\r\n }\r\n if (summary.trim().length === 0) {\r\n errors.push({ field: \"Summary\", errors: [\"Missing Summary\"] });\r\n }\r\n if (serviceGenres.length === 0) {\r\n errors.push({ field: \"Genres\", errors: [\"Must select at least one genre\"] });\r\n }\r\n if (listPrice > 0 && discountedPrice >= listPrice) {\r\n errors.push({ field: \"DiscountedPrice\", errors: [\"Discounted price must be lower than listing price\"] });\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n onEnable = async () => {\r\n const { enableReason, videoMediaId, title } = this.state;\r\n\r\n if (!videoMediaId) {\r\n return;\r\n }\r\n\r\n this.setState({ disableSubmit: true });\r\n\r\n var request: MediaEnableRequest = {\r\n id: videoMediaId,\r\n title: title,\r\n reason: enableReason\r\n };\r\n\r\n let response = await MediaService.requestEnable(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n disableSubmit: false,\r\n enableReason: \"\",\r\n showEnable: false,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n enableReason: \"\",\r\n showEnable: false,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n onCancel = async () => {\r\n const { videoMediaId } = this.state;\r\n\r\n if (!videoMediaId) {\r\n return;\r\n }\r\n\r\n\r\n\r\n this.setState({ disableSubmit: true });\r\n\r\n var request: MediaCancelRequest = {\r\n id: videoMediaId,\r\n };\r\n\r\n let response = await MediaService.requestCancel(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n showCancel: false,\r\n successMessage: \"These changes have been cancelled, redirecting back to Manage Media...\"\r\n }, () => setTimeout(() => this.props.onPathChange('/media/manage/all'), 3000));\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n showCancel: false,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n onDisable = async () => {\r\n const { disableReason, videoMediaId, title } = this.state;\r\n\r\n if (!videoMediaId) {\r\n return;\r\n }\r\n\r\n this.setState({ disableSubmit: true });\r\n\r\n var request: MediaDisableRequest = {\r\n id: videoMediaId,\r\n title: title,\r\n reason: disableReason\r\n };\r\n\r\n let response = await MediaService.requestDisable(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n disableSubmit: false,\r\n disableReason: \"\",\r\n showDisable: false,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n disableReason: \"\",\r\n showDisable: false,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n onDelete = async () => {\r\n const { deleteReason, videoMediaId, title } = this.state;\r\n\r\n if (!videoMediaId) {\r\n return;\r\n }\r\n\r\n this.setState({ disableSubmit: true });\r\n\r\n var request: MediaDeleteRequest = {\r\n id: videoMediaId,\r\n title: title,\r\n reason: deleteReason\r\n };\r\n\r\n let response = await MediaService.requestDelete(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n disableSubmit: false,\r\n deleteReason: \"\",\r\n showDelete: false,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n showDelete: false,\r\n deleteReason: \"\",\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n activeReadOnlyPrompt() {\r\n this.setState({ activateReadOnlyPrompt: true });\r\n }\r\n\r\n onConfirmEditInReadOnly = async () => {\r\n if (!this.state.videoMedia) {\r\n return;\r\n }\r\n if (this.state.reasonForUpdate.length === 0) {\r\n this.setState({ errors: [{ field: \"ReasonForUpdate\", errors: [\"Please give a reason for the edit.\"] }] })\r\n return;\r\n }\r\n\r\n let {\r\n videoMediaId,\r\n videoMediaType,\r\n status,\r\n dateAvailableValue,\r\n title,\r\n summary,\r\n language,\r\n topics,\r\n scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n hasDiscount,\r\n discountedPrice,\r\n videoMedia,\r\n reasonForUpdate\r\n } = this.state;\r\n\r\n\r\n if (status === MediaStatus.Approved) {\r\n let request: SaveApprovedVideoMediaRequest = {\r\n id: videoMediaId,\r\n type: videoMediaType,\r\n dateAvailable: new Date(dateAvailableValue!),\r\n title: title,\r\n summary: summary,\r\n language: language,\r\n topics: topics,\r\n scriptureReferences: scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n discountedPrice: hasDiscount ? discountedPrice : undefined,\r\n status: status,\r\n producerComment: reasonForUpdate\r\n };\r\n \r\n let response = await VideoMediaService.createPendingItemFromApproved(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n const message = response.message;\r\n this.setVideoMediaToState(response.data, () => this.setState({ disableSubmit: false, successMessage: message, creatingPending: false, activateReadOnlyPrompt: false }));\r\n this.props.onPathReplace(`/media/video-media/pending/edit/${response.data.id}`);\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n errorMessage: \"There was an error trying to edit this media item, please try again.\",\r\n activateReadOnlyPrompt: false,\r\n creatingPending: false\r\n });\r\n }\r\n } else {\r\n let request: SaveRejectedVideoMediaRequest = {\r\n id: videoMediaId!,\r\n type: videoMediaType,\r\n dateAvailable: new Date(dateAvailableValue!),\r\n title: title,\r\n summary: summary,\r\n language: language,\r\n topics: topics,\r\n scriptureReferences: scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n discountedPrice: hasDiscount ? discountedPrice : undefined,\r\n status: status,\r\n parentId: videoMedia.parentId!,\r\n producerComment: reasonForUpdate\r\n };\r\n\r\n let response = await VideoMediaService.changeRejectedToPending(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n const message = response.message;\r\n this.setVideoMediaToState(response.data, () => this.setState({ disableSubmit: false, successMessage: message, creatingPending: false, activateReadOnlyPrompt: false }));\r\n this.props.onPathReplace(`/media/video-media/pending/edit/${response.data.id}`);\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n errorMessage: \"There was an error trying to edit this media item, please try again.\",\r\n activateReadOnlyPrompt: false,\r\n creatingPending: false\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n const {\r\n loading,\r\n videoMedia,\r\n videoMediaType,\r\n videoMediaId,\r\n url,\r\n dateAvailableValue,\r\n isEnabled,\r\n title,\r\n summary,\r\n language,\r\n topics,\r\n topicInput,\r\n scriptureReferences,\r\n scriptureReferenceInput,\r\n listPrice: listingPrice,\r\n hasDiscount,\r\n discountedPrice,\r\n showSaveConfirmationDialog,\r\n disableSubmit,\r\n errors,\r\n status,\r\n activateReadOnlyPrompt,\r\n reasonForUpdate,\r\n creatingPending,\r\n disableReason,\r\n showDisable,\r\n deleteReason,\r\n showDelete,\r\n enableReason,\r\n showEnable,\r\n showCancel\r\n } = this.state;\r\n\r\n const readonly = status === MediaStatus.Approved || status === MediaStatus.Rejected;\r\n\r\n return (\r\n
\r\n \r\n {\r\n loading\r\n &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {\r\n !loading\r\n &&\r\n \r\n \r\n \r\n }\r\n title={ {videoMediaId ? 'Edit' : 'Add'} {videoMediaType}}\r\n subheader={readonly ?\r\n <>\r\n \r\n { status === MediaStatus.Approved ? \r\n \"This item is currently approved, to make edits click 'Edit' button.\"\r\n :\r\n \"This item has been rejected, to make edits click 'Edit button.\"\r\n }\r\n \r\n \r\n\r\n \r\n : videoMedia && videoMedia.adminComment && SC Admin Comment: {videoMedia.adminComment}}\r\n />\r\n
\r\n \r\n Date Available\r\n this.setState({ dateAvailableValue: e.target.value })}\r\n />\r\n \r\n \r\n
\r\n \r\n Title\r\n this.setState({ title: e.target.value })}\r\n />\r\n \r\n \r\n \r\n Summary\r\n this.setState({ summary: e.target.value })}\r\n />\r\n \r\n \r\n \r\n Language\r\n this.setState({ language: e.target.value as string })}\r\n >\r\n English\r\n Spanish\r\n \r\n \r\n \r\n Service Styles\r\n \r\n this.toggleStyle(\"Contemporary\")} />\r\n }\r\n label=\"Contemporary\"\r\n />\r\n this.toggleStyle(\"Traditional\")} />\r\n }\r\n label=\"Traditional\"\r\n />\r\n this.toggleStyle(\"Progressive\")} />\r\n }\r\n label=\"Progressive\"\r\n />\r\n \r\n \r\n \r\n \r\n Audiences\r\n \r\n this.toggleAudience(\"Kids\")} />\r\n }\r\n label=\"Kids\"\r\n />\r\n this.toggleAudience(\"Teens\")} />\r\n }\r\n label=\"Teens\"\r\n />\r\n this.toggleAudience(\"Adults\")} />\r\n }\r\n label=\"Adults\"\r\n />\r\n \r\n \r\n \r\n \r\n Genres\r\n \r\n this.toggleGenre(\"Emotional\")} />\r\n }\r\n label=\"Emotional\"\r\n />\r\n this.toggleGenre(\"Humorous\")} />\r\n }\r\n label=\"Humorous\"\r\n />\r\n this.toggleGenre(\"Powerful\")} />\r\n }\r\n label=\"Powerful\"\r\n />\r\n this.toggleGenre(\"Uplifting\")} />\r\n }\r\n label=\"Uplifting\"\r\n />\r\n this.toggleGenre(\"Reflective\")} />\r\n }\r\n label=\"Reflective\"\r\n />\r\n this.toggleGenre(\"Bible History\")} />\r\n }\r\n label=\"Bible History\"\r\n />\r\n \r\n \r\n \r\n \r\n Add Topic\r\n this.setState({ topicInput: e.currentTarget.value })}\r\n onBlur={() => this.addTopic()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addTopic();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addTopic()}\r\n disabled={topicInput.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addTopic',\r\n id: 'addTopic',\r\n }}\r\n />\r\n \r\n \r\n {topics.length === 0 && \"No\"} Topics\r\n
\r\n {\r\n topics.map(topic =>\r\n this.removeTopic(topic)}\r\n className={classes.chip}\r\n />\r\n )\r\n }\r\n
\r\n \r\n Add Scripture Reference\r\n this.setState({ scriptureReferenceInput: e.currentTarget.value })}\r\n onBlur={() => this.addScriptureReference()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addScriptureReference();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addScriptureReference()}\r\n disabled={scriptureReferenceInput.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addScriptureReference',\r\n id: 'addScriptureReference',\r\n }}\r\n />\r\n \r\n \r\n {scriptureReferences.length === 0 && \"No\"} Scripture References\r\n
\r\n {\r\n scriptureReferences.map((scriptureReference, index) =>\r\n this.removeScriptureReference(scriptureReference)}\r\n className={classes.chip}\r\n />\r\n )\r\n }\r\n
\r\n {\r\n <>\r\n Price Status: {this.getPriceStatus()}\r\n
\r\n \r\n \r\n \r\n Listing Price\r\n this.setState({ listPrice: parseFloat(e.target.value) })}\r\n startAdornment={$}\r\n />\r\n \r\n \r\n \r\n {\r\n hasDiscount\r\n &&\r\n \r\n = listingPrice)} style={{ marginLeft: 15 }} disabled={disableSubmit || readonly}>\r\n Discounted Price\r\n this.setState({ discountedPrice: parseFloat(e.target.value) })}\r\n startAdornment={$}\r\n />\r\n {\r\n hasDiscount && discountedPrice >= listingPrice\r\n ?\r\n Discounted price must be lower than listing price\r\n :\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n \r\n this.setState({ hasDiscount: e.target.checked })}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Has discount\"\r\n />\r\n \r\n \r\n }\r\n
\r\n {\r\n videoMediaId\r\n &&\r\n <>\r\n {\r\n this.props.status === MediaStatus.Approved &&\r\n <>\r\n {isEnabled\r\n ?\r\n <>\r\n \r\n \r\n :\r\n <>\r\n \r\n \r\n \r\n }\r\n {\r\n url\r\n &&\r\n (this.props.status === MediaStatus.Approved && (isEnabled || (videoMedia && videoMedia.previewVideoUrl && videoMedia.thumbnailImageUrl)))\r\n &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {\r\n this.props.status !== MediaStatus.Approved\r\n &&\r\n \r\n }\r\n \r\n }\r\n {readonly ?\r\n \r\n :\r\n \r\n }\r\n\r\n
\r\n
\r\n\r\n
\r\n }\r\n
\r\n {\r\n videoMedia\r\n &&\r\n this.setState({ disableSubmit: submitDisabled })}\r\n onUpdate={this.setVideoMediaToState}\r\n onSuccess={successMessage => this.setState({ successMessage })}\r\n onError={errorMessage => this.setState({ errorMessage })}\r\n status={status}\r\n activeReadOnlyPrompt={() => this.activeReadOnlyPrompt()}\r\n />\r\n }\r\n this.setState({ showSaveConfirmationDialog: false })}\r\n >\r\n Are You Sure?\r\n \r\n \r\n Are you sure you wish to save without metadata being filled out?\r\n \r\n
\r\n {\r\n topics.length < 2\r\n &&\r\n \r\n - Content performs better with at least two relevant topics\r\n \r\n }\r\n {\r\n scriptureReferences.length < 1\r\n &&\r\n \r\n - Content performs better with at least one relevant scripture reference\r\n \r\n }\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ errorMessage: undefined })}\r\n />\r\n this.setState({ successMessage: undefined })}\r\n />\r\n this.setState({ reasonForUpdate: \"\", activateReadOnlyPrompt: false })}\r\n >\r\n Edit {videoMediaType}\r\n \r\n \r\n Are you sure you wish to edit this media item?\r\n \r\n \r\n - A new 'pending' copy will be created, and will need to be approved by a SermonCentral administrator\r\n \r\n \r\n - The original version will not be changed until the 'pending' copy is approved.\r\n \r\n \r\n - If this item is on SermonCentral, it will not be updated until the approval process is completed.\r\n \r\n \r\n Reason For Update\r\n this.setState({ reasonForUpdate: e.target.value })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {creatingPending && }\r\n\r\n \r\n \r\n this.setState({ showDisable: false })}\r\n aria-labelledby=\"disable-dialog-title\"\r\n aria-describedby=\"disable-dialog-description\"\r\n >\r\n Disable Media\r\n \r\n \r\n Are you sure you wish to request this to be disabled?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be disabled.\r\n \r\n this.setState({ disableReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showDelete: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Media\r\n \r\n \r\n Are you sure you wish to request this to be deleted?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be deleted.\r\n \r\n this.setState({ deleteReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showEnable: false })}\r\n aria-labelledby=\"enable-dialog-title\"\r\n aria-describedby=\"enable-dialog-description\"\r\n >\r\n Enable Media\r\n \r\n \r\n Are you sure you wish to request this to be enabled?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be enabled.\r\n \r\n this.setState({ enableReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showCancel: false })}\r\n aria-labelledby=\"cancel-dialog-title\"\r\n aria-describedby=\"cancel-dialog-description\"\r\n >\r\n Cancel changes\r\n \r\n \r\n Are you sure you wish to cancel these changes?\r\n \r\n
\r\n {videoMedia?.parentId ?\r\n <>\r\n \r\n By cancelling, you will be removing all changes requested. This item will no longer show for SermonCentral administrators to approve.\r\n \r\n \r\n This pending or rejected item will be removed. This cannot be undone. Your original approved media item will not be affected.\r\n \r\n :\r\n <>\r\n \r\n By cancelling, you will be removing this pending item. This item will no longer show for SermonCentral administrators to approve nor be available for you to edit or submit at a later date.\r\n \r\n \r\n This pending item will be deleted. This cannot be undone.\r\n \r\n \r\n\r\n }\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(VideoMediaDetail));","import * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport AppConfig from '../../../../entities/AppConfig';\r\nimport withRoot from '../../../../withRoot';\r\nimport VideoMediaDetail from './videoMediaDetail';\r\nimport { MediaStatus } from '../../../../entities/VideoMedia';\r\n\r\n\r\ninterface Props extends RouteComponentProps<{ id?: string, type?: string }> {\r\n config: AppConfig;\r\n}\r\n\r\ninterface State {\r\n id: string | undefined;\r\n type: string | undefined;\r\n}\r\n\r\nclass ApprovedVideoMedia extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n \r\n this.state = {\r\n type: this.props.match.params.type,\r\n id: this.props.match.params.id\r\n };\r\n }\r\n\r\n onPathChange(path: string) {\r\n this.props.history.push(path);\r\n }\r\n\r\n onPathReplace(path: string) {\r\n this.props.history.replace(path);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n this.onPathChange(path)}\r\n onPathReplace={(path) => this.onPathReplace(path)}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(ApprovedVideoMedia);","import * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport AppConfig from '../../../../entities/AppConfig';\r\nimport withRoot from '../../../../withRoot';\r\nimport VideoMediaDetail from './videoMediaDetail';\r\nimport { MediaStatus } from '../../../../entities/VideoMedia';\r\n\r\n\r\ninterface Props extends RouteComponentProps<{ id?: string, type?: string }> {\r\n config: AppConfig;\r\n}\r\n\r\ninterface State {\r\n id: string | undefined;\r\n type: string | undefined;\r\n}\r\n\r\nclass PendingVideoMedia extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n \r\n this.state = {\r\n type: this.props.match.params.type,\r\n id: this.props.match.params.id\r\n };\r\n }\r\n\r\n onPathChange(path: string) {\r\n this.props.history.push(path);\r\n }\r\n\r\n onPathReplace(path: string) {\r\n this.props.history.replace(path);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n this.onPathChange(path)}\r\n onPathReplace={(path) => this.onPathReplace(path)}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(PendingVideoMedia);","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport NotificationsOffIcon from '@material-ui/icons/NotificationsOff';\r\nimport * as React from 'react';\r\nimport DiscussionNotification from '../../entities/DiscussionNotification';\r\nimport { MiscService } from '../../services/MiscService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2\r\n },\r\n divider: {\r\n marginTop: theme.spacing(),\r\n marginBottom: theme.spacing(),\r\n },\r\n image: {\r\n width: '100%',\r\n maxWidth: '50%',\r\n margin: '0 auto',\r\n display: 'block'\r\n },\r\n date: {\r\n opacity: 0.7,\r\n marginBottom: theme.spacing()\r\n },\r\n cardContainer: {\r\n maxWidth: '500px',\r\n marginBottom: \"16px\"\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardType: {\r\n float: \"right\"\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n}\r\n\r\ninterface State {\r\n discussionNotifications?: DiscussionNotification[];\r\n deleteDialogOpen: boolean;\r\n selectedId?: number;\r\n selectedType?: string;\r\n errors: FieldValidationError[];\r\n enableSubmit: boolean;\r\n showUpdateSuccessMessage: boolean;\r\n}\r\n\r\nclass DiscussionNotifications extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n deleteDialogOpen: false,\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Discussion Notifications\";\r\n\r\n try {\r\n const discussionNotifications = await MiscService.getDiscussionNotifications();\r\n\r\n if (discussionNotifications) {\r\n this.setState({ discussionNotifications });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async unsubscribeFromDiscussionNotification() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedType && this.state.selectedId && this.state.discussionNotifications) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.unsubscribeFromDiscussionNotification(this.state.selectedId, this.state.selectedType);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let discussionNotifications = this.state.discussionNotifications;\r\n discussionNotifications = discussionNotifications.filter(d => d.id !== this.state.selectedId);\r\n this.setState({\r\n discussionNotifications,\r\n errors: [],\r\n enableSubmit: true,\r\n selectedId: undefined,\r\n selectedType: undefined,\r\n deleteDialogOpen: false,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n
\r\n \r\n Discussions Notifications\r\n \r\n {!this.state.discussionNotifications &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {this.state.discussionNotifications && this.state.discussionNotifications.length === 0 &&\r\n \r\n \r\n
\r\n You are not subscribed to any discussions yet.\r\n
\r\n }\r\n {this.state.discussionNotifications && this.state.discussionNotifications.length > 0 &&\r\n \r\n {this.state.discussionNotifications.map(subscription =>\r\n \r\n \r\n \r\n {new Date(subscription.dateSubscribed).toDateString()}\r\n \r\n \r\n {subscription.type}\r\n \r\n \r\n {subscription.title}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n }\r\n
\r\n this.setState({ deleteDialogOpen: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Unsubscribe?\r\n \r\n \r\n Are you sure you wish to unsubscribe from discussion notifications for this {this.state.selectedType}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile has been updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(DiscussionNotifications));","import Avatar from '@material-ui/core/Avatar';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport MessageIcon from '@material-ui/icons/Message';\r\nimport * as React from 'react';\r\nimport PrivateMessage from '../../entities/PrivateMessage';\r\nimport { MiscService } from '../../services/MiscService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2\r\n },\r\n divider: {\r\n marginTop: theme.spacing(),\r\n marginBottom: theme.spacing(),\r\n },\r\n image: {\r\n width: '100%',\r\n maxWidth: '50%',\r\n margin: '0 auto',\r\n display: 'block'\r\n },\r\n date: {\r\n opacity: 0.7,\r\n marginBottom: theme.spacing()\r\n },\r\n card: {\r\n width: '500px',\r\n marginBottom: \"16px\"\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: \"100%\",\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n}\r\n\r\ninterface State {\r\n messages: PrivateMessage[] | undefined;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass PrivateMessagesPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n messages: undefined,\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Private Messages\";\r\n\r\n try {\r\n const messages = await MiscService.getPrivateMessages();\r\n\r\n if (messages) {\r\n this.setState({ messages });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n
\r\n \r\n Private Messages\r\n \r\n \r\n {!this.state.messages &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {this.state.messages && this.state.messages.length === 0 &&\r\n \r\n \r\n
\r\n You do not have any private messages.\r\n
\r\n }\r\n {this.state.messages && this.state.messages.length > 0 && this.state.messages.map((message, index) =>\r\n \r\n :\r\n (message.fromUserLastName ?\r\n {message.fromUserFirstName.charAt(0).toUpperCase()}{message.fromUserLastName.charAt(0).toUpperCase()} :\r\n \r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(PrivateMessagesPage));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport Select from '@material-ui/core/Select';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport DirectionsIcon from '@material-ui/icons/Directions';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FavoriteIcon from '@material-ui/icons/Favorite';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport Favorite from '../../entities/Favorite';\r\nimport SermonFolder from '../../entities/SermonFolder';\r\nimport { MiscService } from '../../services/MiscService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flexGrow: 1,\r\n },\r\n toolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(),\r\n minWidth: 200,\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardImage: {\r\n height: 150,\r\n backgroundSize: \"contain\"\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n radioBox: {\r\n padding: '5px 12px'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: \"100%\",\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string | undefined }>, WithStyles {\r\n config: AppConfig;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n sermonFolders: SermonFolder[];\r\n selectedSermonFolderId: number | undefined;\r\n selectedSermonFolderIdToMove: number | undefined;\r\n favorites: Favorite[];\r\n selectedFavoriteId: number | undefined;\r\n errors: FieldValidationError[];\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n showEditDialog: boolean;\r\n editSermonFolderName: string;\r\n editSermonFolderNotes: string;\r\n showEditFavoriteDialog: boolean;\r\n editFavoriteNotes: string;\r\n showAddDialog: boolean;\r\n addSermonFolderName: string;\r\n addSermonFolderNotes: string;\r\n showDeleteDialog: boolean;\r\n showDeleteFavoriteDialog: boolean;\r\n showMoveFavoriteDialog: boolean;\r\n}\r\n\r\nclass SermonFolders extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n sermonFolders: [],\r\n selectedSermonFolderId: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n selectedSermonFolderIdToMove: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n favorites: [],\r\n selectedFavoriteId: undefined,\r\n errors: [],\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n showEditDialog: false,\r\n editSermonFolderName: '',\r\n editSermonFolderNotes: '',\r\n showEditFavoriteDialog: false,\r\n editFavoriteNotes: '',\r\n showAddDialog: false,\r\n addSermonFolderName: '',\r\n addSermonFolderNotes: '',\r\n showDeleteDialog: false,\r\n showDeleteFavoriteDialog: false,\r\n showMoveFavoriteDialog: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - SermonFolders\";\r\n\r\n try {\r\n const sermonFolders = await MiscService.getSermonFolders();\r\n\r\n if (sermonFolders) {\r\n\r\n var selectedSermonFolderId = this.state.selectedSermonFolderId;\r\n\r\n if (sermonFolders.length !== 0) {\r\n if (!selectedSermonFolderId || !sermonFolders.some(f => f.id === selectedSermonFolderId)) {\r\n selectedSermonFolderId = sermonFolders[0].id;\r\n }\r\n }\r\n else {\r\n selectedSermonFolderId = undefined;\r\n }\r\n\r\n this.setState({ sermonFolders }, async () => await this.updateSelectedSermonFolder(selectedSermonFolderId));\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async updateSelectedSermonFolder(sermonFolderId: number | undefined) {\r\n\r\n if (sermonFolderId) {\r\n\r\n const selectedSermonFolder = this.state.sermonFolders.find(f => f.id === sermonFolderId)!;\r\n\r\n this.setState({\r\n selectedSermonFolderId: selectedSermonFolder.id,\r\n editSermonFolderName: selectedSermonFolder.name,\r\n editSermonFolderNotes: selectedSermonFolder.notes ? selectedSermonFolder.notes : ''\r\n });\r\n }\r\n else {\r\n\r\n this.setState({\r\n selectedSermonFolderId: undefined,\r\n editSermonFolderName: '',\r\n editSermonFolderNotes: ''\r\n });\r\n }\r\n\r\n await this.updateFavorites(sermonFolderId);\r\n }\r\n\r\n cancelEditSermonFolder() {\r\n\r\n if (this.state.selectedSermonFolderId) {\r\n\r\n const selectedSermonFolder = this.state.sermonFolders.find(f => f.id === this.state.selectedSermonFolderId)!;\r\n\r\n this.setState({\r\n showEditDialog: false,\r\n editSermonFolderName: selectedSermonFolder.name,\r\n editSermonFolderNotes: selectedSermonFolder.notes ? selectedSermonFolder.notes : ''\r\n });\r\n }\r\n }\r\n\r\n cancelAddSermonFolder() {\r\n\r\n this.setState({\r\n showAddDialog: false,\r\n addSermonFolderName: '',\r\n addSermonFolderNotes: ''\r\n });\r\n }\r\n\r\n async updateFavorites(sermonFolderId: number | undefined) {\r\n\r\n if (!sermonFolderId) {\r\n\r\n this.props.history.push(`/sermon-folders`);\r\n this.setState({ favorites: [], loading: false, enableSubmit: true });\r\n }\r\n else {\r\n try {\r\n const favorites = await MiscService.getFavorites(sermonFolderId);\r\n\r\n if (favorites) {\r\n this.props.history.push(`/sermon-folders/${sermonFolderId}`);\r\n this.setState({ favorites, loading: false, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n }\r\n\r\n async deleteSermonFolder() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n if (this.state.selectedSermonFolderId) {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.deleteSermonFolder(this.state.selectedSermonFolderId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonFolders = this.state.sermonFolders;\r\n const index = sermonFolders.findIndex(f => f.id === this.state.selectedSermonFolderId);\r\n\r\n if (index >= 0) {\r\n\r\n sermonFolders.splice(index, 1);\r\n let selectedSermonFolderId: number | undefined = undefined;\r\n if (sermonFolders.length > 0) {\r\n selectedSermonFolderId = sermonFolders[0].id;\r\n }\r\n\r\n this.setState({\r\n sermonFolders,\r\n errors: [],\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'SermonFolder deleted.',\r\n }, async () => await this.updateSelectedSermonFolder(selectedSermonFolderId));\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n\r\n async deleteFavorite() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n if (this.state.selectedFavoriteId) {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.deleteFavorite(this.state.selectedFavoriteId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let favorites = this.state.favorites;\r\n const index = favorites.findIndex(f => f.id === this.state.selectedFavoriteId);\r\n\r\n if (index >= 0) {\r\n\r\n favorites.splice(index, 1);\r\n this.setState({\r\n favorites,\r\n errors: [],\r\n enableSubmit: true,\r\n showDeleteFavoriteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Favorite deleted.',\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n\r\n async moveFavorite(favoriteId: number, index: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n let favorites = this.state.favorites;\r\n const currentIndex = favorites.findIndex(f => f.id === favoriteId);\r\n let favorite = favorites[currentIndex];\r\n\r\n const response = await MiscService.saveFavorite(favoriteId, this.state.selectedSermonFolderId!, index, favorite.notes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n favorite = response.data;\r\n\r\n favorites.splice(currentIndex, 1);\r\n favorites.splice(index, 0, favorite);\r\n\r\n this.setState({\r\n favorites,\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Favorite moved.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n\r\n async moveFavoriteFolder(favoriteId?: number, moveToSermonFolderId?: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n let favorites = this.state.favorites;\r\n const currentIndex = favorites.findIndex(f => f.id === favoriteId);\r\n let favorite = favorites[currentIndex];\r\n\r\n const response = await MiscService.saveFavorite(favoriteId!, moveToSermonFolderId!, 0, favorite.notes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n await this.updateSelectedSermonFolder(moveToSermonFolderId);\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showMoveFavoriteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Favorite moved to a new folder.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showMoveFavoriteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showMoveFavoriteDialog: false });\r\n }\r\n\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showMoveFavoriteDialog: false });\r\n }\r\n }\r\n\r\n async handleEditFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.editSermonFolderName) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.saveSermonFolder(this.state.selectedSermonFolderId, this.state.editSermonFolderName, this.state.editSermonFolderNotes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let selectedSermonFolder = this.state.sermonFolders.find(f => f.id === this.state.selectedSermonFolderId)!;\r\n\r\n selectedSermonFolder.name = this.state.editSermonFolderName;\r\n selectedSermonFolder.notes = this.state.editSermonFolderNotes;\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showEditDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'SermonFolder updated.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n }\r\n }\r\n\r\n async handleEditFavoriteFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedFavoriteId && this.state.selectedSermonFolderId) {\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n\r\n const sortOrder = this.state.favorites.findIndex(f => f.id === this.state.selectedFavoriteId);\r\n\r\n const response = await MiscService.saveFavorite(this.state.selectedFavoriteId, this.state.selectedSermonFolderId, sortOrder, this.state.editFavoriteNotes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let favorite = this.state.favorites.find(f => f.id === this.state.selectedFavoriteId)!;\r\n\r\n favorite.notes = this.state.editFavoriteNotes;\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showEditFavoriteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Favorite updated.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n }\r\n }\r\n\r\n async handleAddFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.addSermonFolderName) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.saveSermonFolder(undefined, this.state.addSermonFolderName, this.state.addSermonFolderNotes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonFolders = this.state.sermonFolders;\r\n sermonFolders.unshift(response.data);\r\n const selectedSermonFolderId = sermonFolders[0].id;\r\n\r\n this.setState({\r\n sermonFolders,\r\n errors: [],\r\n enableSubmit: true,\r\n showAddDialog: false,\r\n addSermonFolderName: '',\r\n addSermonFolderNotes: '',\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'New SermonFolder added.',\r\n }, async () => await this.updateSelectedSermonFolder(selectedSermonFolderId));\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddDialog: false });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const selectedSermonFolder = this.state.sermonFolders.find(f => f.id === this.state.selectedSermonFolderId);\r\n const selectedFavorite = this.state.favorites.find(f => f.id === this.state.selectedFavoriteId);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n SermonFolders\r\n \r\n
\r\n
\r\n {this.state.sermonFolders.length > 0 && this.state.selectedSermonFolderId &&\r\n \r\n \r\n Selected SermonFolder\r\n { await this.updateSelectedSermonFolder(parseInt(e.target.value as string, 10)); }}\r\n inputProps={{\r\n name: 'sermonfolder',\r\n id: 'select-sermonfolder',\r\n }}\r\n >\r\n {this.state.sermonFolders.map(sermonFolder =>\r\n {sermonFolder.name}\r\n )}\r\n \r\n \r\n this.setState({ showEditDialog: true })}>\r\n \r\n \r\n this.setState({ showDeleteDialog: true })}>\r\n \r\n \r\n \r\n }\r\n \r\n {!this.state.loading && selectedSermonFolder &&\r\n \r\n Notes: {selectedSermonFolder.notes}\r\n \r\n }\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.sermonFolders.length === 0 &&\r\n \r\n \r\n
\r\n You haven't added any SermonFolders yet. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.sermonFolders.length > 0 && this.state.favorites.length === 0 &&\r\n \r\n \r\n
\r\n You haven't added any favorites to this SermonFolder yet.\r\n
\r\n
\r\n Start exploring SermonCentral to find something new to save.\r\n
\r\n }\r\n {!this.state.loading && this.state.favorites.length > 0 && this.state.favorites.map((favorite, index) =>\r\n \r\n \r\n \r\n \r\n {new Date(favorite.dateCreated).toLocaleDateString()}\r\n \r\n \r\n {favorite.type}\r\n \r\n {favorite.title}\r\n \r\n
\r\n Notes: ' + favorite.notes }} />\r\n
\r\n \r\n \r\n
\r\n this.setState({ selectedFavoriteId: favorite.id, showMoveFavoriteDialog: true })}>\r\n \r\n \r\n {index > 0 &&\r\n this.moveFavorite(favorite.id, index - 1)}>\r\n \r\n \r\n }\r\n {index < this.state.favorites.length - 1 &&\r\n this.moveFavorite(favorite.id, index + 1)}>\r\n \r\n \r\n }\r\n \r\n {favorite.uri && favorite.uri.indexOf('/') >= 0 &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n )}\r\n\r\n this.setState({ showAddDialog: true })}>\r\n \r\n Add Folder\r\n \r\n\r\n this.cancelEditSermonFolder()}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleEditFormSubmit(e)}>\r\n Edit SermonFolder\r\n \r\n this.setState({ editSermonFolderName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Name')}\r\n helperText={}\r\n />\r\n this.setState({ editSermonFolderNotes: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Notes')}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n this.setState({ showEditFavoriteDialog: false })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleEditFavoriteFormSubmit(e)}>\r\n Edit Favorite\r\n \r\n this.setState({ editFavoriteNotes: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Notes')}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n this.cancelAddSermonFolder()}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleAddFormSubmit(e)}>\r\n Add SermonFolder\r\n \r\n this.setState({ addSermonFolderName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Name')}\r\n helperText={}\r\n />\r\n this.setState({ addSermonFolderNotes: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Notes')}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete SermonFolder\r\n \r\n \r\n Are you sure you wish to delete the SermonFolder {selectedSermonFolder ? selectedSermonFolder.name : ''}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.setState({ showDeleteFavoriteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Favorite\r\n \r\n \r\n Are you sure you wish to delete the Favorite {selectedFavorite ? selectedFavorite.title : ''}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.setState({ showMoveFavoriteDialog: false, selectedSermonFolderIdToMove: this.state.selectedSermonFolderId })}\r\n aria-labelledby=\"move-dialog-title\"\r\n aria-describedby=\"move-dialog-description\"\r\n >\r\n Move Favorite\r\n \r\n \r\n Select a folder to move to\r\n \r\n \r\n this.setState({ selectedSermonFolderIdToMove: parseInt(e.target.value, 10) })}>\r\n {this.state.sermonFolders.map(folder => {\r\n return (\r\n }\r\n label={folder.name}\r\n />\r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SermonFolders));","import HistoryResource from '../entities/HistoryResource';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\n\r\nexport class ResourceViewingHistoryService {\r\n\r\n public static async getResourceViewingHistory() {\r\n var response = await WebClient.Get(\"api/ResourceViewingHistory/GetResourceViewingHistory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteResourceViewingHistory(id: number) {\r\n return WebClient.Delete(\"api/ResourceViewingHistory/DeleteResourceViewingHistory\", { id });\r\n }\r\n\r\n public static deleteResourceViewingHistories() {\r\n return WebClient.Delete(\"api/ResourceViewingHistory/DeleteResourceViewingHistories\", null);\r\n }\r\n\r\n public static enableResourceViewingHistory() {\r\n return WebClient.Post(\"api/ResourceViewingHistory/EnableResourceViewingHistory\", null);\r\n }\r\n\r\n public static disableResourceViewingHistory() {\r\n return WebClient.Post(\"api/ResourceViewingHistory/DisableResourceViewingHistory\", null);\r\n }\r\n}","import Avatar from '@material-ui/core/Avatar';\r\nimport Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport HistoryResource from '../../entities/HistoryResource';\r\nimport { ResourceViewingHistoryService } from '../../services/ResourceViewingHistory';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flexGrow: 1,\r\n },\r\n toolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(),\r\n minWidth: 200,\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardImage: {\r\n height: 150,\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n radioBox: {\r\n padding: '5px 12px'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: \"100%\",\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n avatar: {\r\n margin: '8px 0px'\r\n },\r\n cardHeader: {\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n cardHeaderContent: {\r\n width: '83%'\r\n },\r\n contributorLink: {\r\n color: theme.palette.primary.main,\r\n textDecoration: 'none'\r\n },\r\n titleLink: {\r\n textDecoration: 'none'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string | undefined }>, WithStyles {\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n resources: HistoryResource[];\r\n errors: FieldValidationError[];\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n showDeleteDialog: boolean;\r\n showDeleteAllDialog: boolean;\r\n historyEnabled: boolean;\r\n enableSubmit: boolean;\r\n selectedResourceIdToDelete: number | undefined;\r\n}\r\n\r\nclass ViewingHistory extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n resources: [],\r\n errors: [],\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n showDeleteDialog: false,\r\n showDeleteAllDialog: false,\r\n historyEnabled: true,\r\n enableSubmit: true,\r\n selectedResourceIdToDelete: undefined\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Viewing History\";\r\n\r\n try {\r\n const resources = await ResourceViewingHistoryService.getResourceViewingHistory();\r\n\r\n if (resources) {\r\n this.setState({ resources, loading: false, historyEnabled: this.props.user.isRecordingHistory });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteResource() {\r\n if (this.state.selectedResourceIdToDelete) {\r\n try {\r\n const response = await ResourceViewingHistoryService.deleteResourceViewingHistory(this.state.selectedResourceIdToDelete);\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let resources = this.state.resources;\r\n resources = resources.filter(l => l.id !== this.state.selectedResourceIdToDelete!);\r\n\r\n this.setState({\r\n resources: resources,\r\n selectedResourceIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'History Resource was deleted successfully'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n }\r\n\r\n async deleteAllResources() {\r\n try {\r\n const response = await ResourceViewingHistoryService.deleteResourceViewingHistories();\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({\r\n resources: [],\r\n enableSubmit: true,\r\n showDeleteAllDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'All History Resources were deleted successfully'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteAllDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteAllDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteAllDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async toggleRecording() {\r\n try {\r\n const response = this.state.historyEnabled ? await ResourceViewingHistoryService.disableResourceViewingHistory() : await ResourceViewingHistoryService.enableResourceViewingHistory();\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n historyEnabled: !this.state.historyEnabled\r\n },\r\n () => this.setState({\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: `History Recording ${this.state.historyEnabled ? 'Enabled' : 'Disabled'}`\r\n }));\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async enableRecording() {\r\n try {\r\n const response = await ResourceViewingHistoryService.enableResourceViewingHistory();\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Viewing History Enabled'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async disableRecording() {\r\n try {\r\n const response = await ResourceViewingHistoryService.disableResourceViewingHistory();\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Viewing History Disabled'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Viewing History\r\n \r\n {!this.state.loading &&\r\n this.toggleRecording()}\r\n value=\"checkedB\"\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.state.historyEnabled ? 'History Enabled' : 'History Disabled'}\r\n />\r\n }\r\n
\r\n
\r\n {!this.state.loading &&\r\n \r\n }\r\n \r\n \r\n {this.state.loading ?\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n :\r\n (\r\n <>\r\n {this.state.resources.length === 0 &&\r\n \r\n \r\n
\r\n You have no items in your history.\r\n
\r\n }\r\n {!this.state.historyEnabled &&\r\n \r\n \r\n
\r\n Your history viewing feature is disabled.\r\n
\r\n }\r\n {this.state.historyEnabled && this.state.resources.length > 0 && this.state.resources.map((resource, index) =>\r\n \r\n \r\n \r\n Visited on {new Date(resource.dateViewed).toDateString()}\r\n \r\n \r\n {resource.resourceType.replace('_', ' ')}\r\n \r\n \r\n }\r\n title={{resource.title}}\r\n subheader={{resource.resourceUserName && resource.resourceUserName ? <>By: {resource.resourceUserName} : ''}}\r\n />\r\n \r\n \r\n {resource.summary.replace(/<(?:.|\\n)*?>/gi, \" \")}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n )\r\n }\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Remove item from viewing history\r\n \r\n \r\n Are you sure you wish to remove this item from your viewing history?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showDeleteAllDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Clear viewing history\r\n \r\n \r\n Are you sure you wish to clear all items from your viewing history?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ViewingHistory));","import Newsletter from '../entities/Newsletter';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\nimport { BibleTranslation } from '../entities/BibleTranslation';\r\n\r\nexport interface NewsletterSubscriptions {\r\n newsletters: Newsletter[];\r\n selectedNewsletterIds: number[];\r\n}\r\n\r\nexport class PreferencesService {\r\n\r\n public static async getNewsletterSubscriptions() {\r\n\r\n var response = await WebClient.Get(\"api/Preferences/GetNewsletterSubscriptions\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static updateNewsletterSubscriptions(newsletterIds: number[]) {\r\n return WebClient.Post(\"api/Preferences/UpdateNewsletterSubscriptions\", { newsletterIds });\r\n }\r\n\r\n public static async getBibleTranslations() {\r\n\r\n var response = await WebClient.Get(\"api/Preferences/GetBibleTranslations\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getPreferredBibleTranslation() {\r\n\r\n var response = await WebClient.Get(\"api/Preferences/GetPreferredBibleTranslation\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static updatePreferredBibleTranslation(translationId: string) {\r\n return WebClient.Post(\"api/Preferences/UpdatePreferredBibleTranslation\", { translationId });\r\n }\r\n\r\n public static async getNotificationPreferences() {\r\n\r\n var response = await WebClient.Get<{ receiveFeedbackMessageNotifications: boolean, receiveSermonCommentNotifications: boolean }>(\"api/Preferences/GetNotificationPreferences\");\r\n if (ServerResponse.isServerResponse<{ receiveFeedbackMessageNotifications: boolean, receiveSermonCommentNotifications: boolean }>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static updateNotificationPreferences(receiveFeedbackMessageNotifications: boolean, receiveSermonCommentNotifications: boolean) {\r\n return WebClient.Post(\"api/Preferences/UpdateNotificationPreferences\", { receiveFeedbackMessageNotifications, receiveSermonCommentNotifications });\r\n }\r\n\r\n}","import Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport Newsletter from '../../entities/Newsletter';\r\nimport { PreferencesService } from '../../services/PreferencesService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 550\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n checkBox: {\r\n padding: '17px'\r\n },\r\n formControl: {\r\n marginTop: theme.spacing() * 1.5,\r\n marginBottom: theme.spacing() * 1.5\r\n },\r\n saveButton: {\r\n marginLeft: 'auto',\r\n display: 'block'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n newsletters: Newsletter[];\r\n selectedNewsletterIds: number[];\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass NewsletterSubscriptions extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n newsletters: [],\r\n selectedNewsletterIds: [],\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Newsletter Subscriptions\";\r\n\r\n try {\r\n const newsletterSubscriptions = await PreferencesService.getNewsletterSubscriptions();\r\n\r\n if (newsletterSubscriptions) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n newsletters: newsletterSubscriptions.newsletters,\r\n selectedNewsletterIds: newsletterSubscriptions.selectedNewsletterIds,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n toggleNewsletterSelection = (id: number) => {\r\n\r\n var selectedList: number[] = this.state.selectedNewsletterIds;\r\n var index = selectedList.indexOf(id);\r\n\r\n if (index < 0) {\r\n selectedList.push(id);\r\n } else {\r\n selectedList.splice(index, 1);\r\n }\r\n\r\n this.setState({\r\n selectedNewsletterIds: selectedList\r\n });\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await PreferencesService.updateNewsletterSubscriptions(this.state.selectedNewsletterIds);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Newsletter subscriptions updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n Newsletter Subscriptions\r\n \r\n \r\n
this.handleFormSubmit(e)}>\r\n \r\n Select the newsletter subscriptions you wish to receive.\r\n \r\n \r\n \r\n {this.state.newsletters.filter(n => !n.proUsersOnly || this.props.user.proSubscription).map(newsletter => {\r\n return (\r\n = 0}\r\n className={classes.checkBox}\r\n onChange={(e) => this.toggleNewsletterSelection(parseInt(e.target.value, 10))}\r\n value={newsletter.id.toString()}\r\n color=\"primary\"\r\n />\r\n }\r\n label={(' + newsletter.name + '
' + newsletter.description }} />)}\r\n />\r\n );\r\n })}\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(NewsletterSubscriptions));","import Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { PreferencesService } from '../../services/PreferencesService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 550\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n checkBox: {\r\n padding: '17px'\r\n },\r\n formControl: {\r\n marginTop: theme.spacing() * 1.5,\r\n marginBottom: theme.spacing() * 1.5\r\n },\r\n saveButton: {\r\n marginLeft: 'auto',\r\n display: 'block'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n receiveFeedbackMessageNotifications: boolean;\r\n receiveSermonCommentNotifications: boolean;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass NotificationPreferences extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n receiveFeedbackMessageNotifications: false,\r\n receiveSermonCommentNotifications: false,\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Notification Preferences\";\r\n\r\n try {\r\n const notificationPreferences = await PreferencesService.getNotificationPreferences();\r\n\r\n if (notificationPreferences) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n receiveFeedbackMessageNotifications: notificationPreferences.receiveFeedbackMessageNotifications,\r\n receiveSermonCommentNotifications: notificationPreferences.receiveSermonCommentNotifications,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await PreferencesService.updateNotificationPreferences(this.state.receiveFeedbackMessageNotifications, this.state.receiveSermonCommentNotifications);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Notification preferences updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n Notification Preferences\r\n \r\n \r\n
this.handleFormSubmit(e)}>\r\n \r\n \r\n this.setState({ receiveSermonCommentNotifications: !this.state.receiveSermonCommentNotifications })}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Email me when someone comments on one of my sermons\"\r\n />\r\n this.setState({ receiveFeedbackMessageNotifications: !this.state.receiveFeedbackMessageNotifications })}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Allow other registered SermonCentral visitors to send me private messages\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(NotificationPreferences));","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { BibleTranslation } from '../../entities/BibleTranslation';\r\nimport { PreferencesService } from '../../services/PreferencesService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 550\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n radioBox: {\r\n padding: '5px 12px'\r\n },\r\n formControl: {\r\n marginTop: theme.spacing() * 1.5,\r\n marginBottom: theme.spacing() * 1.5\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n bibleTranslations: BibleTranslation[];\r\n preferredTranslationId: string;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass BibleTranslationPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n bibleTranslations: [],\r\n preferredTranslationId: '',\r\n showUpdateSuccessMessage: false,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Bible Translation\";\r\n\r\n try {\r\n const bibleTranslations = await PreferencesService.getBibleTranslations();\r\n const preferredBibleTranslation = await PreferencesService.getPreferredBibleTranslation();\r\n\r\n if (bibleTranslations && preferredBibleTranslation) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n bibleTranslations: bibleTranslations,\r\n preferredTranslationId: preferredBibleTranslation.id,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await PreferencesService.updatePreferredBibleTranslation(this.state.preferredTranslationId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Preferred Bible translation updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n Preferred Bible Translation\r\n \r\n \r\n
this.handleFormSubmit(e)}>\r\n \r\n Select which translation you would like to see when searching for scripture, browsing the Bible, using study tools or hovering over a scripture reference.\r\n \r\n \r\n this.setState({ preferredTranslationId: e.target.value })} >\r\n {this.state.bibleTranslations.map(translation => {\r\n return (\r\n }\r\n label={translation.name + ' (' + translation.id + ')'}\r\n />\r\n );\r\n })}\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(BibleTranslationPage));","import AboutMe from '../entities/AboutMe';\r\nimport ApplicationUser from '../entities/ApplicationUser';\r\nimport MyChurch from '../entities/MyChurch';\r\nimport MyStory from '../entities/MyStory';\r\nimport SharedLink from '../entities/SharedLink';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\n\r\nexport class ProfileService {\r\n\r\n public static changeProfileImage(base64ImageUrl: string | null) {\r\n return WebClient.Post(\"api/Profile/ChangeProfileImage\", { base64ImageUrl: base64ImageUrl });\r\n }\r\n\r\n public static async getAboutMe() {\r\n\r\n var response = await WebClient.Get(\"api/Profile/GetAboutMe\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async updateAboutMe(firstName: string, lastName: string, education: string, experience: string, jobPosition: string) {\r\n\r\n return WebClient.Post(\"api/Profile/UpdateAboutMe\", { firstName, lastName, education, experience, jobPosition });\r\n }\r\n\r\n public static async getMyChurch() {\r\n\r\n var response = await WebClient.Get(\"api/Profile/GetMyChurch\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getDenominations() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Profile/GetDenominations\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchAges() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Profile/GetChurchAges\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchAttendances() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Profile/GetChurchAttendances\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchMedianAudienceAges() {\r\n\r\n var response = await WebClient.Get<{ id: number, name: string }[]>(\"api/Profile/GetChurchMedianAudienceAges\");\r\n if (ServerResponse.isServerResponse<{ id: number, name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchPrimaryEthnicities() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Profile/GetChurchPrimaryEthnicities\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchServiceStyles() {\r\n\r\n var response = await WebClient.Get<{ id: number, name: string }[]>(\"api/Profile/GetChurchServiceStyles\");\r\n if (ServerResponse.isServerResponse<{ id: number, name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getUSStates() {\r\n\r\n var response = await WebClient.Get<{ name: string, postalAbbreviation: string }[]>(\"api/Profile/GetUSStates\");\r\n if (ServerResponse.isServerResponse<{ name: string, postalAbbreviation: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getCanadianProvinces() {\r\n\r\n var response = await WebClient.Get<{ name: string, postalAbbreviation: string }[]>(\"api/Profile/GetCanadianProvinces\");\r\n if (ServerResponse.isServerResponse<{ name: string, postalAbbreviation: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getCountries() {\r\n\r\n var response = await WebClient.Get<{ name: string, twoCharCode: string, threeCharCode: string }[]>(\"api/Profile/GetCountries\");\r\n if (ServerResponse.isServerResponse<{ name: string, twoCharCode: string, threeCharCode: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async updateMyChurch(name: string, description: string, denomination: string, age: string, attendance: string, medianAudienceAge: string, primaryEthnicity: string, serviceStyle: string, phoneNumber: string, emailAddress: string, website: string, streetAddress: string, city: string, state: string, postalCode: string, country: string) {\r\n\r\n return WebClient.Post(\"api/Profile/UpdateMyChurch\", { name, description, denomination, age, attendance, medianAudienceAge, primaryEthnicity, serviceStyle, phoneNumber, emailAddress, website, streetAddress, city, state, postalCode, country });\r\n }\r\n\r\n public static async getMyStory() {\r\n\r\n var response = await WebClient.Get(\"api/Profile/GetMyStory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async updateMyStory(family: string, hobbies: string, bestAdvice: string, sermonDifference: string, favoriteIllustration: string, bookImpact: string, somethingFunny: string, parentsThink: string, spouseThink: string, ifICould: string, tombstone: string, comment: string) {\r\n\r\n return WebClient.Post(\"api/Profile/UpdateMyStory\", { family, hobbies, bestAdvice, sermonDifference, favoriteIllustration, bookImpact, somethingFunny, parentsThink, spouseThink, ifICould, tombstone, comment });\r\n }\r\n\r\n public static async getSharedLinks() {\r\n var response = await WebClient.Get(\"api/Profile/GetSharedLinks\");\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static addSharedLink(text: string, url: string) {\r\n return WebClient.Post(\"api/Profile/SaveSharedLink\", { text, url });\r\n }\r\n\r\n public static deleteSharedLink(id: number) {\r\n return WebClient.Delete(\"api/Profile/DeleteSharedLink\", { id });\r\n }\r\n}","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport AboutMe from '../../entities/AboutMe';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '72vh',\r\n maxWidth: '700px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n editForm: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n firstName: string;\r\n lastName: string;\r\n education: string;\r\n experience: string;\r\n jobPosition: string;\r\n savedAboutMe?: AboutMe;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass AboutMePage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n firstName: '',\r\n lastName: '',\r\n education: '',\r\n experience: '',\r\n jobPosition: '',\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - About Me\";\r\n\r\n try {\r\n const aboutMe = await ProfileService.getAboutMe();\r\n\r\n if (aboutMe) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n firstName: aboutMe.firstName,\r\n lastName: aboutMe.lastName,\r\n education: aboutMe.education,\r\n experience: aboutMe.experience,\r\n jobPosition: aboutMe.jobPosition,\r\n savedAboutMe: aboutMe,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.firstName && this.state.lastName) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.updateAboutMe(this.state.firstName, this.state.lastName, this.state.education, this.state.experience, this.state.jobPosition);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.props.onSignIn(response.data);\r\n this.setState({\r\n savedAboutMe: {\r\n firstName: this.state.firstName,\r\n lastName: this.state.lastName,\r\n jobPosition: this.state.jobPosition,\r\n experience: this.state.experience,\r\n education: this.state.education\r\n },\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n renderEditMode() {\r\n\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
this.handleFormSubmit(e)}>\r\n this.setState({ firstName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'FirstName')}\r\n helperText={}\r\n />\r\n this.setState({ lastName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'LastName')}\r\n helperText={}\r\n />\r\n this.setState({ jobPosition: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'JobPosition')}\r\n helperText={}\r\n />\r\n this.setState({ education: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Education')}\r\n helperText={}\r\n />\r\n this.setState({ experience: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Experience')}\r\n helperText={}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile has been updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n About Me\r\n \r\n \r\n \r\n {this.renderEditMode()}\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(AboutMePage));","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Select from '@material-ui/core/Select';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport MyChurch from '../../entities/MyChurch';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { Checkbox, FormControlLabel } from '@material-ui/core';\r\nimport { Link } from 'react-router-dom';\r\nimport AppConfig from '../../entities/AppConfig';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n maxWidth: '700px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n minHeight: '75vh',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n lineWrapper: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n editForm: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n config: AppConfig;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n name: string;\r\n description: string;\r\n denomination: string;\r\n age: string;\r\n attendance: string;\r\n medianAudienceAge: string;\r\n primaryEthnicity: string;\r\n serviceStyle: string;\r\n phoneNumber: string;\r\n emailAddress: string;\r\n website: string;\r\n streetAddress: string;\r\n city: string;\r\n state: string;\r\n postalCode: string;\r\n country: string;\r\n savedMyChurch?: MyChurch;\r\n showUpdateSuccessMessage: boolean;\r\n religiousConsentChecked: boolean;\r\n errors: FieldValidationError[];\r\n denominations: { name: string }[];\r\n churchAges: { name: string }[];\r\n churchAttendances: { name: string }[];\r\n churchMedianAudienceAges: { id: number, name: string }[];\r\n churchPrimaryEthnicities: { name: string }[];\r\n churchServiceStyles: { id: number, name: string }[];\r\n usStates: { name: string, postalAbbreviation: string }[];\r\n canadianProvinces: { name: string, postalAbbreviation: string }[];\r\n countries: { name: string, twoCharCode: string, threeCharCode: string }[];\r\n}\r\n\r\nclass MyChurchPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n name: '',\r\n description: '',\r\n denomination: '',\r\n age: '',\r\n attendance: '',\r\n medianAudienceAge: '',\r\n primaryEthnicity: '',\r\n serviceStyle: '',\r\n phoneNumber: '',\r\n emailAddress: '',\r\n website: '',\r\n streetAddress: '',\r\n city: '',\r\n state: '',\r\n postalCode: '',\r\n country: '',\r\n showUpdateSuccessMessage: false,\r\n religiousConsentChecked: true,\r\n errors: [],\r\n denominations: [],\r\n churchAges: [],\r\n churchAttendances: [],\r\n churchMedianAudienceAges: [],\r\n churchPrimaryEthnicities: [],\r\n churchServiceStyles: [],\r\n usStates: [],\r\n canadianProvinces: [],\r\n countries: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - My Church\";\r\n\r\n try {\r\n const myChurch = await ProfileService.getMyChurch();\r\n\r\n if (myChurch) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n name: myChurch.name,\r\n description: myChurch.description,\r\n denomination: myChurch.denomination,\r\n age: myChurch.age,\r\n attendance: myChurch.attendance,\r\n medianAudienceAge: myChurch.medianAudienceAge,\r\n primaryEthnicity: myChurch.primaryEthnicity,\r\n serviceStyle: myChurch.serviceStyle,\r\n phoneNumber: myChurch.phoneNumber,\r\n emailAddress: myChurch.emailAddress,\r\n website: myChurch.website,\r\n streetAddress: myChurch.streetAddress,\r\n city: myChurch.city,\r\n state: myChurch.state,\r\n postalCode: myChurch.postalCode,\r\n country: myChurch.country,\r\n savedMyChurch: myChurch,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n\r\n // The following calls aren't necessary to use the interface, so if there are any errors, ignore them\r\n ProfileService.getDenominations()\r\n .then(denominations => this.setState({ denominations: denominations! }));\r\n\r\n ProfileService.getChurchAges()\r\n .then(churchAges => this.setState({ churchAges: churchAges! }));\r\n\r\n ProfileService.getChurchAttendances()\r\n .then(churchAttendances => this.setState({ churchAttendances: churchAttendances! }));\r\n\r\n ProfileService.getChurchMedianAudienceAges()\r\n .then(churchMedianAudienceAges => this.setState({ churchMedianAudienceAges: churchMedianAudienceAges! }));\r\n\r\n ProfileService.getChurchPrimaryEthnicities()\r\n .then(churchPrimaryEthnicities => this.setState({ churchPrimaryEthnicities: churchPrimaryEthnicities! }));\r\n\r\n ProfileService.getChurchServiceStyles()\r\n .then(churchServiceStyles => this.setState({ churchServiceStyles: churchServiceStyles! }));\r\n\r\n ProfileService.getUSStates()\r\n .then(usStates => this.setState({ usStates: usStates! }));\r\n\r\n ProfileService.getCanadianProvinces()\r\n .then(canadianProvinces => this.setState({ canadianProvinces: canadianProvinces! }));\r\n\r\n ProfileService.getCountries()\r\n .then(countries => this.setState({ countries: countries! }));\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit || !this.state.religiousConsentChecked) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.updateMyChurch(this.state.name, this.state.description, this.state.denomination, this.state.age, this.state.attendance, this.state.medianAudienceAge, this.state.primaryEthnicity, this.state.serviceStyle, this.state.phoneNumber, this.state.emailAddress, this.state.website, this.state.streetAddress, this.state.city, this.state.state, this.state.postalCode, this.state.country);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n savedMyChurch: {\r\n name: this.state.name,\r\n description: this.state.description,\r\n denomination: this.state.denomination,\r\n age: this.state.age,\r\n attendance: this.state.attendance,\r\n medianAudienceAge: this.state.medianAudienceAge,\r\n primaryEthnicity: this.state.primaryEthnicity,\r\n serviceStyle: this.state.serviceStyle,\r\n phoneNumber: this.state.phoneNumber,\r\n emailAddress: this.state.emailAddress,\r\n website: this.state.website,\r\n streetAddress: this.state.streetAddress,\r\n city: this.state.city,\r\n state: this.state.state,\r\n postalCode: this.state.postalCode,\r\n country: this.state.country,\r\n },\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n renderEditMode() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n
this.handleFormSubmit(e)}>\r\n
\r\n About My Church\r\n \r\n
\r\n
\r\n this.setState({ name: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Name')}\r\n helperText={}\r\n />\r\n this.setState({ description: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Description')}\r\n helperText={}\r\n />\r\n {this.state.denominations.length > 0 &&\r\n \r\n Denomination\r\n this.setState({ denomination: e.target.value as string })}\r\n inputProps={{\r\n name: 'denomination',\r\n id: 'denomination',\r\n }}\r\n >\r\n \r\n {this.state.denominations.map(denomination => {\r\n return (\r\n \r\n {denomination.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.denominations.length === 0 &&\r\n this.setState({ denomination: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Denomination')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchAges.length > 0 &&\r\n \r\n Age\r\n this.setState({ age: e.target.value as string })}\r\n inputProps={{\r\n name: 'churchAge',\r\n id: 'churchAge',\r\n }}\r\n >\r\n \r\n {this.state.churchAges.map(churchAge => {\r\n return (\r\n \r\n {churchAge.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchAges.length === 0 &&\r\n this.setState({ age: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Age')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchServiceStyles.length > 0 &&\r\n \r\n Service Style\r\n this.setState({ serviceStyle: e.target.value as string })}\r\n inputProps={{\r\n name: 'serviceStyle',\r\n id: 'serviceStyle',\r\n }}\r\n >\r\n \r\n {this.state.churchServiceStyles.map(serviceStyle => {\r\n return (\r\n \r\n {serviceStyle.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchServiceStyles.length === 0 &&\r\n this.setState({ serviceStyle: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'ServiceStyle')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchPrimaryEthnicities.length > 0 &&\r\n \r\n Predominant Ethnicity\r\n this.setState({ primaryEthnicity: e.target.value as string })}\r\n inputProps={{\r\n name: 'primaryEthnicity',\r\n id: 'primaryEthnicity',\r\n }}\r\n >\r\n \r\n {this.state.churchPrimaryEthnicities.map(primaryEthnicity => {\r\n return (\r\n \r\n {primaryEthnicity.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchPrimaryEthnicities.length === 0 &&\r\n this.setState({ primaryEthnicity: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'PrimaryEthnicity')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchAttendances.length > 0 &&\r\n \r\n Average Attendance\r\n this.setState({ attendance: e.target.value as string })}\r\n inputProps={{\r\n name: 'attendance',\r\n id: 'attendance',\r\n }}\r\n >\r\n \r\n {this.state.churchAttendances.map(attendance => {\r\n return (\r\n \r\n {attendance.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchAttendances.length === 0 &&\r\n this.setState({ attendance: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Attendance')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchMedianAudienceAges.length > 0 &&\r\n \r\n Average Audience Age\r\n this.setState({ medianAudienceAge: e.target.value as string })}\r\n inputProps={{\r\n name: 'medianAudienceAge',\r\n id: 'medianAudienceAge',\r\n }}\r\n >\r\n \r\n {this.state.churchMedianAudienceAges.map(medianAudienceAge => {\r\n return (\r\n \r\n {medianAudienceAge.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchMedianAudienceAges.length === 0 &&\r\n this.setState({ medianAudienceAge: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'MedianAudienceAge')}\r\n helperText={}\r\n />\r\n }\r\n\r\n this.setState({ religiousConsentChecked: e.target.checked })}\r\n size=\"small\"\r\n value={this.state.religiousConsentChecked}\r\n />\r\n }\r\n label={\r\n
\r\n By checking this box, I affirm that I am voluntarily providing information concerning my religious beliefs to Outreach, and\r\n I hereby give my consent for Outreach to collect this information and to use, store, disclose, analyze, delete, or modify\r\n any data containing this information in accordance with\r\n Outreach’s Privacy Policy.\r\n
\r\n }\r\n style={{marginTop: 15, marginBottom: 15}}\r\n />\r\n\r\n \r\n
\r\n
\r\n Church Location and Contact Info\r\n \r\n
\r\n
\r\n this.setState({ phoneNumber: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'ContactPhoneNumber')}\r\n helperText={}\r\n />\r\n this.setState({ emailAddress: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'ContactEmailAddress')}\r\n helperText={}\r\n />\r\n this.setState({ website: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'WebsiteUrl')}\r\n helperText={}\r\n />\r\n this.setState({ streetAddress: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'StreetAddress')}\r\n helperText={}\r\n />\r\n this.setState({ city: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'City')}\r\n helperText={}\r\n />\r\n {this.state.usStates.length > 0 && this.state.country === 'United States of America' &&\r\n \r\n State\r\n this.setState({ state: e.target.value as string })}\r\n inputProps={{\r\n name: 'state',\r\n id: 'state',\r\n }}\r\n >\r\n \r\n {this.state.usStates.map(state => {\r\n return (\r\n \r\n {state.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.canadianProvinces.length > 0 && this.state.country === 'Canada' &&\r\n \r\n Province\r\n this.setState({ state: e.target.value as string })}\r\n inputProps={{\r\n name: 'state',\r\n id: 'state',\r\n }}\r\n >\r\n \r\n {this.state.canadianProvinces.map(province => {\r\n return (\r\n \r\n {province.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {(!(this.state.country === 'United States of America' || this.state.country === 'Canada') || this.state.usStates.length === 0 || this.state.canadianProvinces.length === 0) &&\r\n this.setState({ state: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'State')}\r\n helperText={}\r\n />\r\n }\r\n this.setState({ postalCode: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'PostalCode')}\r\n helperText={}\r\n />\r\n {this.state.countries.length > 0 &&\r\n \r\n Country\r\n this.setState({ country: e.target.value as string })}\r\n inputProps={{\r\n name: 'country',\r\n id: 'country',\r\n }}\r\n >\r\n \r\n {this.state.countries.map(country => {\r\n return (\r\n \r\n {country.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.countries.length === 0 &&\r\n this.setState({ country: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Country')}\r\n helperText={}\r\n />\r\n }\r\n \r\n
\r\n\r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile has been updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n My Church\r\n \r\n \r\n \r\n {this.renderEditMode()}\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(MyChurchPage));","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport MyStory from '../../entities/MyStory';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n maxWidth: '700px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n minHeight: '75vh',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n editForm: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n family: string;\r\n hobbies: string;\r\n bestAdvice: string;\r\n sermonDifference: string;\r\n favoriteIllustration: string;\r\n bookImpact: string;\r\n somethingFunny: string;\r\n parentsThink: string;\r\n spouseThink: string;\r\n ifICould: string;\r\n tombstone: string;\r\n comment: string;\r\n savedMyStory?: MyStory;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass MyStoryPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n family: '',\r\n hobbies: '',\r\n bestAdvice: '',\r\n sermonDifference: '',\r\n favoriteIllustration: '',\r\n bookImpact: '',\r\n somethingFunny: '',\r\n parentsThink: '',\r\n spouseThink: '',\r\n ifICould: '',\r\n tombstone: '',\r\n comment: '',\r\n showUpdateSuccessMessage: false,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - My Story\";\r\n\r\n try {\r\n const myStory = await ProfileService.getMyStory();\r\n\r\n if (myStory) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n family: myStory.family,\r\n hobbies: myStory.hobbies,\r\n bestAdvice: myStory.bestAdvice,\r\n sermonDifference: myStory.sermonDifference,\r\n favoriteIllustration: myStory.favoriteIllustration,\r\n bookImpact: myStory.bookImpact,\r\n somethingFunny: myStory.somethingFunny,\r\n parentsThink: myStory.parentsThink,\r\n spouseThink: myStory.spouseThink,\r\n ifICould: myStory.ifICould,\r\n tombstone: myStory.tombstone,\r\n comment: myStory.comment,\r\n savedMyStory: myStory,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.updateMyStory(this.state.family, this.state.hobbies, this.state.bestAdvice, this.state.sermonDifference, this.state.favoriteIllustration, this.state.bookImpact, this.state.somethingFunny, this.state.parentsThink, this.state.spouseThink, this.state.ifICould, this.state.tombstone, this.state.comment);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n savedMyStory: {\r\n family: this.state.family,\r\n hobbies: this.state.hobbies,\r\n bestAdvice: this.state.bestAdvice,\r\n sermonDifference: this.state.sermonDifference,\r\n favoriteIllustration: this.state.favoriteIllustration,\r\n bookImpact: this.state.bookImpact,\r\n somethingFunny: this.state.somethingFunny,\r\n parentsThink: this.state.parentsThink,\r\n spouseThink: this.state.spouseThink,\r\n ifICould: this.state.ifICould,\r\n tombstone: this.state.tombstone,\r\n comment: this.state.comment,\r\n },\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n renderEditMode() {\r\n\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n
this.handleFormSubmit(e)}>\r\n
\r\n this.setState({ family: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Family')}\r\n helperText={}\r\n />\r\n this.setState({ hobbies: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Hobbies')}\r\n helperText={}\r\n />\r\n this.setState({ sermonDifference: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SermonDifference')}\r\n helperText={}\r\n />\r\n this.setState({ bookImpact: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'BookImpact')}\r\n helperText={}\r\n />\r\n this.setState({ comment: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Comment')}\r\n helperText={}\r\n />\r\n this.setState({ tombstone: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Tombstone')}\r\n helperText={}\r\n />\r\n this.setState({ spouseThink: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SpouseThink')}\r\n helperText={}\r\n />\r\n this.setState({ parentsThink: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'ParentsThink')}\r\n helperText={}\r\n />\r\n this.setState({ bestAdvice: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'BestAdvice')}\r\n helperText={}\r\n />\r\n this.setState({ somethingFunny: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SomethingFunny')}\r\n helperText={}\r\n />\r\n this.setState({ favoriteIllustration: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'FavoriteIllustration')}\r\n helperText={}\r\n />\r\n this.setState({ ifICould: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'IfICould')}\r\n helperText={}\r\n />\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile has been updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n My Story\r\n \r\n \r\n \r\n {this.renderEditMode()}\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(MyStoryPage));","import Avatar from '@material-ui/core/Avatar';\r\nimport Button from '@material-ui/core/Button';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Slider from '@material-ui/core/Slider';\r\nimport * as React from 'react';\r\nimport AvatarEditor from 'react-avatar-editor';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n avatar: {\r\n margin: '0 auto',\r\n marginTop: theme.spacing() * 4,\r\n width: 250,\r\n height: 250,\r\n borderRadius: 0\r\n },\r\n input: {\r\n display: 'none',\r\n },\r\n button: {\r\n margin: '0 auto',\r\n marginTop: theme.spacing() * 2,\r\n },\r\n slider: {\r\n padding: '22px 0px',\r\n },\r\n cropDialog: {\r\n minWidth: '400px',\r\n overflow: 'hidden'\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n cropDialog: {\r\n minWidth: 'inherit'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ninterface State {\r\n enableSubmit: boolean;\r\n user: ApplicationUser;\r\n showUpdateSuccessMessage: boolean;\r\n uploadedFileData: any;\r\n showCropDialog: boolean;\r\n cropScale: number;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass ProfileImage extends React.Component {\r\n\r\n cropperRef: AvatarEditor | null = null;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n user: props.user,\r\n showUpdateSuccessMessage: false,\r\n uploadedFileData: '',\r\n showCropDialog: false,\r\n cropScale: 1,\r\n errors: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Profile Image\";\r\n }\r\n\r\n handleFileUpload(file: File) {\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = (e) => {\r\n this.setState({ uploadedFileData: reader.result, showCropDialog: true });\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n handleFileUploadChange(e: React.ChangeEvent) {\r\n\r\n var file = e.target.files && e.target.files[0];\r\n if (file) {\r\n this.handleFileUpload(file);\r\n }\r\n }\r\n\r\n handleFileUploadDrop(e: React.DragEvent) {\r\n\r\n e.preventDefault();\r\n var file = e.dataTransfer.files[0];\r\n if (file) {\r\n this.handleFileUpload(file);\r\n }\r\n }\r\n\r\n async removeProfileImage() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.changeProfileImage(null);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({ user: response.data, showUpdateSuccessMessage: true, errors: [], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n this.props.onSignIn(response.data);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n\r\n async updateProfileImage() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.cropperRef) {\r\n\r\n let canvas = document.createElement('canvas');\r\n canvas.width = 500;\r\n canvas.height = 500;\r\n const image = this.cropperRef.getImage();\r\n const ctx = canvas.getContext('2d');\r\n\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, 500, 500);\r\n const base64ImageUrl = canvas.toDataURL();\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.changeProfileImage(base64ImageUrl);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({ user: response.data, showUpdateSuccessMessage: true, errors: [], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n this.props.onSignIn(response.data);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile image has been updated.\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n \r\n Profile Image\r\n \r\n \r\n\r\n
e.preventDefault()} onDrop={(e) => this.handleFileUploadDrop(e)}>\r\n {this.state.user.profileImageUrl ?\r\n :\r\n \r\n }\r\n\r\n {this.state.user.profileImageUrl &&\r\n
\r\n \r\n
\r\n }\r\n\r\n
\r\n this.handleFileUploadChange(e)}\r\n />\r\n \r\n
\r\n
\r\n\r\n this.setState({ showCropDialog: false, uploadedFileData: '', cropScale: 1 })}\r\n aria-labelledby=\"crop-dialog-title\"\r\n aria-describedby=\"crop-dialog-description\"\r\n >\r\n Crop Image\r\n \r\n this.cropperRef = cropper}\r\n image={this.state.uploadedFileData}\r\n width={250}\r\n height={250}\r\n border={10}\r\n rotate={0}\r\n scale={this.state.cropScale}\r\n />\r\n Zoom\r\n this.setState({ cropScale: value as number })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ProfileImage));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport LinkIcon from '@material-ui/icons/Link';\r\nimport * as React from 'react';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport SharedLink from '../../entities/SharedLink';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n dialogContent: {\r\n minWidth: '300px'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n cardContainer: {\r\n maxWidth: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n dialogContent: {\r\n minWidth: 'auto',\r\n width: '100%'\r\n },\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n enableSubmit: boolean;\r\n links?: SharedLink[];\r\n showAddLinkDialog: boolean;\r\n addLinkText: string;\r\n addLinkUrl: string;\r\n showDeleteLinkDialog: boolean;\r\n selectedLinkToDelete?: SharedLink;\r\n showTooManyLinksDialog: boolean;\r\n errors: FieldValidationError[];\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n}\r\n\r\nclass SharedLinks extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n showAddLinkDialog: false,\r\n enableSubmit: true,\r\n showDeleteLinkDialog: false,\r\n showTooManyLinksDialog: false,\r\n errors: [],\r\n addLinkText: '',\r\n addLinkUrl: '',\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: ''\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Shared Links\";\r\n\r\n try {\r\n const links = await ProfileService.getSharedLinks();\r\n\r\n if (links) {\r\n this.setState({ links });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteLink() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n if (this.state.links && this.state.selectedLinkToDelete) {\r\n\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.deleteSharedLink(this.state.selectedLinkToDelete.id);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let links = this.state.links;\r\n links = links.filter(l => l.id !== this.state.selectedLinkToDelete!.id);\r\n\r\n this.setState({\r\n links,\r\n selectedLinkToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteLinkDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The shared link was deleted'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteLinkDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteLinkDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteLinkDialog: false });\r\n }\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteLinkDialog: false });\r\n }\r\n }\r\n\r\n async onAddUrl(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n\r\n const text = this.state.addLinkText;\r\n let url = this.state.addLinkUrl;\r\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\r\n url = 'http://' + url;\r\n }\r\n\r\n const response = await ProfileService.addSharedLink(text, url);\r\n\r\n if (ServerResponse.isServerResponse(response) && this.state.links) {\r\n\r\n let links = this.state.links;\r\n links.push(response.data);\r\n this.setState({\r\n links,\r\n enableSubmit: true,\r\n showAddLinkDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'A new shared link has been added'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddLinkDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddLinkDialog: false });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n \r\n Shared Links\r\n \r\n \r\n \r\n \r\n {!this.state.links &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {this.state.links &&\r\n \r\n {this.state.links.length === 0 &&\r\n \r\n \r\n
\r\n You haven't shared any links yet. Add one below.\r\n
\r\n }\r\n {this.state.links.map(link =>\r\n \r\n \r\n \r\n {link.text}\r\n \r\n \r\n {link.url}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n this.setState({ showAddLinkDialog: this.state.links!.length < 5, showTooManyLinksDialog: this.state.links!.length >= 5 })}>\r\n \r\n Add Link\r\n \r\n
\r\n }\r\n
\r\n this.setState({ showDeleteLinkDialog: false })}\r\n >\r\n Delete shared link\r\n \r\n Are you sure you wish to delete {this.state.selectedLinkToDelete !== undefined && this.state.selectedLinkToDelete.text}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showAddLinkDialog: false, addLinkUrl: '', addLinkText: '', errors: [] })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.onAddUrl(e)}>\r\n \r\n Share a new link\r\n this.setState({ addLinkText: e.target.value })} helperText={} />\r\n this.setState({ addLinkUrl: e.target.value })} placeholder=\"https://www.example.com\" fullWidth required error={FieldValidationError.isFieldInError(this.state.errors, 'Url')} helperText={} />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n this.setState({ showTooManyLinksDialog: false })}\r\n >\r\n Unable to add link\r\n \r\n We're sorry, you can only share 5 links.\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SharedLinks));","import AppConfig from \"../entities/AppConfig\";\r\nimport { ServerResponse, WebClient } from \"../services/ServiceHelper\";\r\n\r\nexport class AppConfigService {\r\n\r\n public static async getAppConfig() {\r\n\r\n var response = await WebClient.Get(\"api/AppConfig\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport ApplicationUser from \"../../entities/ApplicationUser\";\r\nimport {\r\n\tButton,\r\n\tCard,\r\n\tCardContent,\r\n\tCardHeader,\r\n\tCircularProgress,\r\n\tGrid,\r\n\tIconButton,\r\n\tList,\r\n\tListItem,\r\n\tListItemSecondaryAction,\r\n\tListItemText,\r\n\tPaper,\r\n\tTable,\r\n\tTableBody,\r\n\tTableCell,\r\n\tTableHead,\r\n\tTableRow,\r\n\tTypography,\r\n} from \"@material-ui/core\";\r\nimport ProSubscription, { ProSubscriptionSourceType, ProSubscriptionStatus, ProSubscriptionTerm, ProSubscriptionTier } from \"../../entities/ProSubscription\";\r\nimport AppConfig from \"../../entities/AppConfig\";\r\nimport { AccountService } from \"../../services/AccountService\";\r\nimport { CurrencyHelper } from \"../../utilities/CurrencyHelper\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ProInvoice from \"../../entities/ProInvoice\";\r\nimport { routes } from \"../../utilities/routes\";\r\nimport DownloadIcon from \"@material-ui/icons/CloudDownload\";\r\n\r\ninterface Props {\r\n\tuser: ApplicationUser;\r\n\tconfig: AppConfig;\r\n}\r\n\r\nconst canChangeProSubscription = (user: ApplicationUser) =>\r\n\tuser.proSubscription && user.proSubscription.nextBillDate && user.proSubscription.status !== ProSubscriptionStatus.Cancelled;\r\n\r\nconst canUpgradeProSubscription = (user: ApplicationUser) => canChangeProSubscription(user) && user.proSubscription!.tier < ProSubscriptionTier.Premium;\r\n\r\nfunction getPlanName(user: ApplicationUser) {\r\n\tif (user.proSubscription != null) {\r\n\t\tif (user.proSubscription.planName.match(/employee/i)) {\r\n\t\t\treturn \"Site Administrator\";\r\n\t\t}\r\n\t\tif (user.proSubscription.planName.match(/basic/i)) {\r\n\t\t\treturn \"PRO Basic\";\r\n\t\t}\r\n\t\tif (user.proSubscription.planName.match(/premium/i)) {\r\n\t\t\tif (user.proSubscription.source === ProSubscriptionSourceType.Gloo) {\r\n\t\t\t\treturn \"Gloo PRO Premium\";\r\n\t\t\t}\r\n\t\t\treturn \"PRO Premium\";\r\n\t\t}\r\n\t\tif (user.proSubscription.planName.match(/free pro/i)) {\r\n\t\t\treturn \"Free Contributor PRO\";\r\n\t\t}\r\n\r\n\t\treturn \"PRO Plus\";\r\n\t}\r\n\r\n\treturn \"Free Account\";\r\n}\r\n\r\nexport function MyProMembershipPage(props: Props) {\r\n\tconst { user } = props;\r\n\tconst { proSubscription } = user;\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{proSubscription ? : }\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nfunction InvoiceHistoryCard(props: { user: ApplicationUser }) {\r\n\tconst { user } = props;\r\n\tconst { currency } = user;\r\n\tconst [invoices, setInvoices] = React.useState();\r\n\r\n\tuseEffect(() => {\r\n\t\tconst fetchInvoices = async () => {\r\n\t\t\tconst invoices = await AccountService.getProInvoices();\r\n\t\t\tsetInvoices(invoices ?? undefined);\r\n\t\t};\r\n\t\tfetchInvoices();\r\n\t}, []);\r\n\r\n\tconst downloadInvoice = (invoiceId: number) => {\r\n\t\twindow.open(routes.pro.resolve.downloadInvoice(invoiceId), \"_blank\");\r\n\t};\r\n\r\n\tif (invoices === undefined) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tif (invoices.length === 0) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tYou have no PRO invoices yet.\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n \r\n\t\t\t\t\t\t\tInvoice\r\n\t\t\t\t\t\t\tDate\r\n\t\t\t\t\t\t\tAmount\r\n\t\t\t\t\t\t\tPaid\r\n\t\t\t\t\t\t\tBalance\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{invoices.map((invoice) => (\r\n\t\t\t\t\t\t\t\r\n \r\n downloadInvoice(invoice.id)}>\r\n \r\n \r\n \r\n\t\t\t\t\t\t\t\t{invoice.invoiceNumber}\r\n\t\t\t\t\t\t\t\t{new Date(invoice.invoiceDate).toLocaleDateString()}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{CurrencyHelper.GetCurrencySymbol(currency)}\r\n\t\t\t\t\t\t\t\t\t{invoice.invoiceAmount.toFixed(2)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{CurrencyHelper.GetCurrencySymbol(currency) + invoice.paymentAmount.toFixed(2)}\r\n\t\t\t\t\t\t\t\t{CurrencyHelper.GetCurrencySymbol(currency) + invoice.balance.toFixed(2)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nfunction NoMembershipCard() {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tIt looks like you don't have a PRO membership right now. You can enjoy extra benefits exclusive to our subscribers by{\" \"}\r\n\t\t\t\t\tsigning up here!\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nfunction ProMembershipCard(props: { user: ApplicationUser; proSubscription: ProSubscription; config: AppConfig }) {\r\n\tconst { user, proSubscription, config } = props;\r\n\tconst { currency } = user;\r\n\r\n\tconst [hasPaypal, setHasPaypal] = React.useState(null);\r\n\r\n\tReact.useEffect(() => {\r\n\t\tconst checkPaypal = async () => {\r\n\t\t\tconst response = await AccountService.hasPayPal();\r\n\t\t\tsetHasPaypal(response);\r\n\t\t};\r\n\t\tcheckPaypal();\r\n\t}, [config.paypalUrl]);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{canChangeProSubscription(user) && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{canChangeProSubscription(user) && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{hasPaypal === null && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{hasPaypal === false && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t{hasPaypal === true && (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{proSubscription.serviceStopDate && proSubscription.status === ProSubscriptionStatus.Cancelled && (\r\n\t\t\t\t\t\tBenefits end {new Date(proSubscription.serviceStopDate).toLocaleDateString()}\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t\t{proSubscription.status === ProSubscriptionStatus.Active && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{ProSubscriptionTerm[proSubscription.term].toString()}\r\n\t\t\t\t\t\t\t\t\t{proSubscription.nextBillPrice && proSubscription.planPrice ? (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{proSubscription.nextBillPrice < proSubscription.planPrice ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{CurrencyHelper.GetCurrencySymbol(currency)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{proSubscription.nextBillPrice.toString(10)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{proSubscription.term === 1 ? \" / mth\" : proSubscription.term === 12 ? \" / yr\" : \" / 2 years\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t|{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{CurrencyHelper.GetCurrencySymbol(currency)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{proSubscription.planPrice.toString(10)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{proSubscription.term === 1 ? \" / mth\" : proSubscription.term === 12 ? \" / yr\" : \" / 2 years\"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\" \"}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t({CurrencyHelper.GetCurrencySymbol(currency)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{proSubscription.planPrice.toString(10)}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{proSubscription.term === 1 ? \" / month\" : proSubscription.term === 12 ? \" / year\" : \"/ 2 years\"})\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t{getPlanName(user) === \"Free Contributor PRO\" ? \" (Free Contributor PRO)\" : \"\"}\r\n\t\t\t\t\t\t\t\t\t{getPlanName(user) === \"Site Administrator\" ? \" (Site Administrator PRO)\" : \"\"}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tsecondary=\"Payment option\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{canUpgradeProSubscription(user) && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\t{proSubscription.nextBillDate && proSubscription.status === ProSubscriptionStatus.Active && (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{canChangeProSubscription(user) && (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n","import { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { faCcAmex, faCcDiscover, faCcMastercard, faCcPaypal, faCcVisa } from \"@fortawesome/free-brands-svg-icons\";\r\nimport * as React from \"react\";\r\nimport { BrowserRouter, Redirect, Route, Switch } from \"react-router-dom\";\r\nimport \"./app.css\";\r\nimport AnalyticsPageTracker from \"./components/AnalyticsPageTracker\";\r\nimport { PrivateRoute } from \"./components/PrivateRoute\";\r\nimport { RedirectRoute } from \"./components/RedirectRoute\";\r\nimport AppConfig, { AppConfigEnvironment } from \"./entities/AppConfig\";\r\nimport ApplicationUser from \"./entities/ApplicationUser\";\r\nimport Layout from \"./layout/layout\";\r\nimport ChangeEmail from \"./pages/account/changeEmail\";\r\nimport ChangePassword from \"./pages/account/changePassword\";\r\nimport ChangePhone from \"./pages/account/changePhone\";\r\nimport AccountDashboard from \"./pages/account/home\";\r\nimport MediaDashboard from \"./pages/account/mediaDashboard\";\r\nimport PaymentMethods from \"./pages/account/paymentMethods\";\r\nimport FreeProAccess from \"./pages/admin/freeProAccess\";\r\nimport Impersonate from \"./pages/admin/impersonate\";\r\nimport Notes from \"./pages/admin/notes\";\r\nimport ForgotPassword from \"./pages/authentication/forgotPassword\";\r\nimport ForgotPasswordSuccess from \"./pages/authentication/forgotPasswordSuccess\";\r\nimport Register from \"./pages/authentication/register\";\r\nimport ResetPassword from \"./pages/authentication/resetPassword\";\r\nimport SignIn from \"./pages/authentication/signIn\";\r\nimport EditSermon from \"./pages/contributions/editSermon\";\r\nimport EditSermonIllustration from \"./pages/contributions/editSermonIllustration\";\r\nimport AddEditSeries from \"./pages/contributions/editSermonSeries\";\r\nimport ContributorDashboard from \"./pages/contributions/home\";\r\nimport SermonIllustrations from \"./pages/contributions/sermonIllustrations\";\r\nimport SermonSeries from \"./pages/contributions/sermonSeries\";\r\nimport Sermons from \"./pages/contributions/sermons\";\r\nimport Activations from \"./pages/media/activations\";\r\nimport Downloads from \"./pages/media/downloads\";\r\nimport ManageMedia from \"./pages/media/media-producer/manageMedia\";\r\nimport ApprovedVideoMedia from \"./pages/media/media-producer/video-media/approvedVideoMedia\";\r\nimport PendingVideoMedia from \"./pages/media/media-producer/video-media/pendingVideoMedia\";\r\nimport Purchases from \"./pages/media/purchases\";\r\nimport DiscussionNotifications from \"./pages/misc/discussionNotifications\";\r\nimport PrivateMessages from \"./pages/misc/privateMessages\";\r\nimport SermonFolders from \"./pages/misc/sermonFolders\";\r\nimport ViewingHistory from \"./pages/misc/viewingHistory\";\r\nimport NewsletterSubscriptions from \"./pages/preferences/newsletterSubscriptions\";\r\nimport Notifications from \"./pages/preferences/notificationsPreferences\";\r\nimport BibleTranslation from \"./pages/preferences/preferredBibleTranslation\";\r\nimport AboutMe from \"./pages/profile/aboutMe\";\r\nimport MyChurch from \"./pages/profile/myChurch\";\r\nimport MyStory from \"./pages/profile/myStory\";\r\nimport ProfileImage from \"./pages/profile/profileImage\";\r\nimport SharedLinks from \"./pages/profile/sharedLinks\";\r\nimport { AppConfigService } from \"./services/AppConfigService\";\r\nimport { AuthenticationService } from \"./services/AuthenticationService\";\r\nimport { routes } from \"./utilities/routes\";\r\nimport { MyProMembershipPage } from \"./pages/pro/MyProMembershipPage\";\r\n\r\nlibrary.add(faCcAmex);\r\nlibrary.add(faCcDiscover);\r\nlibrary.add(faCcMastercard);\r\nlibrary.add(faCcVisa);\r\nlibrary.add(faCcPaypal);\r\n\r\ninterface AppProps {\r\n\tbaseUrl: string;\r\n}\r\n\r\ninterface AppState {\r\n\tloading: boolean;\r\n\tuser: ApplicationUser | null;\r\n\tconfig: AppConfig | null;\r\n}\r\n\r\nclass App extends React.Component {\r\n\tconstructor(props: AppProps) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tloading: true,\r\n\t\t\tuser: null,\r\n\t\t\tconfig: {\r\n\t\t\t\tenvironment: AppConfigEnvironment.Production,\r\n\t\t\t\tgoogleAnalytics: {\r\n\t\t\t\t\tisEnabled: true,\r\n\t\t\t\t\ttrackingId: \"UA-75701108-7\",\r\n\t\t\t\t},\r\n\t\t\t\tpaypalUrl: \"https://sermoncentral.com\",\r\n\t\t\t\tmainSiteUrl: \"https://sermoncentral.com\",\r\n\t\t\t\tpaymentsSiteUrl: \"https://payments.sermoncentral.com\",\r\n\t\t\t\tmakerSiteUrl: \"https://maker.sermoncentral.com\",\r\n\t\t\t\tsparkSiteUrl: \"https://research.sermoncentral.com\",\r\n\t\t\t\taccountSiteUrl: \"https://account.sermoncentral.com\",\r\n\t\t\t\tglooSubscriptionsUrl: \"https://app.gloo.us/settings/subscriptions\",\r\n\t\t\t\tglooUserProfileUrl: \"https://app.gloo.us/settings/settings/profile/info\",\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tAppConfigService.getAppConfig().then((config) => {\r\n\t\t\tif (config) {\r\n\t\t\t\tthis.setState({ config: config });\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tAuthenticationService.getAuthenticatedUser()\r\n\t\t\t.then((user) =>\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tuser: user,\r\n\t\t\t\t\tloading: false,\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.catch((error) =>\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tuser: null,\r\n\t\t\t\t\tloading: false,\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t}\r\n\r\n\thandleUpdateUser(user: ApplicationUser | null) {\r\n\t\tthis.setState({\r\n\t\t\tuser: user,\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (this.state.loading) {\r\n\t\t\treturn \"\";\r\n\t\t} else {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t this.handleUpdateUser(user)}\r\n\t\t\t\t\t\t\tonSignOut={() => this.handleUpdateUser(null)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />} />\r\n\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />}\r\n\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t{this.state.user && this.state.user.roles.filter((r) => r === \"MediaProducer\").length > 0 ? (\r\n\t\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t } />\r\n\r\n\t\t\t\t\t\t\t\t } />\r\n\r\n\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t } />\r\n\t\t\t\t\t\t\t\t this.handleUpdateUser(user)} />}\r\n\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default App;\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport App from './app';\r\n\r\nimport axios from 'axios';\r\naxios.defaults.withCredentials = true;\r\n\r\nfunction renderApp() {\r\n const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href')!;\r\n ReactDOM.render(\r\n ,\r\n document.querySelector('#root')\r\n );\r\n}\r\n\r\nrenderApp();"],"sourceRoot":""}