{"version":3,"sources":["components/DataServices/PhotoService.js","components/DataServices/UserService.js","components/DataServices/SiteDataService.js","components/SiteSpecific/TopAppBar.js","components/Common/Utilities/Spin.js","components/Common/Utilities/ModalDialog.js","components/Common/Profile/ProfileImageUploader.js","components/DataServices/Utility.js","components/Common/Utilities/PublicAttribute.js","components/Common/Utilities/Section.js","components/Common/Utilities/SectionGrid.js","components/Common/Utilities/SectionFieldGroup.js","components/Common/Utilities/SelectList.js","components/Common/Utilities/TextInput.js","components/Common/Utilities/DateSelector.js","components/Common/Profile/ProfileBasic.js","components/Common/Utilities/SectionItem.js","components/Common/Profile/ProfileContacts.js","components/Common/Utilities/SelectionChip.js","components/Common/Profile/ProfileInterests.js","components/Common/Profile/ProfileBucketList.js","components/Common/Profile/ProfileStrengthsAndWeaknesses.js","components/Common/Profile/ProfileResponsibilities.js","components/Common/Profile/ProfileLifeEvents.js","components/Common/Content/Photos/ComponentImageUploader.js","components/Common/UserSites/UserSiteAbout.js","components/DataServices/NotificationService.js","components/DataServices/ReactionService.js","components/Common/Reactions/Reactions.js","components/Common/Utilities/Menu.js","components/DataServices/EmailService.js","components/Common/Utilities/UserAvatar.js","components/Common/Comments/Reply.js","components/Common/Comments/Replies.js","components/Common/Comments/Comment.js","components/DataServices/CommentService.js","components/Common/Comments/Comments.js","components/Common/Tags/Tags.js","components/Common/Content/Photos/PhotoEditor.js","components/Common/Content/Photos/PhotoViewer.js","components/Common/UserSites/UserSitePhotos.js","components/Common/Utilities/VideoPlayer.js","components/Common/UserSites/UserSiteVideos.js","components/DataServices/MusicService.js","components/Common/Content/Music/Song.js","components/Common/UserSites/UserSiteMusic.js","components/Common/Content/Documents/DocumentViewer.js","components/DataServices/DocumentService.js","components/Common/UserSites/UserSiteFiles.js","components/Common/Content/Blog/Blog.js","components/Common/Content/Events/Event.js","components/Common/Content/Market/Product.js","components/Common/Content/Photos/PhotoGallery.js","components/Common/Utilities/EmojiPicker.js","components/Common/Posts/PostContentComposer.js","components/DataServices/PostService.js","components/Common/Posts/Repost.js","components/DataServices/MentionsService.js","components/DataServices/TagService.js","components/Common/Posts/Post.js","components/Common/Posts/PostsContainer.js","components/Common/UserSites/UserSiteHome.js","components/DataServices/VideoService.js","components/Common/UserSites/UserSite.js","components/Common/Utilities/RichTextEditor.js","components/Common/Profile/ProfileSiteOptions.js","components/Common/Profile/Profile.js","components/Common/Utilities/BottomNav.js","components/DataServices/ConstantsService.js","components/DataServices/ListService.js","components/DataServices/NoteService.js","components/DataServices/LinkService.js","components/DataServices/OrganizationService.js","components/SiteSpecific/Welcome.js","components/Common/Utilities/ContextMenu.js","components/Common/Utilities/DropUploader.js","components/Common/Content/Documents/DocumentUploader.js","components/Common/Utilities/FolderLabel.js","components/Common/Business/ClientDocuments.js","components/Common/Families/SiteImageUploader.js","components/Common/Invitations/Invitation.js","components/DataServices/BusinessService.js","components/Common/Business/BusinessEditor.js","components/DataServices/GroupService.js","components/Common/Groups/Group.js","components/DataServices/FamilyService.js","components/Common/Groups/Affiliations.js","components/Common/Groups/Activity.js","components/Common/Messenger/Message.js","components/Common/Messenger/Chat.js","components/Common/Messenger/ChatDrawer.js","components/Common/Notifications/Notifications.js","components/Common/Invitations/Invitations.js","components/Common/Account/Account.js","components/Common/Layout/Layout.js","components/Common/Utilities/Input.js","components/Common/Utilities/ItemCreator.js","components/Common/Layout/Home.js","components/SiteSpecific/Login.js","components/Common/Helpers/useToken.js","components/DataServices/WebPageService.js","components/DataServices/BlogService.js","components/DataServices/EventService.js","components/SiteSpecific/Landing.js","theme/shape.js","theme/sizes.js","theme/palette.js","theme/typography.js","theme/overrides/index.js","theme/overrides/Card.js","theme/overrides/Lists.js","theme/overrides/Input.js","theme/overrides/Button.js","theme/overrides/Tooltip.js","theme/overrides/Backdrop.js","theme/overrides/Typography.js","theme/overrides/IconButton.js","theme/overrides/Autocomplete.js","theme/overrides/AccordionSummary.js","theme/shadows.js","theme/index.js","App.js","components/Common/Helpers/registerServiceWorker.js","index.js"],"names":["getSiteLibrary","id","a","url","fetch","response","status","json","data","getPhoto","getPhotoThumb","thumb","savePhoto","file","parentID","appid","reader","FileReader","onload","e","base64result","target","result","split","b64","readAsDataURL","formData","FormData","append","method","body","then","photoID","photoObj","updatePhoto","photoid","newLibrary","name","req","ParentID","Name","AppID","headers","JSON","stringify","library","setPassword","old","newp","OldPassword","NewPassword","createPasswordResetRequest","email","Email","disableAccount","UserID","deleteAccount","setPublic","attr","Attribute","removePublic","getUserProfile","getUserInfo","getUserAvatar","userid","getUserTheme","setUserTheme","theme","success","getProfileImage","removeStrength","addStrength","strength","removeWeakness","addWeakness","saveName","first","middle","last","saveImportantDate","type","date","saveTrait","val","addAddress","street","city","state","zip","country","primary","editAddress","deleteEmail","deletePhone","deleteAddress","deleteFamily","addEmail","editEmail","addPhone","number","editPhone","addFamily","gender","dob","editFamily","setSiteOptions","showfollowbtn","showaboutbtn","showabout","showcontent","showposts","showfeatured","featuredtitle","featureddesc","featuredid","featuredtype","style","bio","PhotoID","ShowFollowBtn","ShowAboutBtn","ShowAbout","ShowContent","ShowPosts","ShowFeatured","FeaturedTitle","FeaturedDesc","FeaturedContentID","FeaturedContentType","SiteStyle","Bio","getSiteOptions","getSiteContent","getUserSiteProfile","getUserList","followUser","targetid","TargetID","unfollowUser","getUserFollowers","getUsersFollowing","sites","location","meta","description","pageTitle","shortTitle","companyName","buttonColor","buttonColorText","buttonBorder","fontFamily","floatingContactButton","floatingContactInfoButton","floatingBackground","contactButtonLabel","notifyOnContact","notificationEmail","notificationName","compact","sections","display","fixed","logo","logoHeight","alt","shortLogo","logoCentered","background","shadow","actionButton","action","color","label","tooltip","useAsHeader","image","verticalPosition","fullHeight","contactButton","contactInfo","slider","size","padding","bottom","topPad","darkText","darkDots","items","object","justify","list","secondaryText","primaryText","lists","title","bottomText","titleColor","subtitleColor","contactButtonMobileOnly","contactButtonBackground","contactButtonColor","imageHeight","maxRowSize","secondary","subtitle","href","disabled","titlePadRight","partner","height","border","address","phone","officeHours","clientPortal","include","loginLabel","loginLabelDark","loginLogo","accountRequestMessage","contentTypes","posts","postTypes","search","accentColor","mainLogo","mainTitle","allowPost","allowFilters","contentTitle","contentSubtitle","link","sectionIDX","contentIDX","genres","tags","contentAlignment","flatlayout","getSiteData","site","find","x","SearchIconWrapper","styled","spacing","position","pointerEvents","alignItems","justifyContent","StyledInputBase","InputBase","paddingLeft","transition","transitions","create","width","breakpoints","up","PrimarySearchAppBar","user","setToken","dark","setDark","searchCallback","handleChatOpen","handleProfileOpen","handleNotificationsOpen","handleAffiliationsOpen","handleActivityOpen","notificationCount","handleAccountOpen","searchTerm","invitationCount","handleInvitationsOpen","setTopic","isAdmin","navIndex","appOptions","handleShowAdmin","handleShowNewUploads","menuId","React","anchorEl","setAnchorEl","mobileMoreAnchorEl","setMobileMoreAnchorEl","isMenuOpen","Boolean","isMobileMenuOpen","handleMobileMenuClose","handleMenuClose","logoutUser","handleLogout","localStorage","clear","handleProfile","handleAccount","handleNotification","handleSetDarkMode","handleSearch","term","value","onSearchKeyPress","event","key","Search","borderRadius","shape","borderRadiusSm","backgroundColor","palette","common","dimwhite","black","opactity","marginRight","marginLeft","PaperProps","elevation","MenuListProps","anchorOrigin","vertical","horizontal","keepMounted","transformOrigin","open","onClose","MenuItem","FormControlLabel","control","Switch","checked","onChange","inputProps","onClick","ListItemIcon","Badge","badgeContent","Typography","variant","fontSize","Divider","AppBar","sx","zIndex","drawer","opacity","maintoolbar","borderBottom","Button","p","xs","sm","cursor","src","maxWidth","minWidth","mr","Box","ml","fontWeight","pl","flexGrow","placeholder","onKeyPress","defaultValue","md","IconButton","edge","aria-label","aria-controls","aria-haspopup","currentTarget","invisible","hasNewMessages","overlap","Avatar","className","firstName","avatar","Tooltip","Spin","content","props","sub","m","minHeight","message","Stack","margin","alignSelf","textAlign","mx","mb","CircularProgress","main","tiny","Backdrop","marginBottom","this","Component","ModalDialog","handleToggleFullScreen","fs","fullScreen","setState","toggled","setFullScreen","forceUpdate","closeButton","handleClose","white","fullScreenButton","editButton","handleEdit","editModeActive","Dialog","show","fullWidth","disableEnforceFocus","userPopper","backgroundModal","light","noBorder","pb","lg","noUpperClose","DialogTitle","py","px","boxShadow","marginTop","allowEdit","toggleFullScreen","DialogContent","prettyScroll","maxHeight","overflow","hideScroll","subTitle","DialogContentText","my","dimblack","subTitleContent","children","disableButtons","DialogActions","containedButton","handleDelete","deleteLabel","closeLabel","handleSave","saveLabel","prevProps","prevState","ProfileImageUploader","setEditorRef","editor","handleSavePhoto","document","getElementById","getImageScaledToCanvas","toDataURL","canvas","blob","selectedFile","length","catch","error","console","log","updateStateForNewPhoto","itemCount","currentUpload","toggleProcessing","processing","handleDragOverDropZone","classList","add","handleDragLeaveDropZone","remove","handleRotateImage","rot","parseInt","imgRotation","handleScaleUpImage","scale","parseFloat","imgScale","handleScaleDownImage","handleDrop","files","i","extension","ele","draggable","solid","ref","window","innerWidth","rotate","onDrop","acceptedFiles","onDragOver","onDragLeave","getRootProps","getInputProps","accept","top","left","transform","mt","blobToBase64","Promise","resolve","_","onloadend","formatPhoneNumberInline","phoneNumber","replace","phoneNumberLength","slice","handleNumbersOnly","isValidURL","str","test","validateEmail","isValid","RegExp","capitalize","lower","toLowerCase","charAt","toUpperCase","getEnums","removeFromArray","arr","index","indexOf","splice","PublicAttribute","handleSetPublic","profile","publicAttributes","push","updateData","appIdentifier","enterDelay","PureComponent","Section","buttonOffset","sliderOffset","Paper","noPad","paddingTop","transparent","post","flat","padBottom","direction","handleAdd","publicAttribute","itemType","enableSave","SectionGrid","ckey","Math","random","pt","Grid","container","map","item","xl","SectionFieldGroup","Card","topMargin","CardContent","paddingBottom","SelectList","FormControl","center","InputLabel","Select","labelId","required","MenuProps","dense","backgroundMenu","borderMenu","listItems","allowNull","TextInput","TextField","autoComplete","inputKey","InputProps","InputLabelProps","onBlur","autoFocus","DateSelector","typeEntry","DatePicker","disableOpenPicker","minDate","minValue","maxDate","maxValue","newValue","Date","toLocaleDateString","renderInput","params","showPicker","undefined","calendarView","StaticDatePicker","displayStaticWrapperAs","onAccept","narrow","LocalizationProvider","dateAdapter","AdapterMoment","ProfileBasic","handleUpdateProfile","showPhotoUploader","hasNameChanged","middleName","lastName","nameChanged","handleMyDOBChange","updateMyDob","handleWeddingChange","updateMyWeddingAnniversary","handleJobChange","updateMyJobAnniversary","handleTypeChange","typeValue","handleGenderChange","genderValue","handleDOBChange","dobValue","handleSexChange","handlePersonalChange","handleRelationshipChange","handlePoliticsChange","handleReligionChange","handleSocialChange","headline","demographics","personalHeadline","importantDates","wedding","weddingAnniversary","job","jobAnniversary","showConfirmDelete","imageB64","component","avatarB64","objectFit","cKey","cid","deleteType","SectionItem","itemID","selected","selectedItem","primaryChipLabel","Chip","icon","chipIcon","altChipColor","chipClickEdit","primaryContent","isPrimary","ProfileContacts","handleDeleteEmail","idx","selectedID","selectedIDX","handleEditEmail","editMode","emailValue","emailAddresses","emailType","showEmailEditor","handleAddEmail","handleDeletePhone","handleEditPhone","phoneValue","phoneNumbers","phoneType","showPhoneEditor","handleAddPhone","handleDeleteAddress","handleAddAddress","streetValue","cityValue","stateValue","zipValue","showAddressEditor","handleEditAddress","st","stateList","addresses","handleSaveAddress","trim","county","addr","updateAddress","familyMembers","handleSaveEmail","eml","updateEmail","handleSavePhone","updatePhone","handlePhoneChange","formattedVal","handleStateChange","handleNewZipChange","handleDeleteFamily","handleAddFamily","firstNameValue","middleNameValue","lastNameValue","showFamilyEditor","handleEditFamily","handleSaveFamily","fam","fam2","updateFamily","phoneFormat","match","Emails","emailTypeList","emailItem","Phones","phoneTypeList","phoneItem","Addresses","addressTypeList","addressItem","Family","family","familyMemberID","familyTypeList","familyItem","deleteConfirmation","emailEditor","phoneEditor","addressEditor","maxLength","familyEditor","genderList","handleChange","SelectionChip","clickable","ProfileInterests","clickFavorite","userfav","selectedFavorite","selectedFavoriteType","showFavoriteEditor","removeFavorite","handleSaveFavorite","favVal","text","newFav","favoriteType","favoriteValue","addFavorite","Checkbox","defaultChecked","Interests","flexWrap","listStyle","interestsList","interests","includes","toggleSelected","interest","favoriteEditor","Favorites","favoritesTypeList","userFav","favorites","favorite","Music","musicTasteList","musicTastes","toggleSelectedTaste","music","Movies","movieTasteList","movieTastes","movie","Food","foodTasteList","foodTastes","food","Drink","drinkTasteList","drinkTastes","drink","Reading","readingTasteList","readingTastes","reading","ProfileBucketList","handleShowConfirmDeleteBucketList","showConfirmDeleteBucketList","handleAddBucketList","titleValue","reasonValue","categoryValue","importanceValue","dueValue","showBucketListEditor","handleEditBucketList","bucketList","reasonNotDone","category","importanceRank","dueDate","handleSaveBucketList","reason","importance","due","itm","itm2","updateBucketList","handleDeleteBucketList","handleCategoryChange","handleImportanceChange","handleDueChange","handleShowConfirmDeleteGoal","showConfirmDeleteGoal","handleAddGoal","descValue","statusValue","showGoalEditor","handleEditGoal","personalGoals","goalDesc","goalType","goalStatus","targetDate","handleSaveGoal","desc","updatePersonalGoal","handleDeleteGoal","handleStatusChange","handleShowConfirmDeleteHabit","showConfirmDeleteHabit","handleAddHabit","impactsValue","showHabitEditor","handleEditHabit","badHabits","habitDescription","habitType","impacts","handleSaveHabit","updateHabit","handleDeleteHabit","BucketList","bucketListCategoryList","bucketListItem","deleteConfirmationBucketList","bucketListEditor","importanceList","Goal","goalTypeList","goalStatusList","goalItem","deleteConfirmationGoal","goalEditor","Habit","habitTypeList","habitItem","deleteConfirmationHabit","handleDeleteGHabit","habitEditor","ProfileStrengthsAndWeaknesses","personalStrengths","toggleSelectedStrength","strengths","strengthList","weakness","personalWeaknesses","toggleSelectedWeakness","weaknesses","weaknessList","ProfileResponsibilities","handleShowConfirmDeleteOccupation","showConfirmDeleteOccupation","handleAddOccupation","employerValue","schoolValue","fieldValue","showOccupationEditor","handleEditOccupation","occupations","occupationType","employer","school","fieldOfStudy","handleSaveOccupation","field","primaryOccupation","updateOccupation","handleDeleteOccupation","handleShowConfirmDeleteRole","showConfirmDeleteRole","handleAddRole","impactedValue","showRoleEditor","handleEditRole","lifeRoles","roleType","impactedPeople","handleSaveRole","impacted","updateRole","handleDeleteRole","Occupation","occupationTypeList","occupationItem","deleteConfirmationOccupation","occupationEditor","occupationStatusList","Role","lifeRoleTypeList","roleItem","deleteConfirmationRole","roleEditor","ProfileLifeEvents","handleShowConfirmDeleteEvent","showConfirmDeleteEvent","handleAddEvent","currentImpactValue","startValue","endValue","showEventEditor","handleEditEvent","lifeEvents","eventType","currentImpact","startDate","endDate","handleSaveEvent","start","end","updateEvent","handleDeleteEvent","handleShowConfirmDeleteEducation","showConfirmDeleteEducation","handleAddEducation","degreeTypeValue","degreeValue","showEducationEditor","handleEditEducation","educationHistory","schoolName","schoolType","degreeType","degreeEarned","handleSaveEducation","degree","updateEducation","handleDeleteEducation","handleShowConfirmDeleteJob","showConfirmDeleteJob","handleAddJob","achievementsValue","salaryValue","leaveReasonValue","showJobEditor","handleEditJob","employmentHistory","jobDescription","notableAchievements","endingSalary","leaveReason","handleSaveJob","achievements","salary","updateEmployment","handleDeleteJob","handleDegreeTypeChange","handleStartChange","handleEndChange","handleCurrentImpactChange","handleDegreeChange","formatMoney","oldval","toFixed","Event","lifeEventTypeList","eventItem","deleteConfirmationEvent","eventEditor","Education","schoolTypeList","educationItem","deleteConfirmationEducation","educationEditor","degreeTypeList","Job","jobItem","deleteConfirmationJob","jobEditor","startAdornment","InputAdornment","inputMode","pattern","pasteFromClickBoard","navigator","clipboard","readText","photo","fullPhoto","alert","ComponentImageUploader","getImage","File","numAllowed","max","handleExistingPhoto","cropWidth","cropHeight","UserSiteAbout","about","loading","disaply","siteProfile","relationshipStatus","sexualPreference","politicalSlant","religiousViews","socialType","createNotification","refid","refuserid","Type","RefID","RefUserID","Message","getNotifications","all","updateNotification","NotificationID","NewStatus","addReaction","reaction","TargetType","Reaction","getMyReactions","Reactions","handleLikeMessage","myReaction","likeCount","loveCount","displayName","targetTypeDesc","refUser","userID","targetType","targetID","totalReactions","suffix","inline","noBack","small","br","noColor","reactionContainer","Menu","sendEmail","toEmail","toName","subject","textContent","htmlContent","sender","RecipientEmail","RecipientName","Subject","TextContent","HTMLContent","SenderEmail","res","StyledBadge","paper","animation","UserAvatar","updateWindowDimensions","innerHeight","siteOptions","coverPhotoID","coverPhoto","getAvatar","avatarImage","handleShowUserMenu","preventDefault","stopPropagation","anchorUserEl","handleCloseUserMenu","handleUserSite","showUserSite","handleFollow","activeUser","handleUnfollow","handleMessageUser","handleCloseSite","userSite","userSiteFullScreen","isFullScreen","userMenu","following","handleHide","menuItem1","userIndex","menuItem1Label","userAvatar","loaded","online","placement","large","imgProps","Skeleton","hideName","whenPosted","postDate","addEventListener","removeEventListener","Reply","handleConfirmDelete","me","msgMenu","reactions","msg","ListItem","fromMe","reply","commentText","commentDate","toLocaleTimeString","showReplies","Replies","getReplies","loadIndex","loadCount","comments","comment","loadAvatars","cuser","euser","avatarPhotos","eavatar","handleKeyPress","handlePostComment","CommentText","commentCount","itemToInsert","updateReplyCount","handleEditComment","CommentID","handleDeleteComment","composer","commentButton","commentLinkLabel","showComments","replies","Accordion","AccordionSummary","expandIcon","noIcon","AccordionDetails","Comment","selectedMessageID","selectedMessageIDX","handleAddReply","cbAddReply","count","getMyComments","getComments","Comments","getItems","updateCommentCount","handleDeleteReply","replyidx","newList","handleEditReply","editidx","handleGetReplies","loadindex","loadcount","cbEdit","cbEditReply","cbDeleteReply","Tags","getTextTags","parseTags","regex","matches","exec","handleRemoveTag","tag","originalPost","postValue","tagStart","finalString","bubbles","cancelable","dispatchEvent","handleInput","handleBlur","tagInput","onDelete","tagContainer","createImage","reject","Image","setAttribute","getRadianAngle","PI","rotateSize","rotation","rotRad","abs","cos","sin","getCroppedImg","imageSrc","pixelCrop","flip","filters","base64","createElement","ctx","getContext","bBoxWidth","bBoxHeight","fillStyle","fillRect","filter","translate","drawImage","getImageData","y","putImageData","toBlob","PhotoEditor","resetFilters","blur","brightness","contrast","grayscale","hueRotate","invert","saturate","sepia","handleGoToFilters","filteredB64","croppedB64","page","handlePickColor","showColorPicker","onCropComplete","savedCrop","croppedArea","croppedAreaPixels","croppedImage","fileUrl","URL","createObjectURL","onFilterComplete","computeFilters","croppedImageBlob","b64withPrefix","base64Image","onSave","finalBlob","lastModified","now","handleSaveEdit","zoomSlider","gutterBottom","Slider","zoom","step","min","valueLabelDisplay","rotateSlider","aspectSwitch","labelPlacement","aspect","restrictPositionSwitch","restrictPosition","cropperComponent","crop","onCropChange","onZoomChange","zoomWithScroll","showGrid","containerStyle","croppedPreview","blurSlider","brightnessSlider","contrastSlider","grayscaleSlider","hueRotateSlider","invertSlider","saturateSlider","opacitySlider","sepiaSlider","filterPreview","colorPicker","showColorFromImagePicker","noSidePad","colorFromImagePicker","handleSelectColorFromImageClick","img","pixelData","offsetX","offsetY","rgbaColor","handleEyedropperChange","hex","customComponent","filterPage","borderTop","filterControls","borderLeft","cropPage","PhotoViewer","showEditor","handleUpdateItem","card","showTagSection","showCommentSection","CardMedia","photoName","tagsButton","dimmerwhite","ownerID","navButtons","allowPrevious","handlePrevious","allowNext","handleNext","align","getCols","w","cols","UserSitePhotos","handleClickPhoto","selectedPhoto","openPhotoViewer","photoLibraries","siteContent","photoAlbums","photos","photoViewer","album","ImageList","gap","rowHeight","overflowY","ImageListItem","VideoPlayer","video","cover","b64Data","contentType","sliceSize","byteCharacters","atob","byteArrays","offset","byteNumbers","Array","charCodeAt","byteArray","Uint8Array","Blob","b64toBlob","streamBase","controls","playIcon","UserSiteVideos","videoLibraries","videos","raised","getSong","Song","song","flexDirection","artist","preload","UserSiteMusic","songs","songCard","hasAudio","DocumentViewer","download","linkSource","downloadLink","ext","fileName","click","changePage","pageNumber","nextPage","previousPage","zoomIn","pageScale","zoomOut","rotatePage","onDocumentLoadSuccess","numPages","disableGutters","contents","overflowX","onLoadSuccess","noData","options","workerSrc","apply","getFolder","getDocument","downloadDocument","fileURL","alink","newOwnerDocument","ownerid","documentID","documentName","createDate","toISOString","doc","setDocumentStatus","renameDocument","DocID","newFolder","folder","documents","newOwnerFolder","deleteFolder","FolderID","renameFolder","UserSiteFiles","handleClickDocument","eFiles","fileContent","selectedDocumentName","selectedDocumentContent","showDocument","folders","hasDocs","docPreview","CardActionArea","faFilePdf","substr","Blog","handleSubscribe","header","blog","backgroundImage","coverImage","backgroundSize","backgroundPositionY","author","authorName","pubDate","social","authorFB","authorLI","authorTW","aboutAuthor","authorImage","authorDesc","bodyrows","bodyRows","numCols","rowContent","dangerouslySetInnerHTML","__html","footer","blogChannel","selectedPhotoIDX","eventStart","getTime","getTimezoneOffset","eventEnd","paddingRight","green","hostedBy","locationDesc","toDateString","hour","minute","borderColor","handleRegister","hideInteractions","Product","primaryPhoto","preview","price","longDesc","defaultExpanded","rating","Rating","sellerRating","setRatingValue","PhotoGallery","selectedPhotoID","autoPlay","indicatorIconButtonProps","activeIndicatorIconButtonProps","imageUrl","updatePhotoCommentCount","PostContentComposer","handleSubmitPost","linkContent","postLink","postType","mentions","savePost","newPostText","newPostPhoto","newPostVideo","showEmojiPicker","showPhotoDropZone","handlePostCompose","setTimeout","eles","querySelectorAll","handleSelectEmoji","emoji","addMention","startPos","endPos","formatMention","handleRemoveMention","postLinks","linkPreview","primaryTextColor","secondaryTextColor","descriptionLength","allowSpaceInQuery","mentionValue","onInput","rows","trigger","userList","onAdd","displayTransform","saving","cancelPost","getPostsByUser","postuserid","PostUserID","Index","Count","getPost","getPostContent","ID","repost","postid","textcontent","OwnerType","OwnerID","PostID","unsavePost","Repost","loadPost","contentLoaded","j","updatePostContent","postIdx","postHeaderContent","postContent","photoContent","videoContent","blogContent","docContent","eventContent","componentDecorator","decoratedHref","decoratedText","dimmerblack","openInNewTab","showLoader","fallback","photoCount","rumbleVideo","rumbleURL","frameBorder","allowFullScreen","channel","hideSubscribe","showDelete","mode","showConfirmDeletePost","showBlog","component3","setSelectedPost","getMentionsByUser","targettype","newTextTag","TagComment","Post","marketItem","updatePosts","handleShowPostActionMenu","handleClosePostActionMenu","handleEditPost","handleOpen","handleShare","showPostComposer","handleHidePost","handleDeletePost","handleMenuClick","handleComments","docid","selectedDocument","selectedDocumentIDX","handleSaveRepost","npost","updateLastPost","handleSharePost","t","isSaved","postHeader","saved","postMenu","readOnly","isRepost","shareFlag","songContent","marketContent","words","startsWith","join","paragraph","note","docViewer","blogViewer","showEvent","eventViewer","refID","showMarketItem","marketViewer","dimwblack","menuOpen","updateRepostContent","postInfo","showInfo","pr","sources","source","textCategory","replaceAll","postDeleteConfirmation","PostsContainer","handleScroll","scrollHeight","scrollTop","clientHeight","getMorePosts","loadingSpinner","backgroundMain","searchingSpinner","searchNoResultsMessage","onScroll","grid","searching","hasResults","addDivider","toggleMenu","UserSiteHome","home","fontStyle","siteOwner","postsloaded","videoStreamBase","musicStreamBase","getVideoLibrary","Title","TabPanel","other","role","hidden","aria-labelledby","UserSite","getProfilePic","profilePhoto","loadingHome","loadingContent","tabs","blogs","artists","albums","playlists","events","documentFolders","loadContentLibs","loadVideos","loadMusic","loadDocuments","loadPhotos","loadingPhotos","photoAlbumID","loadingVideos","lib","loadingFiles","getSongs","loadingSongs","loadingProfile","userSiteProfile","getCoverImage","getPosts","refreshing","newestPostID","loadingPosts","loadedPosts","loadingMore","getMorePostsByUser","contentIdx","loadBlogSpecificContent","loadEventSpecificContent","loadMarketSpecificContent","selectedPost","postContentIdx","headerImage","hthumb","cthumb","athumb","row","rcontent","contentThumb","setTabValue","tabValue","folderLabel","Tabs","scrollButtons","allowScrollButtonsMobile","indicatorColor","Tab","renderTab","modules","toolbar","formats","RichTextEditor","updateContent","currentContent","currentPreview","input","focus","el","initialContent","delta","getText","contentTypeOptions","ProfileSiteOptions","handleUpdateCover","updateSiteOptions","handleSetSiteOptions","handleUpdateFeaturedDesc","featuredDesc","newContentType","featuredContentType","siteid","showAboutBtn","showFollowBtn","showAbout","showContent","showPosts","showFeatured","featuredTitle","contentRefID","handleSaveBio","coverPic","headerOptions","showPreview","contentOptions","featuredOptions","featuredContentID","profileImageUploader","a11yProps","Profile","userprofile","handleTabChange","setUserInfo","newItm","ranking","len","id2","updatePublicAttributes","ignore","TabContainer","profileBasic","profileContact","profileResponsibilities","profileStrengths","profileInterests","profileLifeEvents","profileBucketList","userSiteOptions","handleUpdateSiteOptions","bind","uprofile","BottomNav","bottomNav","right","BottomNavigation","showLabels","setIndex","BottomNavigationAction","getVerbiage","app","newNotebook","nb","notes","createFolder","links","getInvitations","confirmInvitation","InvitationID","declineInvitation","removeInvitation","Welcome","invitations","verbiage","du","dataUsage","freeSpeech","welcome","handleAcceptPrivacyPolicy","userInfo","privacyPolicy","policyAccepted","Privacy","handleComplete","wizardPage","Hide","newVideoLibrary","hideWelcome","hide","handleAcceptInvite","handleDeclineInvite","profilePicture","preferences","invitation","fromUser","groupType","groupName","dateSent","welcomeMessage","verticalAlign","backButton","startIcon","nextButton","endIcon","setupWizard","noFooter","addFiles","addPhotos","ContextMenu","menuItems","callBack","anchorReference","anchorPosition","contextMenu","mouseY","mouseX","DropUploader","selectedVideo","multi","fileType","setBadFiles","dropZoneInstructions","photoB64","uploadedPhotoPreview","handleShowFilePicker","noDragEventsBubbling","backgroundInput","badFileName","DocumentUploader","handleSaveDocument","summaryText","uploadingMessage","uploader","updateStateForNewDocument","alerts","badFiles","FolderLabel","isUserFolder","isClosed","isList","faList","faFolder","faFolderOpen","sharedFolder","faShare","noWrap","ClientDocuments","handleClickNewDocument","showAddDocuments","handleNewDocument","handleShowConfirmDeleteDocument","showConfirmDeleteDocument","contextMenuDocument","handleContextMenuDocument","clientX","clientY","selectedDocumentID","handleDeleteDocument","archivedDoc","archiveFolderIDX","findIndex","handleShowRenameDocument","showRenameDocument","handleRenameDocument","handleShowNewFolder","showNewFolder","newFolderName","contextMenuFolder","handleContextMenuFolder","selectedFolder","selectedFolderID","selectedFolderIDX","handleNewFolder","clientID","updateFolders","handleShowConfirmDeleteFolder","showConfirmDeleteFolder","handleDeleteFolder","handleShowRenameFolder","showRenameFolder","handleRenameFolder","handleShowComposer","closed","Documents","orientation","borderRight","onContextMenu","clientName","columns","item2","index2","docCard","setIcon","pop","faFileWord","faFileExcel","faImage","faFile","square","docUploader","noBodyPad","documentDeleteConfirmation","documentContextMenu","contextMenuDocumentItems","documentEditor","folderCreator","folderEditor","folderMode","entities","defaultEntity","Document","closeAlert","folderDeleter","folderContextMenu","contextMenuFolderItems","badFileAlert","loadingDocument","StrictMode","SiteImageUploader","Invitation","deleteNewEmailRecipientHandler","newEmailRecipients","deleteNewRecipientHandler","newMessageRecipients","handleSelectMessageRecipient","searchResults","addExistingUser","handleSelectEmailRecipient","concat","keyCode","checkIfUserExists","emailError","validateMember","validating","userinfo","handleSaveInvitation","inviteType","groupid","groupID","inviteMessage","users","GroupID","GroupType","GroupName","NewMemberUserID","CustomMessage","responseUID","usr","req2","FamilyID","IsAdmin","IsPrimary","businessID","req3","ClientID","BusinessID","invite","parentName","sendNotification","req5","NewMemberEmail","responseEmail","req4","req7","updateInviteList","handleCancel","customMessage","List","ListItemButton","ListItemAvatar","ListItemText","inviteeList","invitee","emailInviteeList","emailInvitee","cancelButton","sendButton","getBusinesses","isAdminUser","businessid","getBusinessesByAdminUser","getBusinessTypes","getClientUserData","getStateList","newBusiness","website","Desc","Street","City","State","Zip","Phone","Website","newBiz","editBusiness","getBusiness","getClients","getClientDocs","getClientUsers","getAllClientDocuments","getClientUserInvites","newClient","altid","AltID","newData","editClient","Status","deleteClient","getUserAffiliations","getAdminUsers","getAdminUserInvites","deleteAdminUser","newClientUser","password","FirstName","LastName","Password","BusinessEditor","getData","business","clients","businessTypeID","dropDownLists","states","appID","editorLoaded","clts","clientDocs","adminUsers","handleTabChangeClient","tabValueClient","handleShowInvitation","showInvitation","handleSaveEditProperties","handleEditMember","handleShowConfirmDeleteMember","selectedMemberID","selectedMemberIDX","showConfirmDeleteMember","handleEditInvitedMember","handleShowConfirmDeleteInvitedMember","selectedInvitedID","selectedInvitedIDX","showConfirmDeleteInvited","handleUpdateProfileImage","handleUpdateCoverImage","handleNameBlur","businessName","handleEditBusiness","handleDescBlur","handleWebsiteBlur","InputURLError","mainPhone","handlePhoneBlur","handleStreetBlur","streetAddress","handleCityBlur","handleZipBlur","biz","handleShowEditClient","selectedClientID","showNewClient","nameValue","altIdValue","clientAltID","handleShowNewClient","handleSaveNewClient","ele2","newClt","handleSaveEditClient","handleDeleteClient","showConfirmDeleteClient","client","ar","handleSelection","selection","activeSection","showBusinessMenu","handleEditClientUser","handleShowNewClientContact","showClientUserInvitation","handleShowConfirmDeleteClientUser","updateClientUserInviteList","selectedClient","inv","handleClientUsers","selectedClientIDX","selectedClientItem","usrs","handleClientFiles","handleClientNotes","handleClientChat","handleSelectClient","handleBackToClientList","handleEditInvitedClientUser","handleSelectClientDoc","loadingMessage","handleShowConfirmDeleteClient","handleShowClientMenu","handleCloseClientMenu","handleShowNewAdminUser","showAdminUserInvitation","handleShowConfirmDeleteAdminUser","selectedAdminUserID","selectedAdminUserIDX","showConfirmDeleteAdminUser","handleDeleteAdminUser","handleDeleteInvitedAdminUser","invitedAdminUsers","selectedInvitedAdminUserIDX","showConfirmDeleteInvitedAdminUser","selectedInvitedAdminUserID","handleShowConfirmDeleteInvitedAdminUser","updateAdminUserInviteList","clientManager","clientList","clientDocList","mainSettings","secondarySettings","businessTypes","Alert","severity","clientRow","altID","headerName","flex","renderCell","columnVisibilityModel","density","pageSize","onRowClick","components","Toolbar","CustomToolbarClientList","clientUsers","docs","clientUser","invitedClientUser","handleShowConfirmDeleteInvitedClientUser","clientUserInvitation","adminUser","invitedAdminUser","adminUserInvitation","clientDocRow","folderName","rowsPerPageOptions","onCon","CustomToolbarClientDocList","profilePic","showProfileImageUploader","showCoverImageUploader","businessy","saveNewPhoto","coverImageUploader","clientAdder","clientDeleter","adminUserDeleter","invitedAdminUserDeleter","backgroundSecondaryAlt","backgroundSecondary","showEditProps","tabPanelState","getGroups","getGroupMembers","getGroupInvitedMembers","newGroup","editGroup","deleteGroup","removeMember","GroupMemberID","Group","group","members","updateGroupMembers","updateGroupInvitedMembers","handleAddNewMember","handleEditGroup","updateGroupInviteList","invitedMembers","handleShowDeleteMember","groupMembers","selectedMember","selectedMemberType","showDeleteInvitation","handleDeleteMember","invited","invitedText","creator","groupInfo","member","invitedMember","memberDeleter","getFamilies","newFamily","Affiliations","families","groups","getMyBusinesses","businesses","getMyAdminBusinesses","getAffiliations","affiliations","getLists","typeList","handleTabChangeFamily","tabValueFamily","selectedFamily","handleShowNewFamily","showNewFamily","newFamilyName","contextMenuFamily","handleShowEditFamily","showEditFamily","handleShowConfirmDeleteFamily","showConfirmDeleteFamily","handleContextMenuFamily","selectedFamilyID","listName","handleNewFamily","meUser","newitem","familyName","admin","showEdit","handleClickFamily","handleTabChangeGroup","tabValueGroup","selectedGroup","handleShowNewGroup","showNewGroup","newGroupName","contextMenuGroup","handleShowEditGroup","showEditGroup","handleShowConfirmDeleteGroup","showConfirmDeleteGroup","handleContextMenuGroup","selectedGroupID","handleNewGroup","groupTypeID","handleDeleteGroup","handleClickGroup","selectedGroupIDX","showGroup","handleClickBusiness","selectedBusinessID","selectedBusinessIDX","selectedBusinessName","showBusinessEditor","handleDeleteBusiness","handleSaveNewBusiness","showNewBusiness","resetFormFields","websiteValue","toUTCString","followingLoaded","tabContainer","sectionTitle","onClickAdd","noAction","businessCard","businessEditor","businessAdder","groupCreator","groupCard","groupManager","groupDeleteConfirmation","groupContextMenu","contextMenuGroupItems","groupEditor","familyCard","familyDeleteConfirmation","familyContextMenu","contextMenuFamilyItems","familyCreator","otherCard","targetName","showConfirmDeleteFamilyMember","Activity","getFollowers","followers","getFollowing","getMentions","getReactions","mentioningUser","r","reactionTypeID","reactionDate","composingContents","messageContents","composing","Chat","initialize","getThread","scrollToBottom","refresh","cleanseThread","messages","handleDeleteMessage","threadID","localAvatar","lastLoadedMessageID","lastUpdate","getNewMessages","setAvatars","avatars","messagesEnd","scrollIntoView","behavior","handlePostMessage","startMessage","messageID","newMessageID","ThreadID","Content","handleStartMessage","unshift","handleEditMessage","messageToEdit","showEditMessage","handleSaveEditMessage","MessageID","float","messageEditor","refreshSeconds","interval","setInterval","clearInterval","ChatDrawer","getThreads","threads","handleDeleteThread","selectedThreadID","selectedThreadIDX","showConfirmDeleteThread","handleConfirmDeleteThread","handleSelectThread","names","selectedThread","handleUnSelectThread","handleKeyPress2","handleStartThread","newThread","lastMessageDate","Users","toggleOpen","itemid","thread","nameArray","secondaryAction","newMessages","AvatarGroup","Fragment","snippet","chatWindow","threadDeleteConfirmation","recipientSelector","Drawer","transitionDuration","anchor","ModalProps","Notifications","handleClick","showPost","handleDismiss","topic","notification","button","referencedID","referencedUser","created","secondaryTypographyProps","primaryTypographyProps","handleAccept","handleDecline","notifications","Invitations","Account","handleSetPassword","showPasswordReset","handleSavePassword","oldP","newP","showBlankOldError","showBlankNewError","showSavePasswordError","handleShowDisableAccount","showConfirmDisableAccount","handleShowDeleteAccount","showConfirmDeleteAccount","handleDisableAccount","handleDeleteAccount","handleOldChange","handleNewChange","passwordReset","deleteConfirm","disableConfirm","Layout","getNewNotifications","getNewInvitations","handleAcceptInvitation","handleDeclineInvitation","handleDismissInvitation","setSearchTerm","handleNavIndex","handleUpdatePrivacy","privacy","showChat","showNotifications","showProfileManager","handleToggleChat","lastNavIndex","handleCloseProfileManager","handleCloseNotifications","handleSetTopic","chat","showWelcome","profileManager","showAffiliations","activities","showActivity","showInvitations","account","showAccount","bottonNav","authenticated","newRegistration","setNewRegistration","setAuthenticated","showAdmin","showNewUploads","showMenu","showSearchResults","fetchNewPostsInterval","autoFetchNew","accessToken","Input","validateFormat","format","validateFieldError","setValid","validateOnBlur","renderDateSelector","static","requiredFieldError","renderSelectList","renderTextInput","helpText","ItemCreator","valid","validationFieldError","fields","fieldValues","inputID","edit","usePopper","Home","setIsAdmin","getClientList","getClientData","getDropdownOptions","dropDownOptions","clientData","selectedClientName","setCurrentFolders","c","handleClientChange","selectClient","handleManageClientUsers","handleEditClient","clientSelect","Autocomplete","loadingText","disablePortal","ele3","adminTools","showClientUsers","showNewClientUser","handleNewClientUser","values","clientUserCreator","newClientUserFields","contentUser","selectedContentType","selectedContentProps","fieldName","loginUser","credentials","registerUser","Login","useState","username","setUserName","loggingIn","setLoggingIn","firstname","setFirstName","lastname","setLastName","showRequiredAlert","setShowRequiredAlert","showDupAlert","setDupAlert","showInvalidAlert","setInvalidAlert","newUser","setNewUser","showForgotPwd","setShowForgotPwd","showForgotPwdEmailSent","setShowForgotPwdEmailSent","showInvalidEmailAlert","setShowInvalidEmailAlert","loginResult","token","handleRegisterSubmit","handleLoginUserNameChange","handleLoginUserNameBlur","handleLoginPasswordChange","handleNewUserNameBlur","handleNewUserNameChange","handleFirstNameChange","handleLastNameChange","handleSubmitForgotPwd","reqID","h","noValidate","onSubmit","bgcolor","form","fontHeight","bold","CheckForTokens","getPage","getBlog","getEventInfo","Landing","siteID","loadError","getWebPage","webPageID","webPage","loadPageContent","section","contentTypeID","loadedData","edata","eloadedData","ewebPage","login","siteNotFound","spacer","staticSpacer","scrolledDown","showContactForm","showLogin","showDocumentViewer","borderRadiusMd","sizes","heights","contentContainer","contentItemsContainer","widths","contentTabLeftContainer","contentContainerWithMenu","createGradient","color1","color2","GREY","0","100","200","300","400","500","600","700","800","900","alpha","PRIMARY","lighter","darker","contrastText","SECONDARY","INFO","SUCCESS","WARNING","ERROR","GRADIENTS","info","warning","maintoolbarHover","subtoolbar","subtoolbarHover","subtoolbar2","component2","component4","component5","component6","adder","titlebg","docbg","boxBorder","myMessage","otherMessage","myMessageAlt","otherMessageAlt","purple","dimmestblack","dimmestwhite","market","contentHome","grey","gradients","chart","violet","blue","yellow","red","cardHover","divider","default","neutral","active","hover","disabledBackground","hoverOpacity","disabledOpacity","pxToRem","responsiveFontSizes","typography","fontWeightRegular","fontWeightMedium","fontWeightBold","h1","lineHeight","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","overline","letterSpacing","textTransform","ComponentsOverrides","merge","MuiCard","styleOverrides","MuiCardHeader","defaultProps","titleTypographyProps","subheaderTypographyProps","root","MuiCardContent","MuiListItemIcon","MuiListItemAvatar","MuiListItemText","multiline","Lists","MuiInputBase","MuiInput","underline","borderBottomColor","MuiFilledInput","MuiOutlinedInput","MuiButton","sizeLarge","sizeXtraSmall","containedInherit","customShadows","z8","containedPrimary","containedSecondary","outlinedInherit","textInherit","MuiTooltip","arrow","MuiBackdrop","MuiTypography","MuiIconButton","variants","MuiAutocomplete","MuiAccordionSummary","MuiExpanded","LIGHT_MODE","z1","z12","z16","z20","z24","createCustomShadow","shadows","transparent1","transparent2","transparent3","createShadow","ThemeConfig","themeOptions","useMemo","createTheme","componentsOverride","StyledEngineProvider","injectFirst","ThemeProvider","CssBaseline","App","sitepath","hostname","pathname","getLocalUserInfo","localUserString","getItem","parse","userToken","useToken","setLoaded","photoRepo","setPhotoRepo","setTheme","isDark","setItem","getTheme","localTheme","getUser","userString","setUserInfoCallback","err","utils","DateFnsUtils","isLocalhost","registerValidSW","swUrl","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","baseUrl","getElementsByTagName","getAttribute","rootElement","createRoot","render","basename","process","origin","get","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.c017522e.chunk.js","sourcesContent":["\r\nexport async function getPhotoLibraries(parentID, appid) {\r\n var url;\r\n if (parentID) {\r\n url = \"photo/getownerlibraries?id=\" + parentID + '&appid=' + appid;\r\n }\r\n else {\r\n url = \"photo/getlibraries?appid=\" + appid;\r\n }\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getSiteLibrary(id) {\r\n var url = \"photo/getsitelibrary?id=\" + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getPhotoList(parentID, appid) {\r\n const response = await fetch(\"photo/getphotos?id=\" + parentID + '&appid=' + appid);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getPhoto(id) {\r\n const response = await fetch(\"photo/getphoto?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getPhotoThumb(id) {\r\n const response = await fetch(\"photo/getphotothumb?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data.thumb;\r\n return null;\r\n}\r\n\r\nexport async function savePhoto(file, parentID,appid) {\r\n var b64;\r\n var reader = new FileReader();\r\n reader.onload = e => {\r\n const { result } = e.target;\r\n var base64result = result.split(',')[1];\r\n b64 = base64result;\r\n }\r\n\r\n await reader.readAsDataURL(file);\r\n\r\n //post photo to api \r\n const formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('parentid', parentID);\r\n formData.append('appid', appid);\r\n\r\n const photoID = await fetch('photo/newphoto', {\r\n method: 'POST',\r\n body: formData\r\n }).then(\r\n response => response.json()\r\n );\r\n\r\n const photoObj = { photoID: photoID, thumb: b64 };\r\n\r\n return photoObj;\r\n}\r\nexport async function updatePhoto(file, photoid) {\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('photoid', photoid);\r\n\r\n const result = await fetch('photo/updatephoto', {\r\n method: 'POST',\r\n body: formData\r\n }).then(\r\n response => response.json()\r\n );\r\n\r\n return result;\r\n}\r\nexport async function deletePhoto(id) {\r\n const req = {\r\n PhotoID: id,\r\n };\r\n\r\n const response = await fetch(\"photo/deletephoto\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n console.error(response);\r\n return false;\r\n}\r\nexport async function movePhoto(id, parentid) {\r\n const req = {\r\n PhotoId: id,\r\n ParentID: parentid\r\n };\r\n\r\n const response = await fetch(\"photo/movephoto\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n console.error(response);\r\n return false;\r\n}\r\nexport async function newLibrary(name, parentID, appid) {\r\n const req = {\r\n ParentID: parentID,\r\n Name: name,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"photo/createlibrary\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editLibrary(id, name) {\r\n const req = {\r\n LibraryID: id,\r\n Name: name\r\n };\r\n const response = await fetch(\"photo/editlibrary\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n console.error(response);\r\n return false;\r\n}\r\n\r\nexport async function deleteLibrary(id) {\r\n const req = {\r\n LibraryID: id,\r\n };\r\n const response = await fetch(\"photo/deletelibrary\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n console.error(response);\r\n return false;\r\n}\r\nexport async function sharePhoto(id, ownerid, userid, isFolder, appid, canedit, hasexpiration, expiration ) {\r\n const req = {\r\n PhotoId: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n IsFolder: isFolder,\r\n AppID: appid,\r\n CanEdit: canedit,\r\n HasExpiration: hasexpiration,\r\n Expiration: expiration\r\n };\r\n const response = await fetch(\"photo/sharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function unSharePhoto(id, ownerid, userid, appid) {\r\n const req = {\r\n PhotoId: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"photo/unsharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function hideSharedPhoto(id, ownerid, userid, appid) {\r\n const req = {\r\n PhotoId: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"photo/hidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function unhideSharedPhoto(id, ownerid, userid, appid) {\r\n const req = {\r\n PhotoId: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"photo/unhidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}","export async function setForgottenPassword(id, pwd) {\r\n const req = { RequestID: id, NewPassword: pwd };\r\n const response = await fetch('home/resetforgottenpassword', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function setPassword(old, newp) {\r\n const req = { OldPassword: old, NewPassword: newp };\r\n const response = await fetch('home/resetpassword', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function getPasswordResetRequest(id) {\r\n let url = 'home/getpasswordresetrequest?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function createPasswordResetRequest(email) {\r\n const req = { Email: email};\r\n const response = await fetch('home/createpasswordresetrequest', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function disableAccount(id) {\r\n const req = { UserID: id };\r\n const response = await fetch('home/disableaccount', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function deleteAccount(id) {\r\n const req = { UserID: id };\r\n const response = await fetch('home/deleteaccount', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function setPublic(attr) {\r\n const req = { Attribute: attr};\r\n const response = await fetch('home/setpublic', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function removePublic(attr) {\r\n const req = { Attribute: attr };\r\n const response = await fetch('home/removepublic', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nexport async function isOnline(userid) {\r\n let url = 'home/isonline?userid=' + userid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return false;\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return false;\r\n}\r\nexport async function getUserProfile(appid) {\r\n let url = 'home/getuserprofile?appid=' + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getPublicAttributes() {\r\n let url = 'home/getpublicattributes';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getUserInfo(appid) {\r\n let url = 'home/getuserinfo?appid=' + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getUserAvatar(userid) {\r\n let url = 'home/getuseravatar?userID=' + userid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getUserTheme() {\r\n let url = 'home/gettheme';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function setUserTheme(theme) {\r\n const response = await fetch('home/settheme', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(theme)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getProfileImage(userid) {\r\n let url = 'home/getuserprofileimage';\r\n if (userid) {\r\n url += \"?userID=\" + userid;\r\n }\r\n\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function removeStrength(id) {\r\n const response = await fetch('home/removestrength?id=' + id, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addStrength(strength) {\r\n const response = await fetch('home/addstrength?strength=' + strength + '&impacts=&ranking=0', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function removeWeakness(id) {\r\n const response = await fetch('home/removeweakness?id=' + id, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addWeakness(strength) {\r\n const response = await fetch('home/addweakness?weakness=' + strength + '&impacts=&ranking=0', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function saveName(first, middle, last) {\r\n const response = await fetch('home/savename?first=' + first + '&middle=' + middle + '&last=' + last, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function saveHeadline(headline) {\r\n const response = await fetch('home/saveheadline?headline=' + headline, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function saveImportantDate(type, date) {\r\n const response = await fetch('home/setimportantdate?type=' + type + '&date=' + date, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function saveTrait(type, val) {\r\n const response = await fetch('home/savetrait?trait=' + type + '&value=' + val, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addAddress(type, street, city, state, zip, country, primary) {\r\n const response = await fetch('home/addaddress?type=' + type + '&street=' + street + '&city=' + city + '&state=' + state + '&zip=' + zip + '&country=' + country + '&primary=' + primary, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editAddress(id, type, street, city, state, zip, country, primary) {\r\n const response = await fetch('home/editaddress?id=' + id + '&type=' + type + '&street=' + street + '&city=' + city + '&state=' + state + '&zip=' + zip + '&country=' + country + '&primary=' + primary, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteEmail(id) {\r\n const response = await fetch('home/removeemail?id=' + id, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deletePhone(id) {\r\n const response = await fetch('home/removephone?id=' + id, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteAddress(id) {\r\n const response = await fetch('home/removeaddress?id=' + id, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteFamily(id) {\r\n const response = await fetch('home/removefamily?id=' + id, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addEmail(type, email, primary) {\r\n const response = await fetch('home/addemail?type=' + type + '&email=' + email + '&primary=' + primary, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editEmail(id, type, email, primary) {\r\n const response = await fetch('home/editemail?id=' + id + '&type=' + type + '&email=' + email + '&primary=' + primary, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addPhone(type, number, primary) {\r\n const response = await fetch('home/addphone?type=' + type + '&number=' + number + '&primary=' + primary, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editPhone(id, type, number, primary) {\r\n const response = await fetch('home/editphone?id=' + id + '&type=' + type + '&number=' + number + '&primary=' + primary, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addFamily(first, middle, last, gender, type, dob) {\r\n const response = await fetch('home/addfamily?first=' + first + '&middle=' + middle + '&last=' + last + '&gender=' + gender + '&type=' + type + '&dob=' + dob, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editFamily(id, first, middle, last, gender, type, dob) {\r\n const response = await fetch('home/editfamily?id=' + id + '&type=' + type + '&first=' + first + '&middle=' + middle + '&last=' + last + '&gender=' + gender + '&dob=' + dob, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function setSiteOptions(userid, photoid, showfollowbtn, showaboutbtn, showabout, showcontent, showposts, showfeatured, featuredtitle, featureddesc, featuredid, featuredtype, style, bio) {\r\n const req = { UserID: userid, PhotoID: photoid, ShowFollowBtn: showfollowbtn, ShowAboutBtn: showaboutbtn, ShowAbout: showabout, ShowContent: showcontent, ShowPosts: showposts, ShowFeatured: showfeatured, FeaturedTitle: featuredtitle, FeaturedDesc: featureddesc, FeaturedContentID: featuredid, FeaturedContentType: featuredtype, SiteStyle: style, Bio: bio };\r\n const response = await fetch('home/setsiteoptions', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function getSiteOptions(id) {\r\n let url = 'home/getsiteoptions?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getSiteContent(id) {\r\n let url = 'home/getusersite?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getUserSiteProfile(id) {\r\n let url = 'home/getusersiteprofile?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getUserList() {\r\n let url = 'home/getuserlist';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function followUser(userid, targetid) {\r\n const req = { UserID: userid, TargetID: targetid };\r\n const response = await fetch('home/followuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function unfollowUser(userid, targetid) {\r\n const req = { UserID: userid, TargetID: targetid };\r\n const response = await fetch('home/unfollowuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function getUserFollowers() {\r\n let url = 'home/getuserfollowers';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getUsersFollowing() {\r\n let url = 'home/getusersfollowing';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function setFeedPreferences(userid, politics, profanity, adult) {\r\n const req = { UserID: userid, Profanity: profanity, Politics: politics, AdultContent: adult };\r\n const response = await fetch('home/setfeedpreferences', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function getFeedPreferences(id) {\r\n let url = 'home/getfeedpreferences?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}","const sites = [\r\n {\r\n id: \"stallingsandassociates\",\r\n type: \"business\",\r\n location: \"Smithfield, Virginia\",\r\n meta: { description: \"Stallings and Associates Webpage\" },\r\n pageTitle: \"Stallings and Associates\",\r\n shortTitle: \"SAA\",\r\n companyName: \"Stallings and Associates, P.C.\",\r\n buttonColor: \"rgba(255,255,255,.9)\",\r\n buttonColorText: \"#222\",\r\n buttonBorder: \"none\",\r\n fontFamily:\"Times New Roman, Public Sans, sans-serif\",\r\n floatingContactButton: true,\r\n floatingContactInfoButton: true,\r\n floatingBackground: \"rgba(0,0,0,.9)\",\r\n contactButtonLabel: \"Contact Us\",\r\n notifyOnContact: true,\r\n notificationEmail: \"caryl@stallingsandassociates.com\",\r\n notificationName: \"Caryl Ryan\",\r\n compact: false,\r\n sections: [\r\n {\r\n id: \"header\",\r\n type: \"header\",\r\n display: true,\r\n fixed: true,\r\n logo: \"/Images/StallingsAndAssociates/stallingtimes.png\",\r\n logoHeight: \"80px\",\r\n alt: \"Stallings and Associates Webpage\",\r\n shortLogo: true,\r\n logoCentered: true,\r\n background: 'rgba(20,20,20,.95)',\r\n shadow: true,\r\n actionButton: { action: \"portal\", color: \"#ccc\", background: \"#09487f\", label: \"Client Portal\", tooltip: \"Log in to Portal\" },\r\n \r\n },\r\n {\r\n id: \"main\",\r\n type: \"main\",\r\n display: true,\r\n useAsHeader: false,\r\n background: {\r\n image: \"/Images/StallingsAndAssociates/stall3.png\",\r\n color: '#fff',\r\n verticalPosition: \"bottom\",\r\n //filter: \"grayscale(1)\",\r\n fullHeight: true,\r\n },\r\n contactButton: false,\r\n contactInfo: true,\r\n slider: {\r\n size: \"full\",\r\n padding: 2,\r\n background: \"rgba(0,0,0,.8)\",\r\n bottom: true,\r\n topPad:\"36px\",\r\n darkText: false,\r\n darkDots: false,\r\n items: [\r\n //{\r\n // primaryText: \"Stallings and Associates - Holiday Closures\",\r\n // secondaryText: \"Closed November 25th through November 29th.\"\r\n //},\r\n {\r\n object: true,\r\n justify: \"left\",\r\n list: true,\r\n secondaryText: \"list\",\r\n primaryText: \"Stallings and Associates - Holiday Closures\",\r\n lists: [\r\n {\r\n title: \"Closed November 25th - November 29th\",\r\n items: [\r\n //\"Partnerships (Form 1065)\",\r\n //\"S Corporations (Form 1120S)\",\r\n ]\r\n },\r\n {\r\n title: \"Closed December 23rd - January 3rd\",\r\n items: [\r\n //\"Individuals and Families (Form 1040)\",\r\n //\"Estates and Trusts (Form 1041)\",\r\n //\"C Corporations (Form 1120)\"\r\n ]\r\n },\r\n //{\r\n // title: \"May 15, 2024\",\r\n // items: [\r\n // \"Tax Exempt Organizations (Form 990)\",\r\n // ]\r\n //},\r\n ],\r\n bottomText: \"We wish you all a wonderful Holiday Season and look forward to serving you in the upcoming year. Happy Holidays!!\"\r\n },\r\n {\r\n object: true,\r\n justify: \"left\",\r\n list: true,\r\n secondaryText:\"list\",\r\n primaryText: \"2024 Estimated Tax Deadlines\",\r\n lists: [\r\n {\r\n title: \"April 15, 2024\",\r\n items: [\r\n \"1st Quarter\",\r\n ]\r\n },\r\n {\r\n title: \"June 17, 2024\",\r\n items: [\r\n \"2nd Quarter\",\r\n ]\r\n },\r\n {\r\n title: \"Sept 16, 2024\",\r\n items: [\r\n \"3rd Quarter\",\r\n ]\r\n },\r\n {\r\n title: \"January 15, 2025\",\r\n items: [\r\n \"4th Quarter\",\r\n ]\r\n },\r\n ],\r\n },\r\n {\r\n primaryText: \"About Us\",\r\n secondaryText: \"Stallings and Associates specializes in Tax Preparation, Accounting and Bookkeeping Services for a wide variety of clients. Our experienced staff always provides personal, quality, and award-winning customer service.\"\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n id: \"Services\",\r\n type: \"cards\",\r\n display: true,\r\n title: \"Services We Provide...\",\r\n // subtitle: \"Our experienced staff provides quality, personal, small-town customer service.\",\r\n titleColor: \"#111\",\r\n subtitleColor: \"#333\",\r\n background: '#f7f7f7',\r\n contactButton: true,\r\n contactButtonMobileOnly: true,\r\n contactButtonBackground: \"#444\",\r\n contactButtonColor: \"white\",\r\n imageHeight: 160,\r\n maxRowSize: 4,\r\n items: [\r\n {\r\n primary: \"Tax Return Planning and Filing for Individuals\",\r\n secondary: \"\",\r\n },\r\n {\r\n primary: \"Bookkeeping and Financial Statements for Small Businesses\",\r\n secondary: \"\",\r\n },\r\n {\r\n primary: \"Corporate Tax Returns\",\r\n secondary: \"\",\r\n },\r\n {\r\n primary: \"Estate and Trust Accounting and Tax Returns\",\r\n secondary: \"\",\r\n },\r\n {\r\n primary: \"Business Partnerships \",\r\n secondary: \"\",\r\n },\r\n {\r\n primary: \"Tax Exempt Organizations \",\r\n secondary: \"\",\r\n },\r\n ],\r\n },\r\n {\r\n id: \"awards\",\r\n type: \"cards\",\r\n display: true,\r\n title: \"In the News...\",\r\n subtitle: \"We are proud recipients of the 2021, 2022, and 2023 Hammy Awards for Best Accounting Firm! The Hammy awards present the local places, faces, businesses and services you think are the Best in Smithfield, Surry and Isle of Wight.\",\r\n titleColor: \"#fff\",\r\n subtitleColor: \"#ddd\",\r\n background: '#333',\r\n contactButton: null,\r\n shadow: true,\r\n items: [\r\n {\r\n primary: \"Hammy 2023 Winner\",\r\n image: \"/Images/StallingsAndAssociates/hammy2023.png\",\r\n href: \"https://www.smithfieldtimes.com/contests/2023-hammy-awards/\"\r\n },\r\n {\r\n primary: \"Hammy 2022 Winner\",\r\n image: \"/Images/StallingsAndAssociates/hammy2022.png\",\r\n href: \"https://www.smithfieldtimes.com/contests/hammy-awards-2022/\"\r\n },\r\n {\r\n primary: \"Hammy 2021 Winner\",\r\n image: \"/Images/StallingsAndAssociates/hammy2021.png\",\r\n href: \"https://issuu.com/smithfieldtimes/docs/2021_hammys\"\r\n }\r\n ],\r\n },\r\n {\r\n id: \"Links\",\r\n type: \"cards\",\r\n display: true,\r\n title: \"Helpful Links...\",\r\n titleColor: \"secondary\",\r\n subtitleColor: \"#ccc\",\r\n subtitle: \"\",\r\n background: '#fff',\r\n maxRowSize: 6,\r\n contactButton: null,\r\n items: [\r\n {\r\n primary: \"Tax Prep Checklist (PDF)\",\r\n href: \"/Images/StallingsAndAssociates/taxprepchecklist.pdf\"\r\n },\r\n {\r\n primary: \"2024 Federal Tax Deadlines\",\r\n href: \"/Images/StallingsAndAssociates/2024federaldeadlines.pdf\"\r\n },\r\n {\r\n primary: \"IRS Website\",\r\n href: \"https://www.irs.gov/filing\",\r\n },\r\n {\r\n primary: \"Virginia Tax Website\",\r\n href: \"https://www.tax.virginia.gov/\",\r\n },\r\n {\r\n primary: \"Isle of Wight County Website\",\r\n href: \"https://www.co.isle-of-wight.va.us/index.php\",\r\n },\r\n {\r\n primary: \"Surry County Website\",\r\n href: \"https://www.surrycountyva.gov/\",\r\n },\r\n {\r\n primary: \"City of Suffolk Website\",\r\n href: \"https://www.suffolkva.us/\",\r\n },\r\n {\r\n primary: \"City of Newport News Website\",\r\n href: \"https://www.nnva.gov/\",\r\n },\r\n {\r\n primary: \"City of Hampton Website\",\r\n href: \"https://hampton.gov/\",\r\n },\r\n ],\r\n },\r\n {\r\n id: \"partner\",\r\n type: \"partner\",\r\n display: true,\r\n title: \"COMING SOON: Client portal powered by:\",\r\n titleColor: \"#ccc\",\r\n disabled: true,\r\n subtitleColor: \"#333\",\r\n titlePadRight: true,\r\n subtitle: \"\",\r\n background: '#111',\r\n contactButton: null,\r\n partner: {\r\n logo: \"/Images/Common/lsletters.png\",\r\n height: \"36px\",\r\n background: \"transparent\",\r\n shadow: false,\r\n border: false,\r\n href: \"https://mylivesphere.com\",\r\n href: null,\r\n alt: \"Powered by LiveSphere\"\r\n },\r\n },\r\n {\r\n id: \"contactinfo\",\r\n type: \"contactinfo\",\r\n display: true,\r\n title: \"Contact Us\",\r\n titleColor: \"#ddd\",\r\n subtitle: \"\",\r\n background: '#000',\r\n address: { street: \"210 Main Street\", city: \"Smithfield\", \"state\": \"VA\", zip: \"23430-1325\" },\r\n phone: \"(757) 365-0200\",\r\n email: \"info@stallingsandassociates.com\",\r\n officeHours: { title: \"Office Schedule Varies\", items: [\"January to April: Mon-Fri\", \"May to December: Mon-Thur\",\"Office Hours: 9:00 am to 4:00 pm\"]}\r\n },\r\n {\r\n id: \"footer\",\r\n type: \"footer\",\r\n display: true,\r\n title: \"\",\r\n titleColor: \"#ddd\",\r\n logo: null,\r\n alt: \"\",\r\n logoHeight: \"50px\",\r\n subtitle: \"\",\r\n background: '#000',\r\n partner: false\r\n },\r\n ],\r\n clientPortal: {\r\n include: true,\r\n loginLabel: \"Client Portal\",\r\n loginLabelDark: false,\r\n loginLogo: \"/Images/StallingsAndAssociates/saapc.png\",\r\n buttonColor: '#333',\r\n accountRequestMessage: \"Need an account? Email us at info@stallingsandassociates.com.\",\r\n contentTypes: [\"Files\"],\r\n posts: false,\r\n postTypes: [\"Thoughts\",],\r\n search: false,\r\n accentColor: '#111',\r\n mainLogo: \"/Images/StallingsAndAssociates/saapc.png\",\r\n mainTitle: \"Client Portal\",\r\n allowPost: false,\r\n allowFilters: false,\r\n contentTitle: \"My Library\",\r\n contentSubtitle: \"Create and upload content, and access content shared with you.\"\r\n }\r\n },\r\n {\r\n id: \"simplebluetech\",\r\n type: \"business\",\r\n url: \"http://www.simplebluetech.com\",\r\n location: \"Smithfield, Virginia\",\r\n pageTitle: \"SimpleBlue Technologies\",\r\n shortTitle: \"SimpleBlue\",\r\n companyName: \"SimpleBlue Technologies, LLC\",\r\n meta: { description: \"SimpleBlue Technologies Webpage\" },\r\n buttonColor: \"#12172d\",\r\n contactButtonLabel: \"Contact Us\",\r\n notifyOnContact: true,\r\n //notificationEmail: \"brian@mylivesphere.com\",\r\n notificationName: \"Brian Sabin\",\r\n compact: false,\r\n sections: [\r\n {\r\n id: \"header\",\r\n type: \"header\",\r\n display: true,\r\n logo: \"/Images/SimpleBlueTech/simplebluehrs.png\",\r\n logoHeight: \"120px\",\r\n alt: \"SimpleBlue Technologies Hampton Roads Software Development Mobile Docker Kubernetes Cloud React\",\r\n shortLogo: false,\r\n logoCentered: true,\r\n background: '#12172d',\r\n shadow: false,\r\n actionButton: { action: \"portal\", color: \"white\", background: \"#09487f\", label: \"Client Portal\", tooltip: \"Log in to Portal\" },\r\n },\r\n {\r\n id: \"main\",\r\n type: \"main\",\r\n display: true,\r\n useAsHeader: false,\r\n background: {\r\n image: null,\r\n color: 'linear-gradient( #12172d, 75%,#8488a9)',\r\n fullHeight: true,\r\n },\r\n contactButton: true,\r\n slider: {\r\n size: \"full\",\r\n background: \"rgba(0,0,0,.3)\",\r\n topPad:\"120px\",\r\n darkText: false,\r\n darkDots: false,\r\n items: [\r\n {\r\n primaryText: \"Web Development\",\r\n secondaryText: \"We build and host custom websites and data driven applications.\"\r\n },\r\n {\r\n primaryText: \"Integration Services\",\r\n secondaryText: \"We use the latest tech to deliver innovation solutions for integrating your separate systems into a seamless user experience\"\r\n },\r\n {\r\n primaryText: \"Data Migration Services\",\r\n secondaryText: \"We will help you migrate data, documents, and other information assets from legacy systems to newer platforms. Migrations can be complex and messy. We want to handle the dirty work, so you can focus on your business\"\r\n },\r\n {\r\n primaryText: \"Technology Consulting\",\r\n secondaryText: \"Our goal is to earn your trust so you ultimately consider us a trusted advisor. You can engage with us for any tech challenge, large or small. Well-designed and implemeted software can be a game changer for your business and we look forward to a growing partnership\"\r\n },\r\n {\r\n primaryText: \"Creators of LiveSphere\",\r\n secondaryText: \"Livesphere is the first social media platform focused on improving people's lives. Create meaningful connections with people across the world with shared interests and passions. Share content and experiences, learn from one another and grow your personal sphere by making the world a better place.\",\r\n link: { href: \"https://mylivesphere.com\", image: \"/Images/Common/lsletters.png\" }\r\n\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n id: \"Services\",\r\n type: \"cards\",\r\n display: true,\r\n title: \"Our Services...\",\r\n titleColor: \"#111\",\r\n subtitleColor: \"#333\",\r\n subtitle: \"We provide a wide range of technology services, enabling you to maximize success by focusing on your clients.\",\r\n background: '#f7f7f7',\r\n contactButton: true,\r\n maxRowSize: 6,\r\n items: [\r\n {\r\n primary: \"Technology Consulting\",\r\n secondary: \"Trusted partner to help create and execute your vision for technology innovation.\",\r\n image: \"/Images/Common/hands.jpeg\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Integration\",\r\n secondary: \"The best solutions should provide a seamless, integrated user experience.\",\r\n image: \"/Images/Common/bluedev.jpeg\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Data Migrations\",\r\n secondary: \"Turnkey data cleanup and migrations to new platforms.\",\r\n image: \"/Images/Common/lake.jpeg\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Software Development\",\r\n secondary: \"Web, mobile, database apps, deployed, secured, and hosted for you.\",\r\n image: \"/Images/Common/code1.jpg\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n ],\r\n },\r\n {\r\n id: \"partner\",\r\n type: \"partner\",\r\n display: true,\r\n title: \"Check out our Client Portal powered by:\",\r\n titleColor: \"#ccc\",\r\n subtitleColor: \"#333\",\r\n titlePadRight: true,\r\n subtitle: \"\",\r\n background: '#101010',\r\n contactButton: null,\r\n shadow:true,\r\n partner: {\r\n logo: \"/Images/Common/lsletters.png\",\r\n height: \"70px\",\r\n background: \"transparent\",\r\n shadow: false,\r\n border: false,\r\n href: \"https://mylivesphere.com\",\r\n alt: \"Powered by LiveSphere\"\r\n },\r\n },\r\n {\r\n id: \"Clients\",\r\n type: \"cards\",\r\n display: true,\r\n title: \"Who We Serve...\",\r\n titleColor: \"#111\",\r\n subtitleColor: \"#333\",\r\n subtitle: \"We help small to medium sized organizations innovate using technology..\",\r\n background: '#e2e2e2',\r\n contactButton: false,\r\n items: [\r\n {\r\n primary: \"Professional Services Firms\",\r\n secondary: \"Financial, consultants, technology, and more.\",\r\n image: \"/Images/Common/hands.jpeg\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Food and Entertainment\",\r\n secondary: \"Restaurants, Bars, Music Venues, and more.\",\r\n image: \"/Images/Common/bluedev.jpeg\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Sports and Recreation\",\r\n secondary: \"Clubs, rec leagues, sporting venues, and more.\",\r\n image: \"/Images/Common/lake.jpeg\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Many others...\",\r\n secondary: \"Any organization looking to innovate.\",\r\n image: \"/Images/Common/code1.jpg\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n ],\r\n },\r\n {\r\n id: \"footer\",\r\n type: \"footer\",\r\n display: true,\r\n title: \"\",\r\n titleColor: \"#ddd\",\r\n logo: \"/Images/SimpleBlueTech/simplebluehrs.png\",\r\n alt: \"\",\r\n logoHeight: \"50px\",\r\n subtitle: \"\",\r\n background: '#000',\r\n partner: { logo: \"/Images/Common/lsletters.png\", alt: \"Livesphere Social Media\", href:\"https://mylivesphere.com\", logoHeight: \"40px\" }\r\n },\r\n ],\r\n clientPortal: {\r\n include: true,\r\n loginLabel: \"Client Portal\",\r\n loginLabelDark: false,\r\n loginLogo: \"/Images/SimpleBlueTech/simplebluehrs.png\",\r\n buttonColor: '#12172d',\r\n accountRequestMessage: \"Need an account? Use the contact form on the main page to send us a message!\",\r\n contentTypes: [\"Files\", \"Links\", \"Notes\", \"Lists\"],\r\n posts: false,\r\n postTypes: [\"Thoughts\",],\r\n search: false,\r\n accentColor: '#12172d',\r\n mainLogo: \"/Images/SimpleBlueTech/simplebluehrs.png\",\r\n mainTitle: \"Client Portal\",\r\n allowPost: false,\r\n allowFilters: false,\r\n contentTitle: \"My Library\",\r\n contentSubtitle: \"Create and upload content, and access content shared with you.\"\r\n }\r\n },\r\n {\r\n id: \"carsonrobertsonmusic\",\r\n type: \"musician\",\r\n genres: [\"Country\",],\r\n location: \"Virginia\",\r\n tags: [\"Country\", \"Hound\", \"Dog Tight\", \"Dog Hunting\", \"Songwriter\", \"Septa\", \"Hunting\", \"Fishing\"],\r\n meta: { description: \"Carson Robertson Dog Tight Hound Hunting Musician County Music Artist\" },\r\n pageTitle: \"Carson Robertson Music\",\r\n shortTitle: \"Carson Robertson\",\r\n companyName: \"Carson Robertson Music\",\r\n buttonColor: \"#333\",\r\n contactButtonLabel: \"Contact\",\r\n notifyOnContact: true,\r\n compact: true,\r\n sections: [\r\n {\r\n id: \"header\",\r\n type: \"header\",\r\n display: true,\r\n fixed: true,\r\n logo: \"/Images/CarsonRobertsonMusic/carsoncursive.png\",\r\n logoHeight: \"80px\",\r\n alt: \"Carson Robertson Music\",\r\n shortLogo: true,\r\n logoCentered: true,\r\n background: 'rgba(0,0,0,.3)',\r\n shadow: true,\r\n actionButton: { type: \"contact\", action: \"contact\", color: \"white\", background: \"#222\", label: \"Contact\", tooltip: \"Send Carson a Message\" }, \r\n },\r\n {\r\n id: \"main\",\r\n type: \"main\",\r\n display: true,\r\n //useAsHeader: true,\r\n //header: {\r\n // background: 'rgba(0,0,0,.3)',\r\n // shadow: false,\r\n // titleImage: \"/Images/CarsonRobertsonMusic/carson.png\",\r\n // titleImageHeight: \"120px\",\r\n // titleImageCentered: true,\r\n // alt: \"Carson Robertson Music\",\r\n // title: \"\",\r\n // titleColor: \"#eee\",\r\n // subtitle: \"\",\r\n // actionButton: { action: \"contact\", color: \"white\", background: \"#222\", label: \"Message Carson\", tooltip:\"Send Carson a Message\" }, \r\n //},\r\n background: {\r\n image: \"/Images/CarsonRobertsonMusic/bwone.jpg\",\r\n color: null,\r\n fullHeight: true,\r\n verticalPosition: \"bottom\",\r\n },\r\n contentAlignment: \"right\",\r\n contactButton: null,\r\n //slider: {\r\n // size: \"compact\",\r\n // background: 'rgba(0,0,0,.99)',\r\n // darkText: false,\r\n // darkDots: false,\r\n // items: [\r\n // {\r\n // primaryText: \"Latest Release\",\r\n // secondaryText: null,\r\n // songID: '3897f37b-7e13-4dd5-b598-2d45dabbd8ff'\r\n // },\r\n // {\r\n // primaryText: \"Upcoming Appearances\",\r\n // secondaryText: \"Carson will be in downtown Nashville in June, probably playing on the street.\",\r\n // },\r\n // ]\r\n //},\r\n },\r\n {\r\n id: \"Links\",\r\n type: \"cards\",\r\n display: true,\r\n title: \"Recent Appearances and other Links\",\r\n titleColor: \"#aaa\",\r\n subtitleColor: \"#ccc\",\r\n subtitle: \"\",\r\n background: '#000',\r\n contactButton: null,\r\n items: [\r\n {\r\n primary: \"Tree Talkin' Time\",\r\n secondary: \"Recent podcast appearance\",\r\n image: \"/Images/CarsonRobertsonMusic/treetalkintime.png\",\r\n href: \"https://treetalkintime.libsyn.com/50-dog-tight\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Conkey's Outdoors\",\r\n secondary: \"Family owned and operated.\",\r\n image: \"/Images/CarsonRobertsonMusic/conkys.png\",\r\n href: \"http://www.conkeysoutdoors.com/\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Dog Tight\",\r\n secondary: \"on Spotify\",\r\n image: \"/Images/CarsonRobertsonMusic/spotify.png\",\r\n href: \"https://open.spotify.com/track/4lPcX2s8M1HsB9tQl0RtoY?si=7193f2fb41d54091&fbclid=IwAR3j6MX1ZsdMWzks3BH3LKRny5uKUFSC0hb_GOXb_jdYifaC3W55CAqtm70&nd=1\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n },\r\n {\r\n primary: \"Dog Tight\",\r\n secondary: \"on Apple Music\",\r\n image: \"/Images/CarsonRobertsonMusic/dogtight.jpg\",\r\n href: \"https://music.apple.com/us/album/dog-tight/1655445903?i=1655445904\",\r\n sectionIDX: null,\r\n contentIDX: null,\r\n }, \r\n ],\r\n },\r\n //{\r\n // id: \"About\",\r\n // type: \"cards\",\r\n // display: true,\r\n // title: \"\",\r\n // titleColor: \"#fff\",\r\n // subtitleColor: \"#ddd\",\r\n // subtitle: \"\",\r\n // background: 'linear-gradient(45deg, lightgray, transparent)',\r\n // contactButton: null,\r\n // items: [\r\n // {\r\n // primary: \"About Carson\",\r\n // secondary: \"Southeast Virginia Country Life\",\r\n // image: \"/Images/CarsonRobertsonMusic/crfish.jpg\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // {\r\n // primary: \"Buy Some Merch\",\r\n // secondary: \"Online Store Coming Soon\",\r\n // image: \"/Images/CarsonRobertsonMusic/crdeer.jpg\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // {\r\n // primary: \"Dog Tight Video\",\r\n // secondary: \" by Conkey's Outdoors\",\r\n // image: \"/Images/CarsonRobertsonMusic/dogtight.jpg\",\r\n // href: \"https://fb.watch/hH4IzjZxHz/\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // ],\r\n //},\r\n {\r\n id: \"socials\",\r\n type: \"socials\",\r\n display: true,\r\n title: \"\",\r\n titleColor: \"#333\",\r\n subtitleColor: \"#666\",\r\n subtitle: \"\",\r\n background: '#050505',\r\n contactButton: null,\r\n items: [\r\n {\r\n primary: \"Facebook\",\r\n secondary: \"https://www.facebook.com/carson.robertson.90\",\r\n },\r\n {\r\n primary: \"Instagram\",\r\n secondary: \"https://www.instagram.com/carson_robertson/\",\r\n },\r\n {\r\n primary: \"TikTok\",\r\n secondary: \"https://www.tiktok.com/@carsonrobertson97\",\r\n },\r\n {\r\n primary: \"Spotify\",\r\n secondary: \"https://open.spotify.com/artist/6i3QxTkQrPZdC3CA1riUBL\",\r\n },\r\n {\r\n primary: \"Amazon Music\",\r\n secondary: \"https://music.amazon.com/artists/B0BMWJV4FT/carson-robertson\",\r\n },\r\n {\r\n primary: \"YouTube\",\r\n secondary: \"https://www.youtube.com/channel/UCpYiTNcXvOja4klyPEIXTqQ/featured\",\r\n },\r\n ],\r\n },\r\n {\r\n id: \"partner\",\r\n type: \"partner\",\r\n display: true,\r\n title: \"Powered By:\",\r\n titleColor: \"#999\",\r\n subtitleColor: \"#333\",\r\n titlePadRight: true,\r\n subtitle: \"\",\r\n background: '#050505',\r\n contactButton: null,\r\n partner: {\r\n logo: \"/Images/Common/lsletters.png\",\r\n height: \"36px\",\r\n background: \"transparent\",\r\n shadow: false,\r\n border: false,\r\n href: \"https://mylivesphere.com\",\r\n alt: \"Powered by LiveSphere\"\r\n },\r\n },\r\n {\r\n id: \"footer\",\r\n type: \"footer\",\r\n display: true,\r\n title: \"\",\r\n titleColor: \"#ddd\",\r\n logo: null,\r\n alt: \"\",\r\n logoHeight: \"50px\",\r\n subtitle: \"\",\r\n background: '#000',\r\n partner: false\r\n },\r\n ],\r\n clientPortal: null\r\n },\r\n {\r\n id: \"jimoreillyfarms\",\r\n type: \"business\",\r\n location: \"Smithfield, Virginia\",\r\n meta: { description: \"Jim O'reilly Farms Webpage\" },\r\n pageTitle: \"Jim O'reilly Farms\",\r\n shortTitle: \"JOF\",\r\n companyName: \"Jim Oreilly Farms\",\r\n buttonColor: \"rgba(255,255,255,.9)\",\r\n buttonColorText: \"#222\",\r\n buttonBorder: \"none\",\r\n fontFamily: \"serif\",\r\n floatingContactButton: true,\r\n floatingContactInfoButton: true,\r\n floatingBackground: \"rgba(0,0,0,.9)\",\r\n contactButtonLabel: \"Contact Us\",\r\n notifyOnContact: true,\r\n notificationEmail: \"brian@mylivesphere.com\",\r\n notificationName: \"Brian Sabin\",\r\n compact: false,\r\n sections: [\r\n {\r\n id: \"header\",\r\n type: \"header\",\r\n display: true,\r\n fixed: true,\r\n //logo: \"/Images/oreillyfarms/doginhay.jpg\",\r\n //logoHeight: \"80px\",\r\n alt: \"O'reilly Farms\",\r\n shortLogo: true,\r\n logoCentered: true,\r\n background: 'rgba(20,20,20,.85)',\r\n shadow: true,\r\n // actionButton: { action: \"portal\", color: \"#ccc\", background: \"#09487f\", label: \"Client Portal\", tooltip: \"Log in to Portal\" },\r\n\r\n },\r\n {\r\n id: \"main\",\r\n type: \"main\",\r\n display: true,\r\n useAsHeader: false,\r\n background: {\r\n image: \"/Images/oreillyfarms/cowsandpumpkins.jpg\",\r\n color: '#fff',\r\n verticalPosition: \"bottom\",\r\n //filter: \"grayscale(1)\",\r\n fullHeight: true,\r\n },\r\n contactButton: false,\r\n contactInfo: true,\r\n slider: {\r\n size: \"full\",\r\n padding: 2,\r\n background: \"rgba(0,0,0,.7)\",\r\n bottom: true,\r\n topPad: \"36px\",\r\n darkText: false,\r\n darkDots: false,\r\n items: [\r\n\r\n //{\r\n // object: true,\r\n // justify: \"left\",\r\n // list: true,\r\n // secondaryText: \"list\",\r\n // primaryText: \"2024 Estimated Tax Deadlines\",\r\n // lists: [\r\n // {\r\n // title: \"April 15, 2024\",\r\n // items: [\r\n // \"1st Quarter\",\r\n // ]\r\n // },\r\n // {\r\n // title: \"June 17, 2024\",\r\n // items: [\r\n // \"2nd Quarter\",\r\n // ]\r\n // },\r\n // {\r\n // title: \"Sept 16, 2024\",\r\n // items: [\r\n // \"3rd Quarter\",\r\n // ]\r\n // },\r\n // {\r\n // title: \"January 15, 2025\",\r\n // items: [\r\n // \"4th Quarter\",\r\n // ]\r\n // },\r\n // ],\r\n //},\r\n {\r\n primaryText: \"About Us\",\r\n secondaryText: \"Hay and farm products serving eastern Virginia and North Carolina\"\r\n },\r\n ]\r\n },\r\n },\r\n {\r\n id: \"Services\",\r\n type: \"cards\",\r\n display: true,\r\n title: \"Our Products...\",\r\n // subtitle: \"Our experienced staff provides quality, personal, small-town customer service.\",\r\n titleColor: \"#111\",\r\n subtitleColor: \"#333\",\r\n background: '#f7f7f7',\r\n contactButton: true,\r\n contactButtonMobileOnly: true,\r\n contactButtonBackground: \"#444\",\r\n contactButtonColor: \"white\",\r\n imageHeight: 160,\r\n maxRowSize: 4,\r\n items: [\r\n {\r\n primary: \"Hay\",\r\n secondary: \"Delivery or Self-Pickup\",\r\n },\r\n {\r\n primary: \"Beef\",\r\n secondary: \"Wide Selection of Fresh Beef Options\",\r\n },\r\n {\r\n primary: \"Farm Products\",\r\n secondary: \"\",\r\n },\r\n\r\n ],\r\n },\r\n //{\r\n // id: \"awards\",\r\n // type: \"cards\",\r\n // display: true,\r\n // title: \"In the News...\",\r\n // subtitle: \"We are proud recipients of the 2021, 2022, and 2023 Hammy Awards for Best Accounting Firm! The Hammy awards present the local places, faces, businesses and services you think are the Best in Smithfield, Surry and Isle of Wight.\",\r\n // titleColor: \"#fff\",\r\n // subtitleColor: \"#ddd\",\r\n // background: '#333',\r\n // contactButton: null,\r\n // shadow: true,\r\n // items: [\r\n // {\r\n // primary: \"Hammy 2023 Winner\",\r\n // image: \"/Images/StallingsAndAssociates/hammy2023.png\",\r\n // href: \"https://www.smithfieldtimes.com/contests/2023-hammy-awards/\"\r\n // },\r\n // {\r\n // primary: \"Hammy 2022 Winner\",\r\n // image: \"/Images/StallingsAndAssociates/hammy2022.png\",\r\n // href: \"https://www.smithfieldtimes.com/contests/hammy-awards-2022/\"\r\n // },\r\n // {\r\n // primary: \"Hammy 2021 Winner\",\r\n // image: \"/Images/StallingsAndAssociates/hammy2021.png\",\r\n // href: \"https://issuu.com/smithfieldtimes/docs/2021_hammys\"\r\n // }\r\n // ],\r\n //},\r\n\r\n //{\r\n // id: \"partner\",\r\n // type: \"partner\",\r\n // display: true,\r\n // title: \"COMING SOON: Client portal powered by:\",\r\n // titleColor: \"#ccc\",\r\n // disabled: true,\r\n // subtitleColor: \"#333\",\r\n // titlePadRight: true,\r\n // subtitle: \"\",\r\n // background: '#111',\r\n // contactButton: null,\r\n // partner: {\r\n // logo: \"/Images/Common/lsletters.png\",\r\n // height: \"36px\",\r\n // background: \"transparent\",\r\n // shadow: false,\r\n // border: false,\r\n // href: \"https://mylivesphere.com\",\r\n // href: null,\r\n // alt: \"Powered by LiveSphere\"\r\n // },\r\n //},\r\n {\r\n id: \"contactinfo\",\r\n type: \"contactinfo\",\r\n display: true,\r\n title: \"Contact Us\",\r\n titleColor: \"#ddd\",\r\n subtitle: \"\",\r\n background: '#000',\r\n address: { street: \"17182 Fox Ridge Lane\", city: \"Smithfield\", \"state\": \"VA\", zip: \"23430\" },\r\n phone: \"(757) 871-2332\",\r\n email: \"oreillyja757@gmail.com\",\r\n/* officeHours: { title: \"Phone\", items: [\"(757) 871-2332\",] },*/\r\n flatlayout: true\r\n },\r\n {\r\n id: \"footer\",\r\n type: \"footer\",\r\n display: true,\r\n title: \"\",\r\n titleColor: \"#ddd\",\r\n logo: null,\r\n alt: \"\",\r\n logoHeight: \"50px\",\r\n subtitle: \"\",\r\n background: '#000',\r\n partner: false\r\n },\r\n ],\r\n clientPortal: {\r\n include: false,\r\n loginLabel: \"Client Portal\",\r\n loginLabelDark: false,\r\n loginLogo: \"/Images/StallingsAndAssociates/saapc.png\",\r\n buttonColor: '#333',\r\n accountRequestMessage: \"Need an account? Email us at info@stallingsandassociates.com.\",\r\n contentTypes: [\"Files\", \"Links\", \"Notes\", \"Lists\"],\r\n posts: false,\r\n postTypes: [\"Thoughts\",],\r\n search: false,\r\n accentColor: '#111',\r\n mainLogo: \"/Images/StallingsAndAssociates/saapc.png\",\r\n mainTitle: \"Client Portal\",\r\n allowPost: false,\r\n allowFilters: false,\r\n contentTitle: \"My Library\",\r\n contentSubtitle: \"Create and upload content, and access content shared with you.\"\r\n }\r\n },\r\n {\r\n id: \"briansabinmusic\",\r\n type: \"musician\",\r\n genres: [\"Rock\",\"Country\",\"Reggae\",\"Folk\"],\r\n location: \"Virginia\",\r\n tags: [\"Country\", \"Hound\", \"Dog Tight\", \"Dog Hunting\", \"Songwriter\", \"Septa\", \"Hunting\", \"Fishing\"],\r\n meta: { description: \"Brian Sabin\" },\r\n pageTitle: \"Brian Sabin Music\",\r\n shortTitle: \"Brian Sabin\",\r\n companyName: \"Brian Sabin Music\",\r\n buttonColor: \"#333\",\r\n contactButtonLabel: \"Contact\",\r\n notifyOnContact: true,\r\n compact: true,\r\n sections: [\r\n {\r\n id: \"header\",\r\n type: \"header\",\r\n display: true,\r\n fixed: true,\r\n logo: \"/Images/BrianSabinMusic/bsm.png\",\r\n logoHeight: \"80px\",\r\n alt: \"Brian Sabin Music\",\r\n shortLogo: true,\r\n logoCentered: true,\r\n background: 'rgba(0,0,0,.3)',\r\n shadow: true,\r\n actionButton: { type: \"contact\", action: \"contact\", color: \"white\", background: \"#222\", label: \"Contact\", tooltip: \"Send Brian a Message\" },\r\n },\r\n {\r\n id: \"main\",\r\n type: \"main\",\r\n display: true,\r\n //useAsHeader: true,\r\n //header: {\r\n // background: 'rgba(0,0,0,.3)',\r\n // shadow: false,\r\n // titleImage: \"/Images/CarsonRobertsonMusic/carson.png\",\r\n // titleImageHeight: \"120px\",\r\n // titleImageCentered: true,\r\n // alt: \"Carson Robertson Music\",\r\n // title: \"\",\r\n // titleColor: \"#eee\",\r\n // subtitle: \"\",\r\n // actionButton: { action: \"contact\", color: \"white\", background: \"#222\", label: \"Message Carson\", tooltip:\"Send Carson a Message\" }, \r\n //},\r\n background: {\r\n image: \"/Images/BrianSabinMusic/bscover.jpg\",\r\n color: null,\r\n fullHeight: true,\r\n verticalPosition: \"bottom\",\r\n },\r\n contentAlignment: \"right\",\r\n contactButton: null,\r\n //slider: {\r\n // size: \"compact\",\r\n // background: 'rgba(0,0,0,.99)',\r\n // darkText: false,\r\n // darkDots: false,\r\n // items: [\r\n // {\r\n // primaryText: \"Latest Release\",\r\n // secondaryText: null,\r\n // songID: '3897f37b-7e13-4dd5-b598-2d45dabbd8ff'\r\n // },\r\n // {\r\n // primaryText: \"Upcoming Appearances\",\r\n // secondaryText: \"Carson will be in downtown Nashville in June, probably playing on the street.\",\r\n // },\r\n // ]\r\n //},\r\n },\r\n //{\r\n // id: \"Links\",\r\n // type: \"cards\",\r\n // display: true,\r\n // title: \"Recent Appearances and other Links\",\r\n // titleColor: \"#aaa\",\r\n // subtitleColor: \"#ccc\",\r\n // subtitle: \"\",\r\n // background: '#000',\r\n // contactButton: null,\r\n // items: [\r\n // {\r\n // primary: \"Tree Talkin' Time\",\r\n // secondary: \"Recent podcast appearance\",\r\n // image: \"/Images/CarsonRobertsonMusic/treetalkintime.png\",\r\n // href: \"https://treetalkintime.libsyn.com/50-dog-tight\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // {\r\n // primary: \"Conkey's Outdoors\",\r\n // secondary: \"Family owned and operated.\",\r\n // image: \"/Images/CarsonRobertsonMusic/conkys.png\",\r\n // href: \"http://www.conkeysoutdoors.com/\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // {\r\n // primary: \"Dog Tight\",\r\n // secondary: \"on Spotify\",\r\n // image: \"/Images/CarsonRobertsonMusic/spotify.png\",\r\n // href: \"https://open.spotify.com/track/4lPcX2s8M1HsB9tQl0RtoY?si=7193f2fb41d54091&fbclid=IwAR3j6MX1ZsdMWzks3BH3LKRny5uKUFSC0hb_GOXb_jdYifaC3W55CAqtm70&nd=1\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // {\r\n // primary: \"Dog Tight\",\r\n // secondary: \"on Apple Music\",\r\n // image: \"/Images/CarsonRobertsonMusic/dogtight.jpg\",\r\n // href: \"https://music.apple.com/us/album/dog-tight/1655445903?i=1655445904\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // ],\r\n //},\r\n //{\r\n // id: \"About\",\r\n // type: \"cards\",\r\n // display: true,\r\n // title: \"\",\r\n // titleColor: \"#fff\",\r\n // subtitleColor: \"#ddd\",\r\n // subtitle: \"\",\r\n // background: 'linear-gradient(45deg, lightgray, transparent)',\r\n // contactButton: null,\r\n // items: [\r\n // {\r\n // primary: \"About Carson\",\r\n // secondary: \"Southeast Virginia Country Life\",\r\n // image: \"/Images/CarsonRobertsonMusic/crfish.jpg\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // {\r\n // primary: \"Buy Some Merch\",\r\n // secondary: \"Online Store Coming Soon\",\r\n // image: \"/Images/CarsonRobertsonMusic/crdeer.jpg\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // {\r\n // primary: \"Dog Tight Video\",\r\n // secondary: \" by Conkey's Outdoors\",\r\n // image: \"/Images/CarsonRobertsonMusic/dogtight.jpg\",\r\n // href: \"https://fb.watch/hH4IzjZxHz/\",\r\n // sectionIDX: null,\r\n // contentIDX: null,\r\n // },\r\n // ],\r\n //},\r\n {\r\n id: \"socials\",\r\n type: \"socials\",\r\n display: true,\r\n title: \"\",\r\n titleColor: \"#333\",\r\n subtitleColor: \"#666\",\r\n subtitle: \"\",\r\n background: '#050505',\r\n contactButton: null,\r\n items: [\r\n {\r\n primary: \"Facebook\",\r\n secondary: \"https://www.facebook.com/carson.robertson.90\",\r\n },\r\n {\r\n primary: \"Instagram\",\r\n secondary: \"https://www.instagram.com/carson_robertson/\",\r\n },\r\n {\r\n primary: \"TikTok\",\r\n secondary: \"https://www.tiktok.com/@carsonrobertson97\",\r\n },\r\n {\r\n primary: \"Spotify\",\r\n secondary: \"https://open.spotify.com/artist/6i3QxTkQrPZdC3CA1riUBL\",\r\n },\r\n {\r\n primary: \"Amazon Music\",\r\n secondary: \"https://music.amazon.com/artists/B0BMWJV4FT/carson-robertson\",\r\n },\r\n {\r\n primary: \"YouTube\",\r\n secondary: \"https://www.youtube.com/channel/UCpYiTNcXvOja4klyPEIXTqQ/featured\",\r\n },\r\n ],\r\n },\r\n {\r\n id: \"partner\",\r\n type: \"partner\",\r\n display: true,\r\n title: \"Powered By:\",\r\n titleColor: \"#999\",\r\n subtitleColor: \"#333\",\r\n titlePadRight: true,\r\n subtitle: \"\",\r\n background: '#050505',\r\n contactButton: null,\r\n partner: {\r\n logo: \"/Images/Common/lsletters.png\",\r\n height: \"36px\",\r\n background: \"transparent\",\r\n shadow: false,\r\n border: false,\r\n href: \"https://mylivesphere.com\",\r\n alt: \"Powered by LiveSphere\"\r\n },\r\n },\r\n {\r\n id: \"footer\",\r\n type: \"footer\",\r\n display: true,\r\n title: \"\",\r\n titleColor: \"#ddd\",\r\n logo: null,\r\n alt: \"\",\r\n logoHeight: \"50px\",\r\n subtitle: \"\",\r\n background: '#000',\r\n partner: false\r\n },\r\n ],\r\n clientPortal: null\r\n },\r\n];\r\n\r\n\r\n\r\nexport const getSiteData = (id) => {\r\n const site = sites.find(x => x.id === id);\r\n if (site) {\r\n return site;\r\n }\r\n return null;\r\n}\r\n\r\nexport const getSiteLogo= (id) => {\r\n const site = sites.find(x => x.id === id);\r\n if (site) {\r\n return site.logo;\r\n }\r\n return null;\r\n}","import * as React from 'react';\r\nimport { styled, alpha } from '@mui/material/styles';\r\nimport AppBar from '@mui/material/AppBar';\r\nimport Box from '@mui/material/Box';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport InputBase from '@mui/material/InputBase';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport Badge from '@mui/material/Badge';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Menu from '@mui/material/Menu';\r\nimport WidgetsIcon from '@mui/icons-material/Widgets';\r\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\r\nimport NotificationsIcon from '@mui/icons-material/Notifications';\r\nimport ManageAccountsIcon from '@mui/icons-material/ManageAccounts';\r\nimport AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings';\r\nimport GroupAddIcon from '@mui/icons-material/GroupAdd';\r\nimport GroupsIcon from '@mui/icons-material/Groups';\r\nimport MoreIcon from '@mui/icons-material/MoreVert';\r\nimport FeedIcon from '@mui/icons-material/Feed';\r\nimport TimelineIcon from '@mui/icons-material/Timeline';\r\nimport LogoutIcon from '@mui/icons-material/Logout';\r\nimport LaunchIcon from '@mui/icons-material/Launch';\r\nimport PropTypes from 'prop-types';\r\nimport Switch from '@mui/material/Switch';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport SmsIcon from '@mui/icons-material/Sms';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport Typography from '@mui/material/Typography';\r\nimport { Divider } from '@mui/material';\r\n\r\nconst SearchIconWrapper = styled('div')(({ theme }) => ({\r\n padding: theme.spacing(0, 2),\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\nconst StyledInputBase = styled(InputBase)(({ theme }) => ({\r\n color: 'inherit',\r\n '& .MuiInputBase-input': {\r\n padding: theme.spacing(.5, .5, .5, 0),\r\n // vertical padding + font size from searchIcon\r\n paddingLeft: `calc(1em + ${theme.spacing(4)})`,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('md')]: {\r\n width: '20ch',\r\n },\r\n },\r\n}));\r\nPrimarySearchAppBar.propTypes = {\r\n user: PropTypes.object,\r\n setToken: PropTypes.func.isRequired\r\n};\r\n\r\nexport default function PrimarySearchAppBar({\r\n user,\r\n setToken,\r\n dark,\r\n setDark,\r\n handleChatOpen,\r\n searchCallback,\r\n handleProfileOpen,\r\n handleAffiliationsOpen,\r\n handleActivityOpen,\r\n handleNotificationsOpen,\r\n notificationCount,\r\n handleAccountOpen,\r\n invitationCount,\r\n handleInvitationsOpen,\r\n searchTerm,\r\n site,\r\n setTopic,\r\n navIndex,\r\n appOptions,\r\n isAdmin,\r\n handleShowAdmin,\r\n handleShowNewUploads\r\n}) {\r\n\r\n //Constants\r\n const menuId = 'primary-search-account-menu';\r\n const mobileMenuId = 'primary-search-account-menu-mobile';\r\n\r\n //State variables\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] = React.useState(null);\r\n const isMenuOpen = Boolean(anchorEl);\r\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\r\n\r\n //event handlers\r\n const handleProfileMenuOpen = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n const handleMobileMenuClose = () => {\r\n setMobileMoreAnchorEl(null);\r\n };\r\n const handleMenuClose = () => {\r\n setAnchorEl(null);\r\n handleMobileMenuClose();\r\n };\r\n const handleMobileMenuOpen = (event) => {\r\n setMobileMoreAnchorEl(event.currentTarget);\r\n };\r\n const handleGoToLivesphere = (event) => {\r\n window.open(\"https://mylivesphere.com\", '_blank');\r\n }\r\n const logoutUser = async () => {\r\n return fetch('home/logout', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n });\r\n }\r\n const handleLogout = async () => {\r\n handleMenuClose();\r\n await logoutUser();\r\n setToken('');\r\n localStorage.clear();\r\n }\r\n const handleChat = () => {\r\n handleMenuClose();\r\n handleChatOpen();\r\n }\r\n const handleProfile= () => {\r\n handleMenuClose();\r\n handleProfileOpen();\r\n }\r\n const handleAffiliations = () => {\r\n handleMenuClose();\r\n handleAffiliationsOpen();\r\n }\r\n const handleActivity = () => {\r\n handleMenuClose();\r\n handleActivityOpen();\r\n }\r\n const handleAccount = () => {\r\n handleMenuClose();\r\n handleAccountOpen();\r\n }\r\n const handleNotification = () => {\r\n handleMenuClose();\r\n handleNotificationsOpen();\r\n }\r\n const handleInvitation = () => {\r\n handleMenuClose();\r\n handleInvitationsOpen();\r\n }\r\n const handleSetDarkMode = () => {\r\n setDark(!dark);\r\n setAnchorEl(false);\r\n }\r\n const handleSearch = async (e) => {\r\n var term = e.target.value;\r\n searchCallback(term);\r\n\r\n }\r\n const onSearchKeyPress = (event) => {\r\n if (event.key === 'Enter') {\r\n handleSearch(event);\r\n }\r\n }\r\n const handleSetTopic = () => {\r\n handleMenuClose();\r\n setTopic(\"content\");\r\n }\r\n\r\n //render funcs\r\n const Search = styled('div')(({ theme }) => ({\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadiusSm,\r\n transition: \"1s\",\r\n backgroundColor: dark ? \"#000\" : \"#f0f0f0\",\r\n border: dark ? \"none\" : \"1px solid #dadada\",\r\n color: dark ? theme.palette.common.dimwhite : theme.palette.common.black,\r\n opactity: .9,\r\n '&:hover': {\r\n backgroundColor: dark ? \"#111\" : \"#e0e0e0\",\r\n opactity: .8,\r\n },\r\n marginRight: theme.spacing(2),\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(3),\r\n width: 'auto',\r\n },\r\n }));\r\n const renderMenu = () => {\r\n return (\r\n \r\n \r\n }\r\n label={Dark Mode}\r\n />\r\n \r\n \r\n {notificationCount > 0 &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n {notificationCount === 0 ? \"No Notifications\" : notificationCount + \" Notifications\"}\r\n\r\n\r\n \r\n }\r\n {isAdmin &&\r\n \r\n \r\n\r\n \r\n\r\n \r\n Manage Business\r\n\r\n\r\n \r\n }\r\n {isAdmin &&\r\n \r\n \r\n\r\n \r\n\r\n \r\n File Uploads\r\n\r\n\r\n \r\n }\r\n {/*{invitationCount > 0 &&*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* {invitationCount === 0 ? \"No Invitations\" : (invitationCount === 1 ? invitationCount + \" Invitation\" : invitationCount + \" Invitations\")}*/}\r\n {/* */}\r\n {/*}*/}\r\n {/*{(user) &&*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* {user.hasNewMessages ? \"New Messages\" : \"Conversations\"}*/}\r\n {/* */}\r\n {/*}*/}\r\n {/*{navIndex !== 1 &&*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* My Content*/}\r\n {/* */}\r\n {/*}*/}\r\n \r\n \r\n \r\n \r\n Profile\r\n \r\n\r\n {/*{site === null &&*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* Activity*/}\r\n {/* */}\r\n {/*}*/}\r\n \r\n \r\n \r\n \r\n Account\r\n \r\n\r\n \r\n \r\n \r\n \r\n Sign Out\r\n \r\n )\r\n } ;\r\n const renderMobileMenu = () => {\r\n return (\r\n\r\n \r\n \r\n }\r\n\r\n label=\"Dark Mode\"\r\n />\r\n \r\n {(notificationCount > 0) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n {notificationCount === 0 ? \"No Notifications\" : notificationCount + \" Notifications\"}\r\n\r\n\r\n \r\n }\r\n {isAdmin &&\r\n \r\n \r\n\r\n \r\n\r\n \r\n Manage Business\r\n\r\n\r\n \r\n }\r\n {isAdmin &&\r\n \r\n \r\n\r\n \r\n\r\n \r\n File Uploads\r\n\r\n\r\n \r\n }\r\n {/*{invitationCount > 0 &&*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* {invitationCount === 0 ? \"No Invitations\" : (invitationCount === 1 ? invitationCount + \" Invitation\" : invitationCount + \" Invitations\")}*/}\r\n {/* */}\r\n {/*}*/}\r\n {/*{(user) &&*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* {user.hasNewMessages ? \"New Messages\" : \"Conversations\"}*/}\r\n\r\n\r\n {/* */}\r\n {/*}*/}\r\n\r\n \r\n \r\n \r\n \r\n Profile\r\n \r\n \r\n \r\n \r\n \r\n Account\r\n \r\n\r\n {/*{site === null &&*/}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* Activity*/}\r\n {/* */}\r\n {/*}*/}\r\n\r\n \r\n \r\n \r\n \r\n Sign Out\r\n \r\n )\r\n } \r\n const renderAvatar = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n //const logo = () => {\r\n // return (\r\n // \r\n // \r\n \r\n // \r\n // )\r\n //} \r\n const logo = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n } \r\n const title = () => {\r\n let title = site.clientPortal.mainTitle;\r\n if (isAdmin) {\r\n title += \" Administration\";\r\n }\r\n return (\r\n \r\n {title}\r\n \r\n )\r\n }\r\n const searchBox = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n const gapSpacer = () => {\r\n return ()\r\n }\r\n\r\n return (\r\n <>\r\n {renderMobileMenu()}\r\n {renderMenu()}\r\n theme.zIndex.drawer + 1,\r\n opacity: 1,\r\n backgroundColor: (theme) => dark ? theme.palette.maintoolbar.dark : site.clientPortal.accentColor,\r\n borderBottom: theme => dark ? \"solid 1px #181818\" : \"none\",\r\n color: (theme) => dark ? theme.palette.common.dimwhite : theme.palette.common.dimwhite,\r\n }} >\r\n \r\n {logo()}\r\n \r\n {title()}\r\n {gapSpacer()}\r\n {site.clientPortal.search && searchBox()}\r\n \r\n \r\n \r\n {user ? renderAvatar() : }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//material ui\r\nimport Backdrop from '@mui/material/Backdrop';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Typography from '@mui/material/Typography';\r\nimport Stack from '@mui/material/Stack';\r\nimport Box from '@mui/material/Box';\r\n\r\nexport class Spin extends Component {\r\n\r\n\r\n //render funcs\r\n content = () => {\r\n return (\r\n <>\r\n {this.props.sub ?\r\n \r\n {this.props.message ?\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black\r\n }}>\r\n {this.props.message}\r\n \r\n this.props.color ?? theme.palette.secondary.main, alignSelf: \"center\" }} />\r\n \r\n :\r\n this.props.color ?? theme.palette.secondary.main, alignSelf: \"center\" }} size={this.props.tiny && 16} />\r\n }\r\n \r\n :\r\n theme.zIndex.drawer + 1 }}\r\n open={this.props.open}\r\n >\r\n {this.props.message ?\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n {this.props.message}\r\n \r\n this.props.color ?? theme.palette.secondary.main, alignSelf: \"center\" }} />\r\n \r\n :\r\n this.props.color ?? theme.palette.secondary.main, alignSelf: \"center\" }} />\r\n }\r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport Button from '@mui/material/Button';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\n\r\nimport FullscreenIcon from '@mui/icons-material/Fullscreen';\r\nimport CloseFullscreenIcon from '@mui/icons-material/CloseFullscreen';\r\nimport Box from '@mui/material/Box';\r\n\r\nexport class ModalDialog extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fullScreen: this.props.fullScreen ?? false,\r\n toggled: false,\r\n };\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (!this.state.toggled) {\r\n if (this.props.fullScreen !== this.state.fullScreen) {\r\n this.setState({ fullScreen: this.props.fullScreen });\r\n return;\r\n }\r\n }\r\n else {\r\n if (prevProps.fullScreen !== this.props.fullScreen) {\r\n this.setState({ fullScreen: this.props.fullScreen, toggled: false });\r\n }\r\n }\r\n }\r\n handleToggleFullScreen = () => {\r\n const fs = !this.state.fullScreen;\r\n this.setState({ fullScreen: !this.state.fullScreen, toggled: true });\r\n if (this.props.setFullScreen) {\r\n this.props.setFullScreen(fs);\r\n }\r\n this.forceUpdate();\r\n }\r\n closeButton = () => {\r\n return (\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.white }}>\r\n \r\n \r\n )\r\n }\r\n fullScreenButton = (fullScreen) => {\r\n return (\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.white }}>\r\n {(fullScreen === true) ?\r\n < CloseFullscreenIcon fontSize=\"medium\" />\r\n :\r\n\r\n < FullscreenIcon fontSize=\"medium\" />\r\n }\r\n \r\n )\r\n }\r\n editButton = () => {\r\n return (\r\n this.props.editModeActive ? \"blue\" : (this.props.dark ? theme.palette.common.white : theme.palette.common.white )}}>\r\n \r\n \r\n )\r\n }\r\n content = (fullScreen) => {\r\n return (\r\n this.props.dark ? theme.palette.backgroundModal.dark : theme.palette.backgroundModal.light,\r\n color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white,\r\n border: (!fullScreen && !this.props.noBorder) && (this.props.dark ? \"solid 2px #222\" : \"solid 1px #666\"),\r\n borderRadius: !fullScreen && \"6px\",\r\n padding: this.props.padding && this.props.padding,\r\n pb: { xs: this.props.fullScreen ? 7 : 0, lg: 0 },\r\n\r\n },\r\n elevation: this.props.dark ? 1 : 4,\r\n\r\n }}\r\n\r\n\r\n >\r\n {(this.props.title || !this.props.noUpperClose) &&\r\n this.props.fullScreen ? theme.palette.common.white : (this.props.dark ? theme.palette.common.white : theme.palette.common.black),\r\n py: 0.5,\r\n px:1,\r\n boxShadow: this.props.dark ? 0 : 8\r\n }}\r\n >\r\n \r\n \r\n {this.props.title && this.props.title}\r\n \r\n \r\n \r\n {(this.props.allowEdit && this.props.handleEdit) && this.editButton()}\r\n {this.props.toggleFullScreen && this.fullScreenButton(fullScreen)}\r\n \r\n \r\n {(!this.props.noUpperClose && this.props.handleClose) && this.closeButton()}\r\n \r\n \r\n \r\n }\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n \r\n }}>\r\n {this.props.subTitle &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack, fontSize: { xs: \".8rem\",sm:\".9rem\" } }}>\r\n {this.props.subTitle}\r\n \r\n }\r\n {this.props.subTitleContent && this.props.subTitleContent}\r\n {this.props.children}\r\n \r\n {!this.props.disableButtons &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black, p: this.props.containedButton ? \"8px 16px\" : 1 }}>\r\n {this.props.handleDelete &&\r\n this.props.containedButton ? \"white\" : (this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black) }}\r\n >\r\n {this.props.deleteLabel ?? \"Delete\"}\r\n \r\n }\r\n\r\n {(this.props.handleClose && this.props.noUpperClose) &&\r\n this.props.containedButton ? \"white\" : (this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black) }}\r\n >\r\n {this.props.closeLabel ?? \"Cancel\"}\r\n \r\n }\r\n\r\n {this.props.handleSave &&\r\n this.props.containedButton ? \"white\" : (this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black) }}\r\n >\r\n {this.props.saveLabel ?? \"Save\"}\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 return this.content(this.state.fullScreen);\r\n\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\n\r\n//Material UI\r\nimport InsertPhotoIcon from '@mui/icons-material/InsertPhoto';\r\nimport Dropzone from 'react-dropzone'\r\nimport AvatarEditor from 'react-avatar-editor'\r\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\r\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\r\nimport RotateRightIcon from '@mui/icons-material/RotateRight';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Box from '@mui/material/Box';\r\nimport Button from '@mui/material/Button';\r\nimport Stack from '@mui/material/Stack';\r\n\r\nexport class ProfileImageUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n processing: false,\r\n selectedFile: null,\r\n imgScale: 1.0,\r\n imgRotation: 0,\r\n\r\n }\r\n }\r\n setEditorRef = (editor) => (this.editor = editor);\r\n handleSavePhoto = async () => {\r\n\r\n // Select your input type file and store it in a variable\r\n const input = document.getElementById('filepic');\r\n const formData = new FormData();\r\n const canvas = await this.editor.getImageScaledToCanvas().toDataURL();\r\n const b64 = await fetch(canvas);\r\n const file = await b64.blob();\r\n\r\n\r\n let name = this.state.selectedFile.name;\r\n\r\n if (!name || name.length === 0) {\r\n name = \"image.png\";\r\n }\r\n formData.append('file', file, name);\r\n\r\n fetch('home/uploadprofileimage', {\r\n method: 'POST',\r\n body: formData\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n success => { }\r\n ).catch(\r\n error => console.log(error)\r\n );\r\n\r\n\r\n var reader = new FileReader();\r\n\r\n reader.onload = e => {\r\n const { result } = e.target;\r\n var base64result = result.split(',')[1];\r\n //base64 = base64result;\r\n this.props.handleSave(base64result);\r\n }\r\n\r\n reader.readAsDataURL(file);\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n updateStateForNewPhoto = (base64result) => {\r\n //Update State to display new photo\r\n const itemCount = this.state.itemCount + 1;\r\n this.setState({\r\n currentUpload: base64result,\r\n itemCount: itemCount\r\n });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n currentUpload: \"\",\r\n itemCount: 0\r\n })\r\n this.props.handleClose();\r\n }\r\n\r\n toggleProcessing = (status) => {\r\n if (status != null) {\r\n this.setState({ processing: status });\r\n }\r\n else {\r\n this.setState({ processing: !this.state.processing });\r\n } \r\n }\r\n handleDragOverDropZone = (e) => {\r\n e.currentTarget.classList.add(\"hoverdropzone\");\r\n }\r\n handleDragLeaveDropZone = (e) => {\r\n e.currentTarget.classList.remove(\"hoverdropzone\");\r\n }\r\n handleRotateImage = () => {\r\n var rot = parseInt(this.state.imgRotation) + 90;\r\n if (rot === 450) {\r\n rot = 0;\r\n }\r\n this.setState({ imgRotation: rot });\r\n }\r\n handleScaleUpImage = () => {\r\n var scale = parseFloat(this.state.imgScale);\r\n scale = scale + .1;\r\n this.setState({ imgScale: scale });\r\n }\r\n handleScaleDownImage = () => {\r\n var scale = parseFloat(this.state.imgScale);\r\n if (scale > .2) {\r\n scale = scale - .1;\r\n }\r\n this.setState({ imgScale: scale });\r\n }\r\n handleDrop = async (files) => {\r\n this.toggleProcessing(true);\r\n if (files) {\r\n var numAllowed = 1;\r\n for (var i = 0; i < numAllowed; i++) {\r\n var file = files[i];\r\n var extension = file.type;\r\n if (extension === \"image/jpeg\" || extension === \"image/jpg\" || extension === \"image/png\" || extension === \"image/bmp\") {\r\n this.setState({ selectedFile: file });\r\n }\r\n }\r\n }\r\n\r\n //clean up iu from any progress indicators, etc.\r\n var ele = document.getElementById(\"dropZone\");\r\n if (ele) ele.classList.remove(\"hoverdropzone\");\r\n this.toggleProcessing(false);\r\n }\r\n\r\n render() {\r\n\r\n\r\n return (\r\n \r\n \r\n {this.state.selectedFile ?\r\n <>\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite: theme.palette.secondary.main}} onClick={this.handleScaleUpImage} />\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.secondary.main }} onClick={this.handleScaleDownImage} />\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.secondary.main }} onClick={this.handleRotateImage} />\r\n \r\n \r\n \r\n :\r\n this.handleDrop(acceptedFiles)}\r\n onDragOver={this.handleDragOverDropZone}\r\n onDragLeave={this.handleDragLeaveDropZone}\r\n >\r\n {({ getRootProps, getInputProps }) => (\r\n \r\n \r\n
\r\n this.props.dark ? \"#bbb\" : \"#444\" }} style={{ fontSize: \"76px\" }} />\r\n
\r\n
\r\n )}\r\n \r\n }\r\n {this.state.selectedFile &&\r\n \r\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 function getBase64(file, cb) {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n cb(reader.result)\r\n };\r\n reader.onerror = function (error) {\r\n console.log('Error: ', error);\r\n };\r\n}\r\nexport function fileToBase64(file) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => {\r\n let encoded = reader.result.toString().replace(/^data:(.*,)?/, '');\r\n if ((encoded.length % 4) > 0) {\r\n encoded += '='.repeat(4 - (encoded.length % 4));\r\n }\r\n resolve(encoded);\r\n };\r\n reader.onerror = error => reject(error);\r\n });\r\n}\r\nexport function blobToBase64(blob) {\r\n return new Promise((resolve, _) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => resolve(reader.result);\r\n reader.readAsDataURL(blob);\r\n });\r\n}\r\n\r\nexport function b64toBlob(b64Data, contentType = '', sliceSize = 512) {\r\n const byteCharacters = atob(b64Data);\r\n const byteArrays = [];\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n\r\n const blob = new Blob(byteArrays, { type: contentType });\r\n return blob;\r\n}\r\n\r\nexport async function getAsByteArray(file) {\r\n return new Uint8Array(await readFile(file))\r\n}\r\n\r\nexport function readFile(file) {\r\n return new Promise((resolve, reject) => {\r\n // Create file reader\r\n let reader = new FileReader()\r\n\r\n // Register event listeners\r\n reader.addEventListener(\"loadend\", e => resolve(e.target.result))\r\n reader.addEventListener(\"error\", reject)\r\n\r\n // Read file\r\n reader.readAsArrayBuffer(file)\r\n })\r\n}\r\n\r\nexport function formatPhoneNumberInline(value) {\r\n // if input value is falsy eg if the user deletes the input, then just return\r\n if (!value) return value;\r\n\r\n // clean the input for any non-digit values.\r\n const phoneNumber = value.replace(/[^\\d]/g, \"\");\r\n\r\n // phoneNumberLength is used to know when to apply our formatting for the phone number\r\n const phoneNumberLength = phoneNumber.length;\r\n\r\n // we need to return the value with no formatting if its less then four digits\r\n // this is to avoid weird behavior that occurs if you format the area code to early\r\n\r\n if (phoneNumberLength < 4) return phoneNumber;\r\n\r\n // if phoneNumberLength is greater than 4 and less the 7 we start to return\r\n // the formatted number\r\n if (phoneNumberLength < 7) {\r\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`;\r\n }\r\n\r\n // finally, if the phoneNumberLength is greater then seven, we add the last\r\n // bit of formatting and return it.\r\n return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(\r\n 3,\r\n 6\r\n )}-${phoneNumber.slice(6, 10)}`;\r\n}\r\n\r\nexport function handleNumbersOnly(e){\r\n e.target.value = e.target.value.replace(/[^0-9]/g, '').replace(/(\\..*)\\./g, '$1');\r\n}\r\n\r\nexport function isValidURL(str){\r\n var regexp = /^(?:(?:https?|ftp):\\/\\/)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:\\/\\S*)?$/;\r\n if (regexp.test(str)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\nexport function validateEmail(email) {\r\n let errors = '';\r\n let isValid = true;\r\n var pattern = new RegExp(/^((\"[\\w-\\s]+\")|([\\w-]+(?:\\.[\\w-]+)*)|(\"[\\w-\\s]+\")([\\w-]+(?:\\.[\\w-]+)*))(@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$)|(@\\[?((25[0-5]\\.|2[0-4][0-9]\\.|1[0-9]{2}\\.|[0-9]{1,2}\\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\]?$)/i);\r\n if (!pattern.test(email)) {\r\n isValid = false;\r\n errors = \"Please enter valid email address.\";\r\n }\r\n\r\n return isValid;\r\n}\r\nexport function validateMoney(val) {\r\n let errors = '';\r\n let isValid = true;\r\n var pattern = new RegExp(/(?=.*?\\d)^\\$?(([1-9]\\d{0,2}(,\\d{3})*)|\\d+)?(\\.\\d{1,2})?$/i);\r\n if (!pattern.test(val)) {\r\n isValid = false;\r\n errors = \"Please enter a valid currency amount.\";\r\n }\r\n\r\n return isValid;\r\n}\r\nexport function validateZip(val) {\r\n const re = /^[0-9\\b]+$/;\r\n return re.test(val);\r\n}\r\n\r\nexport const getIdxFromID = (arr, id) => {\r\n if (arr) {\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i].id === id) {\r\n return i;\r\n }\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function capitalize(str) {\r\n const lower = str.toLowerCase();\r\n return str.charAt(0).toUpperCase() + lower.slice(1);\r\n}\r\nexport async function getEnums() {\r\n var url = \"home/getenumeratedlists\";\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport function removeFromArray(arr, value) {\r\n var index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n }\r\n return arr;\r\n}\r\nexport function moveInArray(arr, old_index, new_index){\r\n if (new_index >= arr.length) {\r\n var k = new_index - arr.length + 1;\r\n while (k--) {\r\n arr.push(undefined);\r\n }\r\n }\r\n arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);\r\n}\r\n\r\nexport function getVideoCover(file, seekTo = 0.0) {\r\n console.log(\"getting video cover for file: \", file);\r\n return new Promise((resolve, reject) => {\r\n // load the file to a video player\r\n const videoPlayer = document.createElement('video');\r\n videoPlayer.setAttribute('src', URL.createObjectURL(file));\r\n videoPlayer.load();\r\n videoPlayer.addEventListener('error', (ex) => {\r\n reject(\"error when loading video file\", ex);\r\n });\r\n // load metadata of the video to get video duration and dimensions\r\n videoPlayer.addEventListener('loadedmetadata', () => {\r\n // seek to user defined timestamp (in seconds) if possible\r\n if (videoPlayer.duration < seekTo) {\r\n reject(\"video is too short.\");\r\n return;\r\n }\r\n // delay seeking or else 'seeked' event won't fire on Safari\r\n setTimeout(() => {\r\n videoPlayer.currentTime = seekTo;\r\n }, 200);\r\n // extract video thumbnail once seeking is complete\r\n videoPlayer.addEventListener('seeked', () => {\r\n console.log('video is now paused at %ss.', seekTo);\r\n // define a canvas to have the same dimension as the video\r\n const canvas = document.createElement(\"canvas\");\r\n canvas.width = videoPlayer.videoWidth;\r\n canvas.height = videoPlayer.videoHeight;\r\n // draw the video frame to canvas\r\n const ctx = canvas.getContext(\"2d\");\r\n ctx.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);\r\n // return the canvas image as a blob\r\n ctx.canvas.toBlob(\r\n blob => {\r\n resolve(blob);\r\n }\r\n ,\r\n /// \"image/jpeg\",\r\n // 0.75 /* quality */\r\n );\r\n });\r\n });\r\n });\r\n}","import React, { PureComponent } from 'react';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Switch from '@mui/material/Switch';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport { removePublic, setPublic } from '../../DataServices/UserService';\r\nimport { removeFromArray } from '../../DataServices/Utility';\r\n\r\nexport class PublicAttribute extends PureComponent {\r\n\r\n //event handlers\r\n handleSetPublic = async (attr, val) => {\r\n if (val === true) {\r\n const profile = this.props.profile;\r\n profile.publicAttributes.push(attr);\r\n this.props.updateData(\"profile\", profile);\r\n await setPublic(attr);\r\n this.forceUpdate();\r\n }\r\n else {\r\n const profile = this.props.profile;\r\n removeFromArray(profile.publicAttributes, attr);\r\n this.props.updateData(\"profile\", profile);\r\n await removePublic(attr);\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n //render funcs\r\n content = () => {\r\n if (this.props.appIdentifier === \"LS\" && this.props.profile && this.props.profile.publicAttributes) {\r\n let val = false;\r\n if (this.props.profile.publicAttributes.find((x) => x === this.props.attr)) {\r\n val = true;\r\n }\r\n\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black\r\n }}\r\n control={ this.handleSetPublic(this.props.attr, e.target.checked)} color=\"secondary\" size=\"small\" />}\r\n label={\r\n \r\n {val ? \"Public\" : \"Private\"}\r\n \r\n }\r\n />\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport Typography from '@mui/material/Typography';\r\nimport Stack from '@mui/material/Stack';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport SaveIcon from '@mui/icons-material/Save';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport { PublicAttribute } from './PublicAttribute';\r\n\r\nexport class Section extends Component {\r\n\r\n buttonOffset = () => {\r\n return (\r\n \r\n )\r\n }\r\n sliderOffset = () => {\r\n return (\r\n \r\n )\r\n }\r\n content = () => {\r\n return (\r\n this.props.transparent ? \"transparent\" : (this.props.dark ? theme.palette.post.dark : \"#fff\"),\r\n height: \"100%\",\r\n border: this.props.dark ? \"none\" : \"none\",\r\n width: this.props.fullWidth && \"100%\",\r\n borderRadius: this.props.flat ? \"0px\" : { xs: 0, sm: 1},\r\n boxShadow: this.props.flat ? \"none\" : (this.props.dark && \"none\"),\r\n }}\r\n style={{\r\n marginBottom: this.props.padBottom && \"12px\"\r\n }} elevation={this.props.elevation ? this.props.elevation : (this.props.dark ? 0 : 4)}>\r\n \r\n {this.props.title &&\r\n \r\n {this.props.handleEdit && this.buttonOffset()}\r\n {this.props.handleSave && this.buttonOffset()}\r\n {this.props.handleAdd && this.buttonOffset()}\r\n {this.props.publicAttribute && }\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black,\r\n textAlign: \"center\",\r\n width: \"100%\",\r\n p: { xs: 0, sm: 1 },\r\n }}>{this.props.title ? this.props.title : \"\"}\r\n {this.props.publicAttribute && this.sliderOffset()}\r\n {this.props.handleAdd &&\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }} />\r\n \r\n \r\n }\r\n {(this.props.handleSave && this.props.enableSave) &&\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }} />\r\n \r\n }\r\n {this.props.handleEdit &&\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }} />\r\n \r\n \r\n }\r\n \r\n }\r\n \r\n \r\n {this.props.children && this.props.children}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n //main compontnet render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Box from '@mui/material/Box';\r\nimport Grid from '@mui/material/Grid';\r\n\r\nexport class SectionGrid extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n return ( \r\n \r\n \r\n {this.props.children.length > 1 ? this.props.children.map((item, index) => {\r\n return (\r\n \r\n {item}\r\n \r\n\r\n )\r\n\r\n }) :\r\n\r\n \r\n {this.props.children}\r\n \r\n }\r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Stack from '@mui/material/Stack';\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\n\r\n\r\nexport class SectionFieldGroup extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n return (\r\n this.props.dark ? \"transparent\" : \"rgba(255,255,255,.5)\",\r\n mb: 1,\r\n mt: this.props.topMargin ? 1 : 0,\r\n borderRadius: { xs: 0, sm: 1 },\r\n }}>\r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Select from '@mui/material/Select';\r\nimport InputLabel from '@mui/material/InputLabel';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport FormControl from '@mui/material/FormControl';\r\n\r\nexport class SelectList extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n return (\r\n \r\n {this.props.label &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimwhite,\r\n fontSize: \"1rem\"\r\n }}\r\n >\r\n {this.props.label}\r\n \r\n }\r\n this.props.onChange(e.target.value)}\r\n sx={{\r\n color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimwhite,\r\n fontSize: \"1rem\"\r\n }}\r\n inputProps={{\r\n required: this.props.required,\r\n id: \"select-\" + this.props.label,\r\n style: {\r\n color: '#999', fontSize: \"1rem\"\r\n }\r\n }}\r\n MenuProps={{\r\n sx: {\r\n color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimwhite,\r\n fontSize: \"1rem\",\r\n maxHeight: \"300px\",\r\n borderRadius: 1\r\n },\r\n MenuListProps: {\r\n dense: true,\r\n sx: {\r\n backgroundColor: (theme) => this.props.dark ? theme.palette.backgroundMenu.dark : theme.palette.backgroundMenu.dark,\r\n border: (theme) => this.props.dark ? theme.palette.borderMenu.dark : theme.palette.borderMenu.dark,\r\n color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimwhite,\r\n fontSize: \"1rem\" \r\n }\r\n }\r\n }}\r\n >\r\n {this.props.listItems.map((item, index) =>\r\n {item.label}\r\n )}\r\n {this.props.allowNull &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport TextField from '@mui/material/TextField';\r\n\r\nexport class TextInput extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n fontSize: \".8rem\",\r\n } }}\r\n label={this.props.label}\r\n type={this.props.type ?? \"text\"}\r\n fullWidth\r\n variant={this.props.variant ?? \"standard\"}\r\n defaultValue={this.props.defaultValue && this.props.defaultValue}\r\n value={this.props.value && this.props.value}\r\n InputProps={{\r\n ...this.props.InputProps,\r\n sx: {\r\n color: (theme) => this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n fontSize: \".8rem\",\r\n }\r\n }}\r\n InputLabelProps={{ style: { color: this.props.dark ? \"#ccc\" : \"#555\", fontSize: \".8rem\" } }}\r\n onBlur={(e) => this.props.onBlur && this.props.onBlur(e.target.value)}\r\n onChange={(e) => this.props.onChange && this.props.onChange(e.target.value)}\r\n onKeyPress={this.props.onKeyPress && this.props.onKeyPress}\r\n autoFocus={this.props.autoFocus}\r\n required={this.props.required}\r\n />\r\n\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { TextInput } from './TextInput';\r\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\r\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\r\nimport { DatePicker } from '@mui/x-date-pickers/DatePicker';\r\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\r\nimport Box from '@mui/material/Box';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\r\n\r\nexport class DateSelector extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showPicker: false\r\n }\r\n }\r\n\r\n typeEntry = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black, }}\r\n onChange={(newValue) => this.props.onChange(new Date(newValue).toLocaleDateString())}\r\n renderInput={(params) =>\r\n \r\n }\r\n />\r\n this.setState({ showPicker: !this.state.showPicker })}>\r\n this.props.dark ? theme.palette.common.dimwhite : undefined }} />\r\n \r\n \r\n )\r\n }\r\n\r\n calendarView = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black, }}\r\n onChange={(newValue) => this.props.onChange(new Date(newValue).toLocaleDateString())}\r\n onAccept={() => this.setState({ showPicker: false })}\r\n renderInput={(params) =>\r\n \r\n\r\n }\r\n />\r\n \r\n )\r\n }\r\n render() {\r\n return (\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n mt: 0.5,\r\n }}\r\n className={this.props.dark ? \"dark\" : \"light\"}>\r\n \r\n {this.typeEntry()}\r\n {this.calendarView()}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Modules\r\nimport { ProfileImageUploader } from './ProfileImageUploader';\r\nimport { ModalDialog } from '../Utilities/ModalDialog';\r\nimport { Section } from '../Utilities/Section';\r\nimport { SectionGrid } from '../Utilities/SectionGrid';\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\nimport { SelectList } from '../Utilities/SelectList';\r\nimport { DateSelector } from '../Utilities/DateSelector';\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { PublicAttribute } from '../Utilities/PublicAttribute';\r\n\r\n//Material UI\r\nimport Button from '@mui/material/Button';\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport InsertPhotoIcon from '@mui/icons-material/InsertPhoto';\r\nimport Tooltip from '@mui/material/Tooltip';\r\n\r\n//Data Services\r\nimport { saveName, saveHeadline, saveImportantDate, saveTrait } from '../../DataServices/UserService'\r\n\r\nexport class ProfileBasic extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n nameChanged: false,\r\n firstName: this.props.profile.firstName,\r\n middleName: this.props.profile.middleName,\r\n lastName: this.props.profile.lastName,\r\n headline: this.props.profile.demographics.personalHeadline,\r\n dob: this.props.profile.importantDates.dob,\r\n wedding: this.props.profile.importantDates.weddingAnniversary,\r\n job: this.props.profile.importantDates.jobAnniversary,\r\n showPhotoUploader: false,\r\n showConfirmDelete: false\r\n }\r\n }\r\n\r\n //event handlers\r\n handleUpdateProfile = (b64) => {\r\n this.setState({ showPhotoUploader: false });\r\n this.props.handleUpdateProfile(b64);\r\n }\r\n hasNameChanged = () => {\r\n var first = document.getElementById(\"firstName\").value;\r\n var middle = document.getElementById(\"middleName\").value;\r\n var last = document.getElementById(\"lastName\").value;\r\n //var headline = document.getElementById(\"headline\").value;\r\n if (first !== this.props.profile.firstName ||\r\n middle !== this.props.profile.middleName ||\r\n last !== this.props.profile.lastName ) {\r\n this.setState({\r\n nameChanged: true,\r\n firstName: first,\r\n middleName: middle,\r\n lastName: last,\r\n\r\n });\r\n }\r\n else {\r\n this.setState({\r\n nameChanged: false,\r\n firstName: first,\r\n middleName: middle,\r\n lastName: last,\r\n\r\n });\r\n }\r\n }\r\n saveName = async () => {\r\n await saveName(this.state.firstName, this.state.middleName, this.state.lastName);\r\n //await saveHeadline(this.state.headline);\r\n this.setState({ nameChanged: false });\r\n }\r\n handleMyDOBChange = async (e) => {\r\n this.props.updateMyDob(e);\r\n await saveImportantDate(0, e);\r\n }\r\n handleWeddingChange = async (e) => {\r\n this.props.updateMyWeddingAnniversary(e);\r\n await saveImportantDate(1, e);\r\n }\r\n handleJobChange = async (e) => {\r\n this.props.updateMyJobAnniversary(e);\r\n await saveImportantDate(2, e);\r\n }\r\n handleTypeChange = (e) => {\r\n this.setState({ typeValue: e.target.value });\r\n }\r\n handleGenderChange = (e) => {\r\n this.setState({ genderValue: e.target.value });\r\n }\r\n handleDOBChange = (e) => {\r\n this.setState({ dobValue: new Date(e).toLocaleDateString() });\r\n }\r\n handleSexChange = async (e) => {\r\n this.props.handlePersonalChange(\"sex\", e.target.value);\r\n await saveTrait(2, e.target.value);\r\n }\r\n handleGenderChange = async (e) => {\r\n this.props.handlePersonalChange(\"gender\", e.target.value);\r\n await saveTrait(0, e.target.value);\r\n }\r\n handleRelationshipChange = async (e) => {\r\n this.props.handlePersonalChange(\"relationship\", e.target.value);\r\n await saveTrait(1, e.target.value);\r\n }\r\n handlePoliticsChange = async (e) => {\r\n this.props.handlePersonalChange(\"politics\", e.target.value);\r\n await saveTrait(3, e.target.value);\r\n }\r\n handleReligionChange = async (e) => {\r\n this.props.handlePersonalChange(\"religion\", e.target.value);\r\n await saveTrait(4, e.target.value);\r\n }\r\n handleSocialChange = async (e) => {\r\n this.props.handlePersonalChange(\"social\", e.target.value);\r\n await saveTrait(5, e.target.value);\r\n }\r\n\r\n\r\n\r\n render() {\r\n\r\n const ProfilePic = () => {\r\n return (\r\n
\r\n
\r\n \r\n {this.props.profile.imageB64 ?\r\n this.setState({ showPhotoUploader: true })}\r\n />\r\n :\r\n \r\n }\r\n \r\n\r\n
\r\n
)\r\n } \r\n\r\n const ImportantDates = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
)\r\n } \r\n\r\n const NameHeadline = () => {\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 const PersonalInfo = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
)\r\n } \r\n\r\n const profileImageUploader = () => {\r\n return (\r\n this.setState({ showPhotoUploader: false })}\r\n fullScreen={this.props.fullScreen}\r\n \r\n />\r\n )\r\n }\r\n\r\n const deleteConfirmation = () => {\r\n return (\r\n this.setState({ showConfirmDelete: false })}\r\n handleSave={this.handleDelete}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" />\r\n )\r\n } \r\n \r\n return (\r\n <>\r\n \r\n {ProfilePic()}\r\n {NameHeadline()}\r\n {/*{this.props.appIdentifier === 'LS' && ImportantDates()}*/}\r\n {/*{this.props.appIdentifier === 'LS' && PersonalInfo()}*/}\r\n \r\n {profileImageUploader()}\r\n {deleteConfirmation()}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport Chip from '@mui/material/Chip';\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport StarIcon from '@mui/icons-material/Star';\r\nimport Typography from '@mui/material/Typography';\r\nimport Tooltip from '@mui/material/Tooltip';\r\n\r\nexport class SectionItem extends Component {\r\n content = () => {\r\n return (\r\n this.props.dark ? (this.props.selected ? theme.palette.selectedItem.dark : theme.palette.item.dark) : (this.props.selected ? theme.palette.selectedItem.light : theme.palette.item.light),\r\n mb:1,\r\n border:\"none\",\r\n borderRadius: {xs : 0, sm:1}\r\n }}>\r\n \r\n \r\n \r\n {this.props.primaryChipLabel &&\r\n \r\n }\r\n \r\n {this.props.primaryContent &&\r\n this.props.dark?theme.palette.common.dimwhite: theme.palette.common.black }}>\r\n {this.props.primaryContent}\r\n \r\n }\r\n \r\n {this.props.isPrimary &&\r\n }\r\n label=\"Primary\"\r\n variant=\"outlined\"\r\n />\r\n }\r\n \r\n\r\n {this.props.children && this.props.children}\r\n \r\n \r\n {this.props.handleEdit &&\r\n \r\n this.props.handleEdit && this.props.handleEdit(this.props.itemID, this.props.index)}>\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n \r\n \r\n }\r\n {this.props.handleDelete &&\r\n \r\n this.props.handleDelete && this.props.handleDelete(this.props.itemID, this.props.index)}>\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n\r\n );\r\n }\r\n\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from '../Utilities/ModalDialog';\r\nimport { Section } from '../Utilities/Section';\r\nimport { SectionItem } from '../Utilities/SectionItem';\r\nimport { SectionGrid } from '../Utilities/SectionGrid';\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\nimport { SelectList } from '../Utilities/SelectList';\r\nimport { DateSelector } from '../Utilities/DateSelector';\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { PublicAttribute } from '../Utilities/PublicAttribute';\r\n\r\n//Material UI\r\nimport Button from '@mui/material/Button';\r\n\r\n//Data Services\r\nimport { addAddress, editAddress, deleteEmail, deletePhone, deleteAddress, deleteFamily, addEmail, editEmail, addPhone, editPhone, addFamily, editFamily, setPublic, removePublic } from '../../DataServices/UserService'\r\nimport { formatPhoneNumberInline, validateEmail, validateZip } from '../../DataServices/Utility'\r\n\r\n\r\nexport class ProfileContacts extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n\r\n }\r\n }\r\n\r\n\r\n handleDeleteEmail = (id, idx) => {\r\n this.setState({\r\n deleteType: \"Email\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDelete: true\r\n })\r\n }\r\n\r\n handleEditEmail = (id, idx) => {\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n emailValue: this.props.profile.demographics.emailAddresses[idx].address,\r\n typeValue: this.props.profile.demographics.emailAddresses[idx].emailType,\r\n showEmailEditor: true\r\n })\r\n }\r\n\r\n handleAddEmail = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n emailValue: \"\",\r\n showEmailEditor: true\r\n })\r\n }\r\n\r\n handleDeletePhone = (id, idx) => {\r\n this.setState({\r\n deleteType: \"Phone\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDelete: true\r\n })\r\n }\r\n\r\n handleEditPhone = (id, idx) => {\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n phoneValue: formatPhoneNumberInline(this.props.profile.demographics.phoneNumbers[idx].number),\r\n typeValue: this.props.profile.demographics.phoneNumbers[idx].phoneType,\r\n showPhoneEditor: true\r\n })\r\n }\r\n\r\n handleAddPhone = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n phoneValue: \"\",\r\n showPhoneEditor: true\r\n })\r\n }\r\n\r\n handleDeleteAddress = (id, idx) => {\r\n this.setState({\r\n deleteType: \"Address\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDelete: true\r\n })\r\n }\r\n\r\n handleAddAddress = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n streetValue: \"\",\r\n cityValue: \"\",\r\n stateValue: \"\",\r\n zipValue: \"\",\r\n typeValue: \"\",\r\n showAddressEditor: true\r\n })\r\n }\r\n\r\n handleEditAddress = (id, idx) => {\r\n const st = this.props.profile.stateList.find((x) => x.label === this.props.profile.demographics.addresses[idx].state);\r\n var state = 0\r\n if (st) {\r\n state = st.value;\r\n }\r\n\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n streetValue: this.props.profile.demographics.addresses[idx].street,\r\n cityValue: this.props.profile.demographics.addresses[idx].city,\r\n stateValue: state,\r\n zipValue: this.props.profile.demographics.addresses[idx].zip,\r\n typeValue: this.props.profile.demographics.addresses[idx].type,\r\n showAddressEditor: true\r\n })\r\n }\r\n\r\n handleSaveAddress = async () => {\r\n const street = document.getElementById(\"fldStreet\").value.trim();\r\n const city = document.getElementById(\"fldCity\").value.trim();\r\n const state = this.props.profile.stateList.find((x) => x.value === this.state.stateValue).label;\r\n const zip = document.getElementById(\"fldZip\").value.trim();\r\n const country = \"USA\";\r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (street && city && state && zip) {\r\n var primary = false;\r\n var type = this.state.typeValue; \r\n const id = await addAddress(type, street, city, state, zip, country, primary);\r\n if (id) {\r\n const address = { id: id, street: street, city: city, state: state, zip: zip, county: country, type: type, primary: false };\r\n this.props.profile.demographics.addresses.push(address);\r\n this.setState({ showAddressEditor: false });\r\n }\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (street && city && state && zip) {\r\n type = this.state.typeValue;\r\n primary = this.props.profile.demographics.addresses[idx].primary;\r\n await editAddress(id, type, street, city, state, zip, country, primary);\r\n const addr = { id: id, street: street, city: city, state: state, zip: zip, county: country, type: type, primary: primary };\r\n this.props.updateAddress(idx, addr);\r\n this.setState({ showAddressEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDelete = async () => {\r\n if (this.state.deleteType === \"Email\") {\r\n this.props.deleteEmail(this.state.selectedIDX);\r\n await deleteEmail(this.state.selectedID);\r\n }\r\n if (this.state.deleteType === \"Phone\") {\r\n this.props.deletePhone(this.state.selectedIDX);\r\n await deletePhone(this.state.selectedID);\r\n }\r\n if (this.state.deleteType === \"Address\") {\r\n this.props.deleteAddress(this.state.selectedIDX);\r\n await deleteAddress(this.state.selectedID);\r\n }\r\n if (this.state.deleteType === \"Family\") {\r\n this.props.profile.familyMembers.splice(this.state.selectedIDX, 1);\r\n await deleteFamily(this.state.selectedID);\r\n }\r\n\r\n this.setState({\r\n showConfirmDelete: false,\r\n deleteType: \"\",\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n })\r\n }\r\n\r\n handleSaveEmail = async () => {\r\n const email = document.getElementById(\"fldEmailAddress\").value;\r\n if (this.state.editMode !== \"Edit\") {\r\n if (email && email.length > 0 && validateEmail(email)) {\r\n var primary = false;\r\n var type = this.state.typeValue;\r\n const id = await addEmail(type, email, primary);\r\n if (id) {\r\n const eml = { id: id, address: email, emailType: 0, primary: false };\r\n this.props.profile.demographics.emailAddresses.push(eml);\r\n this.setState({ showEmailEditor: false });\r\n }\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (email && email.length > 0 && validateEmail(email)) {\r\n type = this.state.typeValue;\r\n primary = this.props.profile.demographics.emailAddresses[idx].primary;\r\n await editEmail(id, type, email, primary);\r\n this.props.updateEmail(idx, email, type);\r\n this.setState({ showEmailEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleSavePhone = async () => {\r\n const number = document.getElementById(\"fldPhoneNumber\").value;\r\n if (this.state.editMode !== \"Edit\") {\r\n if (number && number.length > 0) {\r\n var primary = false;\r\n var type = this.state.typeValue;\r\n const id = await addPhone(type, number, primary);\r\n if (id) {\r\n const phone = { id: id, number: number, phoneType: 0, primary: false };\r\n this.props.profile.demographics.phoneNumbers.push(phone);\r\n this.setState({ showPhoneEditor: false });\r\n }\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (number && number.length > 0) {\r\n type = this.state.typeValue;\r\n primary = this.props.profile.demographics.phoneNumbers[idx].primary;\r\n await editPhone(id, type, number, primary);\r\n this.props.updatePhone(idx, number, type);\r\n this.setState({ showPhoneEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handlePhoneChange = (e) => {\r\n const formattedVal = formatPhoneNumberInline(e.target.value);\r\n e.target.value = formattedVal;\r\n }\r\n\r\n handleStateChange = (e) => {\r\n this.setState({ stateValue: e.target.value });\r\n }\r\n\r\n handleNewZipChange = (e) => {\r\n if (e.target.value === '' || validateZip(e.target.value)) {\r\n this.setState({ zipValue: e.target.value })\r\n }\r\n };\r\n\r\n handleTypeChange = (e) => {\r\n this.setState({ typeValue: e.target.value });\r\n }\r\n handleDOBChange = (e) => {\r\n\r\n this.setState({ dobValue: new Date(e).toLocaleDateString() });\r\n\r\n }\r\n handleDeleteFamily = (id, idx) => {\r\n this.setState({\r\n deleteType: \"Family\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDelete: true\r\n })\r\n }\r\n\r\n handleAddFamily = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n firstNameValue: \"\",\r\n middleNameValue: \"\",\r\n lastNameValue: \"\",\r\n typeValue: 0,\r\n genderValue: 0,\r\n dobValue: new Date(),\r\n showFamilyEditor: true\r\n })\r\n }\r\n\r\n handleEditFamily = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n firstNameValue: this.props.profile.familyMembers[idx].firstName,\r\n middleNameValue: this.props.profile.familyMembers[idx].middleName,\r\n lastNameValue: this.props.profile.familyMembers[idx].lastName,\r\n typeValue: this.props.profile.familyMembers.[idx].type,\r\n genderValue: this.props.profile.familyMembers.[idx].gender,\r\n dobValue: this.props.profile.familyMembers[idx].dob,\r\n showFamilyEditor: true\r\n })\r\n }\r\n\r\n handleSaveFamily = async () => {\r\n const first = document.getElementById(\"fldFirstName\").value.trim();\r\n const middle = document.getElementById(\"fldMiddleName\").value.trim() ?? \"\";\r\n const last = document.getElementById(\"fldLastName\").value.trim() ?? \"\";\r\n const type = this.state.typeValue;\r\n const gender = this.state.genderValue;\r\n const dob = this.state.dobValue;\r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (first && last) {\r\n const id = await addFamily(first, middle, last, gender, type, dob);\r\n if (id) {\r\n const fam = { id: id, firstName: first, middleName: middle, lastName: last, type: type, gender: gender, dob: dob };\r\n this.props.profile.familyMembers.push(fam);\r\n this.setState({ showFamilyEditor: false });\r\n }\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (first && last) {\r\n await editFamily(id, first, middle, last, gender, type, dob);\r\n const fam2 = { id: id, firstName: first, middleName: middle, lastName: last, type: type, gender: gender, dob: dob };\r\n this.props.updateFamily(idx, fam2);\r\n this.setState({ showFamilyEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n\r\n render() {\r\n\r\n const phoneFormat = (str) => {\r\n //Filter only numbers from the input\r\n let cleaned = ('' + str).replace(/\\D/g, '');\r\n\r\n //Check if the input is of correct length\r\n let match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n\r\n if (match) {\r\n return '(' + match[1] + ') ' + match[2] + '-' + match[3]\r\n };\r\n\r\n return null\r\n }\r\n const emailItem = (email, index) => {\r\n return (\r\n x.value === email.emailType).label}\r\n primaryContent={email.address}\r\n isPrimary={email.primary}\r\n handleEdit={this.handleEditEmail}\r\n handleDelete={this.handleDeleteEmail}\r\n >\r\n \r\n \r\n\r\n )\r\n }\r\n const phoneItem = (phone, index) => {\r\n return (\r\n x.value === phone.phoneType).label}\r\n primaryContent={phoneFormat(phone.number)}\r\n isPrimary={phone.primary}\r\n handleEdit={this.handleEditPhone}\r\n handleDelete={this.handleDeletePhone}\r\n >\r\n \r\n \r\n )\r\n }\r\n const addressItem = (address, index) => {\r\n return (\r\n x.value === address.type).label}\r\n primaryContent={<>{address.street}
{address.city + \", \" + address.state + \" \" + address.zip}}\r\n isPrimary={address.primary}\r\n handleEdit={this.handleEditAddress}\r\n handleDelete={this.handleDeleteAddress}\r\n >\r\n \r\n \r\n )\r\n }\r\n const familyItem = (family, index) => {\r\n return (\r\n x.value === family.type).label}\r\n primaryContent={family.firstName + \" \" + family.lastName}\r\n handleEdit={this.handleEditFamily}\r\n handleDelete={this.handleDeleteFamily}\r\n >\r\n \r\n \r\n )\r\n }\r\n const Emails = (\r\n
0 && this.handleAddEmail} {...this.props} publicAttribute=\"email\">\r\n {this.props.profile.demographics.emailAddresses.length > 0\r\n ?\r\n this.props.profile.demographics.emailAddresses.map((email, index) => emailItem(email, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
\r\n )\r\n const Phones = (\r\n
0 && this.handleAddPhone} {...this.props} publicAttribute=\"phone\">\r\n {this.props.profile.demographics.phoneNumbers.length > 0\r\n ?\r\n this.props.profile.demographics.phoneNumbers.map((phone, index) => phoneItem(phone, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
\r\n )\r\n const Addresses = (\r\n
0 && this.handleAddAddress} {...this.props} publicAttribute=\"address\">\r\n {this.props.profile.demographics.addresses.length > 0 ?\r\n this.props.profile.demographics.addresses.map((address, index) => addressItem(address, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
\r\n )\r\n\r\n\r\n const Family = (\r\n
0 && this.handleAddFamily} {...this.props} publicAttribute=\"family\">\r\n {this.props.profile.familyMembers.length > 0 ?\r\n this.props.profile.familyMembers.map((fam, index) => familyItem(fam, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n\r\n const deleteConfirmation = ( this.setState({ showConfirmDelete: false })}\r\n handleSave={this.handleDelete}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" />)\r\n const emailEditor = (\r\n this.setState({ showEmailEditor: false })}\r\n handleSave={this.handleSaveEmail}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )\r\n const phoneEditor = (\r\n this.setState({ showPhoneEditor: false })}\r\n handleSave={this.handleSavePhone}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )\r\n const addressEditor = (\r\n this.setState({ showAddressEditor: false })}\r\n handleSave={this.handleSaveAddress}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n const familyEditor = (\r\n this.setState({ showFamilyEditor: false })}\r\n handleSave={this.handleSaveFamily}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n return (\r\n <>\r\n \r\n {Emails}\r\n {Phones}\r\n {Addresses}\r\n {this.props.appIdentifier === 'LS' && Family}\r\n \r\n {deleteConfirmation}\r\n {emailEditor}\r\n {phoneEditor}\r\n {addressEditor}\r\n {familyEditor}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Box from '@mui/material/Box';\r\nimport Chip from '@mui/material/Chip';\r\n\r\nexport class SelectionChip extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n\r\n let color = \"#ccc\";\r\n if (!this.props.selected && !this.props.dark) {\r\n color = \"#444\";\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { Section } from '../Utilities/Section';\r\nimport { SelectionChip } from '../Utilities/SelectionChip';\r\nimport { SectionGrid } from '../Utilities/SectionGrid';\r\n\r\n\r\n//MUI\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport TextField from '@mui/material/TextField';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport { setPublic, removePublic } from '../../DataServices/UserService'\r\n\r\nexport class ProfileInterests extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedFavoriteType: \"\"\r\n };\r\n }\r\n\r\n clickFavorite = async (item, selected, userfav) => {\r\n if (!selected) {\r\n this.setState({\r\n selectedFavorite: item,\r\n selectedFavoriteType: item.label,\r\n showFavoriteEditor: true,\r\n });\r\n }\r\n else {\r\n this.props.removeFavorite(userfav);\r\n await fetch('home/removefavorite?id=' + userfav.id, { method: 'POST' });\r\n }\r\n\r\n }\r\n handleSaveFavorite = async () => {\r\n const favVal = document.getElementById(\"fldFavorite\").value;\r\n if (favVal) {\r\n const response = await fetch('home/addfavorite?type=' + this.state.selectedFavorite.value + ' &value=' + favVal, { method: 'POST' })\r\n const id = await response.text();\r\n const newFav = { id: id, favoriteType: this.state.selectedFavorite.value, favoriteValue: favVal };\r\n this.props.addFavorite(newFav);\r\n }\r\n this.setState({\r\n selectedFavorite: null,\r\n showFavoriteEditor: false,\r\n });\r\n }\r\n handleSetPublic = async (attr, val) => {\r\n if (val === true) {\r\n await setPublic(attr);\r\n }\r\n else {\r\n await removePublic(attr);\r\n }\r\n }\r\n\r\n publicAttribute = (attr) => {\r\n let val = false;\r\n if (this.props.profile && this.props.profile.publicAttributes && this.props.profile.publicAttributes.find((x) => x === attr)) {\r\n val = true;\r\n }\r\n return (\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black\r\n }}\r\n control={ this.handleSetPublic(attr, e.target.checked)} color=\"secondary\" size=\"small\" />}\r\n label={\r\n \r\n Public\r\n \r\n }\r\n />\r\n )\r\n }\r\n\r\n\r\n render() {\r\n const interest = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n if (this.props.profile.demographics.interests &&\r\n this.props.profile.demographics.interests.includes(item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n }\r\n return (\r\n this.props.toggleSelected(item.value)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n }\r\n const Interests = (\r\n
\r\n \r\n {this.props.profile.interestsList.map((item) => {\r\n return interest(item)\r\n })}\r\n \r\n
)\r\n\r\n\r\n const favorite = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n let favVal = \"\";\r\n let userFav = null;\r\n if (this.props.profile.demographics.favorites &&\r\n this.props.profile.demographics.favorites.find((x) => x.favoriteType === item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n userFav = this.props.profile.demographics.favorites.find((x) => x.favoriteType === item.value);\r\n favVal = \": \" + userFav.favoriteValue;\r\n }\r\n \r\n return (\r\n this.clickFavorite(item, selected, userFav)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n\r\n }\r\n const favoriteEditor = ( this.setState({ showFavoriteEditor: false })}\r\n handleSave={this.handleSaveFavorite}\r\n fullWidth={true}\r\n maxWidth=\"xs\"\r\n >\r\n \r\n \r\n \r\n )\r\n const Favorites = (\r\n
\r\n \r\n {this.props.profile.favoritesTypeList.map((item) => {\r\n return favorite(item)\r\n })}\r\n \r\n
)\r\n\r\n const music = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n if (this.props.profile.demographics.musicTastes &&\r\n this.props.profile.demographics.musicTastes.includes(item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n }\r\n return (\r\n this.props.toggleSelectedTaste(0, item.value, selected)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n }\r\n const Music = (\r\n
\r\n \r\n {this.props.profile.musicTasteList.map((item) => {\r\n return music(item)\r\n })}\r\n \r\n
\r\n )\r\n\r\n const movie = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n if (this.props.profile.demographics.movieTastes &&\r\n this.props.profile.demographics.movieTastes.includes(item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n }\r\n return (\r\n this.props.toggleSelectedTaste(1, item.value, selected)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n }\r\n const Movies = (\r\n
\r\n \r\n {this.props.profile.movieTasteList.map((item) => {\r\n return movie(item)\r\n })}\r\n \r\n
)\r\n\r\n const food = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n if (this.props.profile.demographics.foodTastes &&\r\n this.props.profile.demographics.foodTastes.includes(item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n }\r\n return (\r\n this.props.toggleSelectedTaste(2, item.value, selected)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n }\r\n const Food = (\r\n
\r\n \r\n {this.props.profile.foodTasteList.map((item) => {\r\n return food(item)\r\n })}\r\n \r\n
)\r\n\r\n const drink = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n if (this.props.profile.demographics.drinkTastes &&\r\n this.props.profile.demographics.drinkTastes.includes(item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n }\r\n return (\r\n this.props.toggleSelectedTaste(3, item.value, selected)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n }\r\n const Drink = (\r\n
\r\n \r\n {this.props.profile.drinkTasteList.map((item) => {\r\n return drink(item)\r\n })}\r\n \r\n
)\r\n\r\n const reading = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n if (this.props.profile.demographics.readingTastes &&\r\n this.props.profile.demographics.readingTastes.includes(item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n }\r\n return (\r\n this.props.toggleSelectedTaste(4, item.value, selected)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n }\r\n const Reading = (
\r\n \r\n {this.props.profile.readingTasteList.map((item) => {\r\n return reading(item)\r\n })}\r\n \r\n
)\r\n\r\n return (\r\n <>\r\n \r\n {Interests}\r\n {Favorites}\r\n {Music}\r\n {Movies}\r\n {Food}\r\n {Drink}\r\n {Reading} \r\n \r\n {favoriteEditor}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { Section } from '../Utilities/Section';\r\nimport { SectionItem } from '../Utilities/SectionItem';\r\nimport { SectionGrid } from '../Utilities/SectionGrid';\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\nimport { SelectList } from '../Utilities/SelectList';\r\nimport { DateSelector } from '../Utilities/DateSelector';\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport Button from '@mui/material/Button';\r\nimport { PublicAttribute } from '../Utilities/PublicAttribute';\r\n\r\n\r\nexport class ProfileBucketList extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showConfirmDeleteBucketList: false,\r\n showBucketListEditor: false,\r\n showConfirmDeleteGoal: false,\r\n showGoalEditor: false\r\n }\r\n }\r\n\r\n handleShowConfirmDeleteBucketList = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteBucketList : true\r\n })\r\n }\r\n\r\n handleAddBucketList = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n titleValue: \"\",\r\n reasonValue: \"\",\r\n categoryValue: 0,\r\n importanceValue: 0,\r\n dueValue: new Date(),\r\n showBucketListEditor: true\r\n })\r\n }\r\n\r\n handleEditBucketList = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n titleValue: this.props.profile.demographics.bucketList[idx].title,\r\n reasonValue: this.props.profile.demographics.bucketList[idx].reasonNotDone,\r\n categoryValue: this.props.profile.demographics.bucketList[idx].category,\r\n importanceValue: this.props.profile.demographics.bucketList[idx].importanceRank,\r\n dueValue: this.props.profile.demographics.bucketList[idx].dueDate,\r\n showBucketListEditor: true\r\n })\r\n }\r\n\r\n handleSaveBucketList = async () => {\r\n const title = document.getElementById(\"fldTitle\").value.trim();\r\n const reason = document.getElementById(\"fldReason\").value.trim() ?? \"\";\r\n const category = this.state.categoryValue;\r\n const importance = this.state.importanceValue;\r\n const due = this.state.dueValue;\r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (title) {\r\n const response = await fetch('home/addbucketlistitem?category=' + category + '&title=' + title + '&due=' + due + '&importance=' + importance + '&reason=' + reason, { method: 'POST' })\r\n const id = await response.text();\r\n const itm = { id: id, title: title, reasonNotDone: reason, category: category, dueDate: due, importanceRank: importance };\r\n this.props.profile.demographics.bucketList.push(itm);\r\n this.setState({ showBucketListEditor: false });\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (title) {\r\n await fetch('home/editbucketlistitem?id=' + id + '&category=' + category + '&title=' + title + '&due=' + due + '&importance=' + importance + '&reason=' + reason, { method: 'POST' })\r\n const itm2 = { id: id, title: title, reasonNotDone: reason, category: category, dueDate: due, importanceRank: importance };\r\n this.props.updateBucketList(idx, itm2);\r\n this.setState({ showBucketListEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDeleteBucketList = async () => {\r\n this.props.profile.demographics.bucketList.splice(this.state.selectedIDX,1);\r\n await fetch('home/removebucketlistitem?id=' + this.state.selectedID, { method: 'POST' });\r\n\r\n this.setState({\r\n showConfirmDeleteBucketList: false,\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n }) \r\n }\r\n\r\n handleCategoryChange = (e) => {\r\n this.setState({ categoryValue: e.target.value });\r\n }\r\n\r\n handleImportanceChange = (e) => {\r\n this.setState({ importanceValue: e.target.value });\r\n }\r\n\r\n handleDueChange = (e) => {\r\n this.setState({ dueValue: new Date(e).toLocaleDateString() });\r\n }\r\n\r\n handleShowConfirmDeleteGoal = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteGoal: true\r\n })\r\n }\r\n\r\n handleAddGoal = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n descValue: \"\",\r\n typeValue: 0,\r\n statusValue: 0,\r\n importanceValue: 0,\r\n dueValue: new Date(),\r\n showGoalEditor: true\r\n })\r\n }\r\n\r\n handleEditGoal = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n descValue: this.props.profile.personalGoals[idx].goalDesc,\r\n typeValue: this.props.profile.personalGoals[idx].goalType,\r\n statusValue: this.props.profile.personalGoals[idx].goalStatus,\r\n importanceValue: this.props.profile.personalGoals[idx].importance,\r\n dueValue: this.props.profile.personalGoals[idx].targetDate,\r\n showGoalEditor: true\r\n })\r\n }\r\n\r\n handleSaveGoal = async () => {\r\n const desc = document.getElementById(\"fldDesc\").value.trim();\r\n const type = this.state.typeValue;\r\n const importance = this.state.importanceValue;\r\n const due = this.state.dueValue;\r\n const status = this.state.statusValue;\r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (desc) {\r\n const response = await fetch('home/addgoal?type=' + type + '&desc=' + desc + '&target=' + due + '&importance=' + importance + '&status=' + status, { method: 'POST' })\r\n const id = await response.text();\r\n const itm = { id: id, goalDesc: desc, goalType: type, targetDate: due, importance: importance, goalStatus: status };\r\n console.log(itm);\r\n this.props.profile.personalGoals.push(itm);\r\n this.setState({ showGoalEditor: false });\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (desc) {\r\n await fetch('home/editgoal?id=' + id + '&type=' + type + '&desc=' + desc + '&target=' + due + '&importance=' + importance + '&status=' + status, { method: 'POST' });\r\n const itm2 = { id: id, goalDesc: desc, goalType: type, targetDate: due, importance: importance, goalStatus: status };\r\n this.props.updatePersonalGoal(idx, itm2);\r\n this.setState({ showGoalEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDeleteGoal = async () => {\r\n this.props.profile.personalGoals.splice(this.state.selectedIDX, 1);\r\n await fetch('home/removegoal?id=' + this.state.selectedID, { method: 'POST' });\r\n\r\n this.setState({\r\n showConfirmDeleteGoal: false,\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n })\r\n }\r\n\r\n handleTypeChange = (e) => {\r\n this.setState({ typeValue: e.target.value });\r\n }\r\n\r\n handleStatusChange = (e) => {\r\n this.setState({ statusValue: e.target.value });\r\n }\r\n\r\n handleShowConfirmDeleteHabit = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteHabit: true\r\n })\r\n }\r\n\r\n handleAddHabit = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n descValue: \"\",\r\n typeValue: 0,\r\n impactsValue:\"\",\r\n importanceValue: 0,\r\n showHabitEditor: true\r\n })\r\n }\r\n\r\n handleEditHabit = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n descValue: this.props.profile.demographics.badHabits[idx].habitDescription,\r\n typeValue: this.props.profile.demographics.badHabits[idx].habitType,\r\n importanceValue: this.props.profile.demographics.badHabits[idx].importanceRank,\r\n impactsValue: this.props.profile.demographics.badHabits[idx].impacts,\r\n showHabitEditor: true\r\n })\r\n }\r\n\r\n handleSaveHabit = async () => {\r\n const desc = document.getElementById(\"fldDesc\").value.trim();\r\n const type = this.state.typeValue;\r\n const importance = this.state.importanceValue;\r\n const impacts = document.getElementById(\"fldImpacts\").value.trim();\r\n\r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (desc) {\r\n const response = await fetch('home/addbadhabit?type=' + type + '&desc=' + desc + '&importance=' + importance + '&impacts=' + impacts, { method: 'POST' })\r\n const id = await response.text();\r\n const itm = { id: id, habitDescription: desc, habitType: type, impacts: impacts, importance: importance};\r\n this.props.profile.demographics.badHabits.push(itm);\r\n this.setState({ showHabitEditor: false });\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (desc) {\r\n await fetch('home/editbadhabit?id=' + id + '&type=' + type + '&desc=' + desc + '&importance=' + importance + '&impacts=' + impacts, { method: 'POST' })\r\n const itm2 = { id: id, habitDescription: desc, habitType: type, impacts: impacts, importance: importance };\r\n this.props.updateHabit(idx, itm2);\r\n this.setState({ showHabitEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDeleteHabit = async () => {\r\n this.props.profile.demographics.badHabits.splice(this.state.selectedIDX, 1);\r\n await fetch('home/removebadhabit?id=' + this.state.selectedID, { method: 'POST' });\r\n\r\n this.setState({\r\n showConfirmDeleteHabit: false,\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n })\r\n }\r\n\r\n render() {\r\n const bucketListItem = (item, index) => {\r\n return (\r\n x.value === item.category).label}\r\n primaryContent={item.title + \": \" + new Date(item.dueDate).toLocaleDateString()}\r\n handleEdit={this.handleEditBucketList}\r\n handleDelete = {this.handleShowConfirmDeleteBucketList}\r\n >\r\n \r\n \r\n )\r\n }\r\n const BucketList = (\r\n
0 && this.handleAddBucketList} {...this.props} publicAttribute=\"bucketlist\">\r\n {this.props.profile.demographics.bucketList.length > 0 ?\r\n this.props.profile.demographics.bucketList.map((item, index) => bucketListItem(item, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n \r\n const deleteConfirmationBucketList = ( this.setState({ showConfirmDeleteBucketList: false })}\r\n handleSave={this.handleDeleteBucketList}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" /> )\r\n const bucketListEditor = ( this.setState({ showBucketListEditor: false })}\r\n handleSave={this.handleSaveBucketList}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n )\r\n const goalItem = (item, index) => {\r\n return (\r\n x.value === item.goalType).label}\r\n primaryContent={item.goalDesc + \": \" + this.props.profile.goalStatusList.find((x) => x.value === item.goalStatus).label}\r\n handleEdit={this.handleEditGoal}\r\n handleDelete={this.handleShowConfirmDeleteGoal}\r\n >\r\n \r\n \r\n\r\n )\r\n }\r\n const Goal = (\r\n
0 && this.handleAddGoal} {...this.props} publicAttribute=\"personalgoals\">\r\n {this.props.profile.personalGoals.length > 0 ?\r\n this.props.profile.personalGoals.map((item, index) => goalItem(item, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n\r\n const deleteConfirmationGoal = ( this.setState({ showConfirmDeleteGoal: false })}\r\n handleSave={this.handleDeleteGoal}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" />)\r\n const goalEditor = ( this.setState({ showGoalEditor: false })}\r\n handleSave={this.handleSaveGoal}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n\r\n const habitItem = (item, index) => {\r\n return (\r\n x.value === item.habitType).label}\r\n primaryContent={item.habitDescription}\r\n handleEdit={this.handleEditHabit}\r\n handleDelete={this.handleShowConfirmDeleteHabit}\r\n itemType=\"Bad Habit\"\r\n >\r\n \r\n \r\n )\r\n }\r\n\r\n const Habit = (\r\n
0 && this.handleAddHabit} {...this.props} publicAttribute=\"habits\">\r\n {this.props.profile.demographics.badHabits.length > 0 ?\r\n this.props.profile.demographics.badHabits.map((item, index) => habitItem(item, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n const deleteConfirmationHabit = ( this.setState({ showConfirmDeleteHabit: false })}\r\n handleSave={this.handleDeleteGHabit}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" />)\r\n const habitEditor = ( this.setState({ showHabitEditor: false })}\r\n handleSave={this.handleSaveHabit}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n return (\r\n <>\r\n \r\n {BucketList}\r\n {Goal}\r\n {Habit}\r\n \r\n {deleteConfirmationBucketList}\r\n {bucketListEditor}\r\n {deleteConfirmationGoal}\r\n {goalEditor}\r\n {deleteConfirmationHabit}\r\n {habitEditor}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { Section } from '../Utilities/Section';\r\nimport { SelectionChip } from '../Utilities/SelectionChip';\r\nimport { SectionGrid } from '../Utilities/SectionGrid';\r\n\r\n//Material UI\r\nimport Paper from '@mui/material/Paper';\r\n\r\nexport class ProfileStrengthsAndWeaknesses extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n strength = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n if (this.props.profile.demographics.personalStrengths &&\r\n this.props.profile.demographics.personalStrengths.find((x) => x.strength === item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n }\r\n return (\r\n this.props.toggleSelectedStrength(item)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n }\r\n strengths = () => {\r\n return (\r\n
\r\n \r\n {this.props.profile && this.props.profile.strengthList.map((item) => {\r\n return this.strength(item)\r\n })}\r\n \r\n
\r\n )\r\n }\r\n weakness = (item) => {\r\n let variant = \"outlined\";\r\n let selected = false;\r\n if (this.props.profile.demographics.personalWeaknesses &&\r\n this.props.profile.demographics.personalWeaknesses.find((x) => x.weakness === item.value)) {\r\n variant = \"filled\";\r\n selected = true;\r\n }\r\n return (\r\n this.props.toggleSelectedWeakness(item)}\r\n selected={selected}\r\n variant={variant}\r\n />\r\n )\r\n }\r\n weaknesses = () => {\r\n return (\r\n
\r\n \r\n {this.props.profile && this.props.profile.weaknessList.map((item) => {\r\n return this.weakness(item)\r\n })}\r\n \r\n
\r\n )\r\n } \r\n content = () => {\r\n return (\r\n \r\n {this.strengths()}\r\n {this.weaknesses()}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n return this.content();\r\n\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { Section } from '../Utilities/Section';\r\nimport { SectionItem } from '../Utilities/SectionItem';\r\nimport { SectionGrid } from '../Utilities/SectionGrid';\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\nimport { SelectList } from '../Utilities/SelectList';\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { PublicAttribute } from '../Utilities/PublicAttribute';\r\n\r\n//MUI\r\nimport Button from '@mui/material/Button';\r\n\r\nexport class ProfileResponsibilities extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showConfirmDeleteOccupation: false,\r\n showOccupationEditor: false,\r\n showConfirmDeleteRole: false,\r\n showRoleEditor: false\r\n }\r\n }\r\n\r\n handleShowConfirmDeleteOccupation = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteOccupation : true\r\n })\r\n }\r\n\r\n handleAddOccupation = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n titleValue: \"\",\r\n statusValue: 0,\r\n typeValue: 0,\r\n employerValue: \"\",\r\n schoolValue: \"\",\r\n fieldValue: \"\",\r\n showOccupationEditor: true\r\n })\r\n }\r\n\r\n handleEditOccupation = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n titleValue: this.props.profile.occupations[idx].title,\r\n statusValue: this.props.profile.occupations[idx].status,\r\n typeValue: this.props.profile.occupations[idx].occupationType,\r\n employerValue: this.props.profile.occupations[idx].employer,\r\n schoolValue: this.props.profile.occupations[idx].school,\r\n fieldValue: this.props.profile.occupations[idx].fieldOfStudy,\r\n showOccupationEditor: true\r\n })\r\n }\r\n\r\n handleSaveOccupation = async () => {\r\n const title = document.getElementById(\"fldTitle\").value.trim();\r\n const employer = document.getElementById(\"fldEmployer\").value.trim() ?? \"\";\r\n const school = document.getElementById(\"fldSchool\").value.trim() ?? \"\";\r\n const field = document.getElementById(\"fldField\").value.trim() ?? \"\";\r\n const status = this.state.statusValue;\r\n const type = this.state.typeValue;\r\n \r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (title) {\r\n const response = await fetch('home/addoccupation?type=' + type + '&status=' + status + '&title=' + title + '&employer=' + employer + '&school=' + school + '&field=' + field + '&primary=false', { method: 'POST' })\r\n const id = await response.text();\r\n const itm = { id: id, title: title, occupationType: type, status: status, primaryOccupation: false, employer: employer, school: school, fieldOfStudy: field };\r\n this.props.profile.occupations.push(itm);\r\n this.setState({ showOccupationEditor: false });\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n const primary = this.props.profile.occupations[idx].primaryOccupation;\r\n if (title) {\r\n await fetch('home/editoccupation?id=' + id + '&type=' + type + '&status=' + status + '&title=' + title + '&employer=' + employer + '&school=' + school + '&field=' + field + '&primary=' + primary, { method: 'POST' })\r\n const itm2 = { id: id, title: title, occupationType: type, status: status, primaryOccupation: false, employer: employer, school: school, fieldOfStudy: field };\r\n this.props.updateOccupation(idx, itm2);\r\n this.setState({ showOccupationEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDeleteOccupation = async () => {\r\n this.props.profile.occupations.splice(this.state.selectedIDX,1);\r\n await fetch('home/removeoccupation?id=' + this.state.selectedID, { method: 'POST' });\r\n\r\n this.setState({\r\n showConfirmDeleteOccupation: false,\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n }) \r\n }\r\n\r\n handleShowConfirmDeleteRole = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteRole: true\r\n })\r\n }\r\n\r\n handleAddRole= () => {\r\n this.setState({\r\n editMode: \"New\",\r\n descValue: \"\",\r\n typeValue: 0,\r\n importanceValue: 0,\r\n impactedValue: \"\",\r\n showRoleEditor: true\r\n })\r\n }\r\n\r\n handleEditRole = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n descValue: this.props.profile.lifeRoles[idx].desc,\r\n typeValue: this.props.profile.lifeRoles[idx].roleType,\r\n importanceValue: this.props.profile.lifeRoles[idx].importance,\r\n impactedValue: this.props.profile.lifeRoles[idx].impactedPeople,\r\n showRoleEditor: true\r\n })\r\n }\r\n\r\n handleSaveRole = async () => {\r\n const desc = document.getElementById(\"fldDesc\").value.trim();\r\n const impacted = document.getElementById(\"fldImpacted\").value.trim() ?? \"\";\r\n const importance = this.state.importanceValue;\r\n const type = this.state.typeValue;\r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (desc) {\r\n const response = await fetch('home/addrole?role=' + type + '&desc=' + desc + '&importance=' + importance + '&impacted=' + impacted, { method: 'POST' })\r\n const id = await response.text();\r\n const itm = { id: id, desc: desc, roleType: type, importance: importance, impactedPeople: impacted};\r\n this.props.profile.lifeRoles.push(itm);\r\n this.setState({ showRoleEditor: false });\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (desc) {\r\n await fetch('home/editrole?id=' + id + '&role=' + type + '&desc=' + desc + '&importance=' + importance + '&impacted=' + impacted, { method: 'POST' })\r\n const itm2 = { id: id, desc: desc, roleType: type, importance: importance, impactedPeople: impacted };\r\n this.props.updateRole(idx, itm2);\r\n this.setState({ showRoleEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDeleteRole = async () => {\r\n this.props.profile.lifeRoles.splice(this.state.selectedIDX, 1);\r\n await fetch('home/removerole?id=' + this.state.selectedID, { method: 'POST' });\r\n\r\n this.setState({\r\n showConfirmDeleteRole: false,\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n })\r\n }\r\n\r\n handleShowConfirmDeleteRole = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteRole: true\r\n })\r\n }\r\n\r\n handleTypeChange = (e) => {\r\n this.setState({ typeValue: e.target.value });\r\n }\r\n handleStatusChange = (e) => {\r\n this.setState({ statusValue: e.target.value });\r\n }\r\n handleCategoryChange = (e) => {\r\n this.setState({ categoryValue: e.target.value });\r\n }\r\n handleImportanceChange = (e) => {\r\n this.setState({ importanceValue: e.target.value });\r\n }\r\n\r\n\r\n render() {\r\n\r\n const occupationItem = (item, index) => {\r\n return (\r\n x.value === item.occupationType).label}\r\n primaryContent={item.title}\r\n handleEdit={this.handleEditOccupation}\r\n handleDelete={this.handleDeleteOccupation}\r\n >\r\n \r\n \r\n )\r\n }\r\n\r\n const Occupation = (\r\n
0 && this.handleAddOccupation} {...this.props} publicAttribute=\"occupation\">\r\n {this.props.profile.occupations.length > 0 ? this.props.profile.occupations.map((item, index) => occupationItem(item, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n const deleteConfirmationOccupation = ( this.setState({ showConfirmDeleteOccupation: false })}\r\n handleSave={this.handleDeleteOccupation}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" /> )\r\n const occupationEditor = ( this.setState({ showOccupationEditor: false })}\r\n handleSave={this.handleSaveOccupation}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n\r\n const roleItem = (item, index) => {\r\n return (\r\n x.value === item.roleType).label}\r\n primaryContent={item.desc}\r\n handleEdit={this.handleEditRole}\r\n handleDelete={this.handleDeleteRole}\r\n >\r\n \r\n \r\n )\r\n }\r\n const Role = (
0 && this.handleAddRole} {...this.props} publicAttribute=\"liferole\">\r\n {this.props.profile.lifeRoles.length > 0 ?\r\n this.props.profile.lifeRoles.map((item, index) => roleItem(item, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n const deleteConfirmationRole = ( this.setState({ showConfirmDeleteRole: false })}\r\n handleSave={this.handleDeleteRole}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" />)\r\n const roleEditor = ( this.setState({ showRoleEditor: false })}\r\n handleSave={this.handleSaveRole}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n\r\n return (\r\n <>\r\n \r\n {Occupation}\r\n {Role}\r\n \r\n {deleteConfirmationOccupation}\r\n {occupationEditor}\r\n {deleteConfirmationRole}\r\n {roleEditor}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { Section } from '../Utilities/Section';\r\nimport { SectionItem } from '../Utilities/SectionItem';\r\nimport { SectionGrid } from '../Utilities/SectionGrid';\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\nimport { SelectList } from '../Utilities/SelectList';\r\nimport { DateSelector } from '../Utilities/DateSelector';\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { PublicAttribute } from '../Utilities/PublicAttribute';\r\n\r\n//MUI\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport InputAdornment from '@mui/material/InputAdornment';\r\nimport Button from '@mui/material/Button';\r\n\r\n\r\nexport class ProfileLifeEvents extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showConfirmDeleteEvent: false,\r\n showEventEditor: false,\r\n showConfirmDeleteEducation: false,\r\n showEducationEditor: false,\r\n showConfirmDeleteJob: false,\r\n showJobEditor: false,\r\n }\r\n }\r\n\r\n handleShowConfirmDeleteEvent = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteEvent : true\r\n })\r\n }\r\n\r\n handleAddEvent = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n titleValue: \"\",\r\n typeValue: 0,\r\n descValue: \"\",\r\n impactsValue: \"\",\r\n currentImpactValue: false,\r\n startValue: new Date(),\r\n endValue: new Date(),\r\n showEventEditor: true\r\n })\r\n }\r\n\r\n handleEditEvent = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n titleValue: this.props.profile.demographics.lifeEvents[idx].title,\r\n typeValue: this.props.profile.demographics.lifeEvents[idx].eventType,\r\n descValue: this.props.profile.demographics.lifeEvents[idx].description,\r\n impactsValue: this.props.profile.demographics.lifeEvents[idx].impacts,\r\n currentImpactValue: this.props.profile.demographics.lifeEvents[idx].currentImpact,\r\n startValue: this.props.profile.demographics.lifeEvents[idx].startDate,\r\n endValue: this.props.profile.demographics.lifeEvents[idx].endDate,\r\n showEventEditor: true\r\n })\r\n }\r\n\r\n handleSaveEvent = async () => {\r\n const title = document.getElementById(\"fldTitle\").value.trim();\r\n const desc = document.getElementById(\"fldDesc\").value.trim() ?? \"\";\r\n const impacts = document.getElementById(\"fldImpacts\").value.trim() ?? \"\";\r\n const currentImpact = this.state.currentImpactValue;\r\n const type = this.state.typeValue;\r\n const start = this.state.startValue;\r\n const end = this.state.endValue;\r\n \r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (title) {\r\n const response = await fetch('home/addlifeevent?type=' + type + '&title=' + title + '&desc=' + desc + '&impacts=' + impacts + '¤timpact=' + currentImpact + '&from=' + start + '&to=' + end, { method: 'POST' })\r\n const id = await response.text();\r\n const itm = { id: id, title: title, description: desc, eventType: type, impacts: impacts, currentImpact: currentImpact, startDate: start, endDate: end };\r\n this.props.profile.demographics.lifeEvents.push(itm);\r\n this.setState({ showEventEditor: false });\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (title) {\r\n await fetch('home/editlifeevent?id=' + id + '&type=' + type + '&title=' + title + '&desc=' + desc + '&impacts=' + impacts + '¤timpact=' + currentImpact + '&from=' + start + '&to=' + end, { method: 'POST' })\r\n const itm2 = { id: id, title: title, description: desc, eventType: type, impacts: impacts, currentImpact: currentImpact, startDate: start, endDate: end };\r\n this.props.updateEvent(idx, itm2);\r\n this.setState({ showEventEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDeleteEvent = async () => {\r\n this.props.profile.demographics.lifeEvents.splice(this.state.selectedIDX,1);\r\n await fetch('home/removelifeevent?id=' + this.state.selectedID, { method: 'POST' });\r\n\r\n this.setState({\r\n showConfirmDeleteEvent: false,\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n }) \r\n }\r\n\r\n handleShowConfirmDeleteEducation = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteEducation: true\r\n })\r\n }\r\n\r\n handleAddEducation = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n schoolValue: \"\",\r\n typeValue: 0,\r\n degreeTypeValue: 0,\r\n fieldValue: \"\",\r\n degreeValue: false,\r\n startValue: new Date(),\r\n endValue: new Date(),\r\n showEducationEditor: true\r\n })\r\n }\r\n\r\n handleEditEducation = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n schoolValue: this.props.profile.educationHistory[idx].schoolName,\r\n typeValue: this.props.profile.educationHistory[idx].schoolType,\r\n degreeTypeValue: this.props.profile.educationHistory[idx].degreeType,\r\n fieldValue: this.props.profile.educationHistory[idx].fieldOfStudy,\r\n degreeValue: this.props.profile.educationHistory[idx].degreeEarned,\r\n startValue: this.props.profile.educationHistory[idx].startDate,\r\n endValue: this.props.profile.educationHistory[idx].endDate,\r\n showEducationEditor: true\r\n })\r\n }\r\n\r\n handleSaveEducation = async () => {\r\n const school = document.getElementById(\"fldSchool\").value.trim();\r\n const field = document.getElementById(\"fldField\").value.trim() ?? \"\";\r\n const degree = this.state.degreeValue;\r\n const type = this.state.typeValue;\r\n const degreeType = this.state.degreeTypeValue;\r\n const start = this.state.startValue;\r\n const end = this.state.endValue;\r\n\r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (school) {\r\n const response = await fetch('home/addschool?school=' + school + '&type=' + type + '&field=' + field + '°ree=' + degree + '°reetype=' + degreeType + '&from=' + start + '&to=' + end, { method: 'POST' })\r\n const id = await response.text();\r\n const itm = {\r\n id: id,\r\n startDate: start,\r\n endDate: end,\r\n schoolName: school,\r\n schoolType: type,\r\n fieldOfStudy: field,\r\n degreeEarned: degree,\r\n degreeType: degreeType\r\n };\r\n this.props.profile.educationHistory.push(itm);\r\n this.setState({ showEducationEditor: false });\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (school) {\r\n await fetch('home/editschool?id=' + id + '&school=' + school + '&type=' + type + '&field=' + field + '°ree=' + degree + '°reetype=' + degreeType + '&from=' + start + '&to=' + end, { method: 'POST' })\r\n const itm2 = {\r\n id: id,\r\n startDate: start,\r\n endDate: end,\r\n schoolName: school,\r\n schoolType: type,\r\n fieldOfStudy: field,\r\n degreeEarned: degree,\r\n degreeType: degreeType\r\n };\r\n this.props.updateEducation(idx, itm2);\r\n this.setState({ showEducationEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDeleteEducation = async () => {\r\n this.props.profile.educationHistory.splice(this.state.selectedIDX, 1);\r\n await fetch('home/removeschool?id=' + this.state.selectedID, { method: 'POST' });\r\n\r\n this.setState({\r\n showConfirmDeleteEducation: false,\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n })\r\n }\r\n\r\n handleShowConfirmDeleteJob = (id, idx) => {\r\n this.setState({\r\n selectedID: id,\r\n selectedIDX: idx,\r\n showConfirmDeleteJob: true\r\n })\r\n }\r\n\r\n handleAddJob = () => {\r\n this.setState({\r\n editMode: \"New\",\r\n titleValue: \"\",\r\n employerValue: \"\",\r\n descValue: \"\",\r\n achievementsValue: \"\",\r\n salaryValue: \"\",\r\n leaveReasonValue: \"\",\r\n startValue: new Date(),\r\n endValue: new Date(),\r\n showJobEditor: true\r\n })\r\n }\r\n\r\n handleEditJob = (id, idx) => {\r\n\r\n this.setState({\r\n editMode: \"Edit\",\r\n selectedID: id,\r\n selectedIDX: idx,\r\n titleValue: this.props.profile.employmentHistory[idx].title,\r\n employerValue: this.props.profile.employmentHistory[idx].employer,\r\n descValue: this.props.profile.employmentHistory[idx].jobDescription,\r\n achievementsValue: this.props.profile.employmentHistory[idx].notableAchievements,\r\n salaryValue: this.props.profile.employmentHistory[idx].endingSalary,\r\n leaveReasonValue: this.props.profile.employmentHistory[idx].leaveReason,\r\n startValue: this.props.profile.employmentHistory[idx].startDate,\r\n endValue: this.props.profile.employmentHistory[idx].endDate,\r\n showJobEditor: true\r\n })\r\n }\r\n\r\n handleSaveJob = async () => {\r\n const title = document.getElementById(\"fldTitle\").value.trim();\r\n const employer = document.getElementById(\"fldEmployer\").value.trim() ?? \"\";\r\n const desc = document.getElementById(\"fldDesc\").value.trim() ?? \"\";\r\n const achievements = document.getElementById(\"fldAchievements\").value.trim() ?? \"\";\r\n const salary = document.getElementById(\"fldSalary\").value.trim() ?? \"\";\r\n const leaveReason = document.getElementById(\"fldLeaveReason\").value.trim() ?? \"\";\r\n const start = this.state.startValue;\r\n const end = this.state.endValue;\r\n\r\n\r\n if (this.state.editMode !== \"Edit\") {\r\n if (title) {\r\n const response = await fetch('home/addjob?title=' + title + '&employer=' + employer + '&desc=' + desc + '&achievements=' + achievements + '&salary=' + salary + '&reason=' + leaveReason + '&from=' + start + '&to=' + end, { method: 'POST' })\r\n const id = await response.text();\r\n const itm = {\r\n id: id,\r\n startDate: start,\r\n endDate: end,\r\n title: title,\r\n employer: employer,\r\n jobDescription: desc,\r\n notableAchievements: achievements,\r\n endingSalary: salary,\r\n leaveReason: leaveReason\r\n };\r\n this.props.profile.employmentHistory.push(itm);\r\n this.setState({ showJobEditor: false });\r\n }\r\n }\r\n else {\r\n const id = this.state.selectedID;\r\n const idx = this.state.selectedIDX;\r\n if (title) {\r\n await fetch('home/editjob?id=' + id + '&title=' + title + '&employer=' + employer + '&desc=' + desc + '&achievements=' + achievements + '&salary=' + salary + '&reason=' + leaveReason + '&from=' + start + '&to=' + end, { method: 'POST' })\r\n const itm2 = {\r\n id: id,\r\n startDate: start,\r\n endDate: end,\r\n title: title,\r\n employer: employer,\r\n jobDescription: desc,\r\n notableAchievements: achievements,\r\n endingSalary: salary,\r\n leaveReason: leaveReason\r\n };\r\n this.props.updateEmployment(idx, itm2);\r\n this.setState({ showJobEditor: false, editMode: \"\", selectedID: \"\", selectedIDX: \"\" });\r\n }\r\n }\r\n }\r\n\r\n handleDeleteJob = async () => {\r\n this.props.profile.employmentHistory.splice(this.state.selectedIDX, 1);\r\n await fetch('home/removejob?id=' + this.state.selectedID, { method: 'POST' });\r\n\r\n this.setState({\r\n showConfirmDeleteJob: false,\r\n selectedID: \"\",\r\n selectedIDX: \"\"\r\n })\r\n }\r\n handleDegreeTypeChange = (e) => {\r\n this.setState({ degreeTypeValue: e.target.value });\r\n }\r\n handleTypeChange = (e) => {\r\n this.setState({ typeValue: e.target.value });\r\n }\r\n handleStatusChange = (e) => {\r\n this.setState({ statusValue: e.target.value });\r\n }\r\n handleCategoryChange = (e) => {\r\n this.setState({ categoryValue: e.target.value });\r\n }\r\n handleImportanceChange = (e) => {\r\n this.setState({ importanceValue: e.target.value });\r\n }\r\n handleStartChange = (e) => {\r\n this.setState({ startValue: new Date(e).toLocaleDateString() });\r\n }\r\n handleEndChange = (e) => {\r\n this.setState({ endValue: new Date(e).toLocaleDateString() });\r\n }\r\n handleCurrentImpactChange = (e) => {\r\n this.setState({ currentImpactValue: e.target.checked });\r\n }\r\n handleDegreeChange = (e) => {\r\n this.setState({ degreeValue: e.target.checked });\r\n }\r\n formatMoney = (e) => {\r\n var oldval = parseFloat(e.target.value);\r\n if (oldval) {\r\n e.target.value = (oldval).toFixed(2).replace(/\\d(?=(\\d{3})+\\.)/g, '$&,');\r\n }\r\n else {\r\n e.target.value = \"\";\r\n }\r\n }\r\n\r\n render() {\r\n const eventItem = (item, index) => {\r\n return (\r\n x.value === item.eventType).label}\r\n primaryContent={item.title}\r\n handleEdit={this.handleEditEvent}\r\n handleDelete={this.handleShowConfirmDeleteEvent}\r\n >\r\n \r\n \r\n\r\n )\r\n }\r\n const Event = (
0 && this.handleAddEvent} {...this.props} publicAttribute=\"lifeevents\">\r\n {this.props.profile.demographics.lifeEvents.length > 0 ?\r\n this.props.profile.demographics.lifeEvents.map((item, index) => eventItem(item, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n \r\n const deleteConfirmationEvent = ( this.setState({ showConfirmDeleteEvent: false })}\r\n handleSave={this.handleDeleteEvent}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" /> )\r\n const eventEditor = ( this.setState({ showEventEditor: false })}\r\n handleSave={this.handleSaveEvent}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n control={}\r\n label=\"Has Current Impact?\"\r\n />\r\n \r\n \r\n \r\n )\r\n\r\n const educationItem = (item, index) => {\r\n return (\r\n x.value === item.schoolType).label}\r\n primaryContent={item.schoolName}\r\n handleEdit={this.handleEditEducation}\r\n handleDelete={this.handleShowConfirmDeleteEducation}\r\n >\r\n \r\n \r\n )\r\n }\r\n\r\n const Education = (
0 && this.handleAddEducation} {...this.props} publicAttribute=\"education\">\r\n {this.props.profile.educationHistory.length > 0 ?\r\n this.props.profile.educationHistory.map((item, index) => educationItem(item, index))\r\n :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n const deleteConfirmationEducation = ( this.setState({ showConfirmDeleteEducation: false })}\r\n handleSave={this.handleDeleteEducation}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" />)\r\n const educationEditor = ( this.setState({ showEducationEditor: false })}\r\n handleSave={this.handleSaveEducation}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n control={}\r\n label=\"Degree Earned?\"\r\n />\r\n \r\n \r\n \r\n \r\n )\r\n \r\n const jobItem = (item, index) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const Job = (
0 && this.handleAddJob} {...this.props} publicAttribute=\"employment\">\r\n {this.props.profile.employmentHistory.length > 0 ?\r\n this.props.profile.employmentHistory.map((item, index) => jobItem(item, index)) :\r\n
\r\n \r\n
\r\n }\r\n
)\r\n\r\n\r\n const deleteConfirmationJob = ( this.setState({ showConfirmDeleteJob: false })}\r\n handleSave={this.handleDeleteJob}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\" />)\r\n const jobEditor = ( this.setState({ showJobEditor: false })}\r\n handleSave={this.handleSaveJob}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n $,\r\n inputMode: 'numeric',\r\n pattern: '[0-9]*'\r\n }}\r\n />\r\n \r\n \r\n \r\n\r\n )\r\n\r\n\r\n return (\r\n <>\r\n \r\n {Event}\r\n {Education}\r\n {Job}\r\n \r\n {deleteConfirmationEvent}\r\n {eventEditor}\r\n {deleteConfirmationEducation}\r\n {educationEditor}\r\n {deleteConfirmationJob}\r\n {jobEditor}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom components\r\nimport { ModalDialog } from '../../Utilities/ModalDialog'\r\n\r\n//Material UI\r\nimport InsertPhotoIcon from '@mui/icons-material/InsertPhoto';\r\nimport Dropzone from 'react-dropzone'\r\nimport AvatarEditor from 'react-avatar-editor'\r\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\r\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\r\nimport RotateRightIcon from '@mui/icons-material/RotateRight';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Box from '@mui/material/Box';\r\nimport ContentPasteIcon from '@mui/icons-material/ContentPaste';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Typography from '@mui/material/Typography';\r\nimport UndoIcon from '@mui/icons-material/Undo';\r\n//Data services\r\nimport { savePhoto } from '../../../DataServices/PhotoService'\r\nimport { getPhoto } from '../../../DataServices/PhotoService'\r\nconst pasteFromClickBoard = async () => {\r\n\r\n const photoID = await navigator.clipboard.readText();\r\n if (photoID) {\r\n const photo = await getPhoto(photoID);\r\n console.log(photo);\r\n if (photo && photo.fullPhoto) {\r\n // console.log(photo.fullPhoto);\r\n //var bs = atob(photo.fullPhoto);\r\n //var buffer = new ArrayBuffer(bs.length);\r\n //var ba = new Uint8Array(buffer);\r\n //for (var i = 0; i < bs.length; i++) {\r\n // ba[i] = bs.charCodeAt(i);\r\n //}\r\n //var file = new Blob([ba], { type: \"image/png\" });\r\n //if (file) {\r\n // console.log(file);\r\n // return file;\r\n //}\r\n return \"data:image/png;base64, \" + photo.fullPhoto;\r\n }\r\n else {\r\n alert(\"Photo (ID: \" + photoID + \" not found\");\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\nexport class ComponentImageUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n processing: false,\r\n selectedFile: null,\r\n imgScale: 1.0,\r\n imgRotation: 0,\r\n\r\n }\r\n }\r\n setEditorRef = (editor) => (this.editor = editor);\r\n handleSavePhoto = async () => {\r\n\r\n document.body.style.cursor = 'wait';\r\n const canvas = await this.editor.getImage().toDataURL();\r\n const b64 = await fetch(canvas);\r\n const blob= await b64.blob();\r\n const file = new File([blob], this.state.selectedFile.name);\r\n\r\n const photo = await savePhoto(file, this.props.parentID, this.props.appIdentifier)\r\n if (photo) {\r\n\r\n this.props.handleSave(photo);\r\n }\r\n this.setState({\r\n processing: false,\r\n selectedFile: null,\r\n imgScale: 1.0,\r\n imgRotation: 0,\r\n itemCount: 0\r\n });\r\n\r\n document.body.style.cursor = 'default';\r\n }\r\n\r\n\r\n\r\n\r\n updateStateForNewPhoto = (base64result) => {\r\n //Update State to display new photo\r\n const itemCount = this.state.itemCount + 1;\r\n this.setState({\r\n currentUpload: base64result,\r\n itemCount: itemCount\r\n });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n currentUpload: \"\",\r\n itemCount: 0\r\n })\r\n this.props.handleClose();\r\n }\r\n\r\n toggleProcessing = (status) => {\r\n if (status != null) {\r\n this.setState({ processing: status });\r\n }\r\n else {\r\n this.setState({ processing: !this.state.processing });\r\n } \r\n }\r\n handleDragOverDropZone = (e) => {\r\n e.currentTarget.classList.add(\"hoverdropzone\");\r\n }\r\n handleDragLeaveDropZone = (e) => {\r\n e.currentTarget.classList.remove(\"hoverdropzone\");\r\n }\r\n handleRotateImage = () => {\r\n var rot = parseInt(this.state.imgRotation) + 90;\r\n if (rot === 450) {\r\n rot = 0;\r\n }\r\n this.setState({ imgRotation: rot });\r\n }\r\n handleScaleUpImage = () => {\r\n var scale = parseFloat(this.state.imgScale);\r\n scale = scale + .1;\r\n this.setState({ imgScale: scale });\r\n }\r\n handleScaleDownImage = () => {\r\n var scale = parseFloat(this.state.imgScale);\r\n if (scale > .2) {\r\n scale = scale - .1;\r\n }\r\n this.setState({ imgScale: scale });\r\n }\r\n handleDrop = async (files) => {\r\n this.toggleProcessing(true);\r\n if (files) {\r\n var numAllowed = this.props.numAllowed ? this.props.numAllowed : 1;\r\n let max = numAllowed;\r\n if (files.length < numAllowed) {\r\n max = files.length;\r\n }\r\n for (var i = 0; i < max; i++) {\r\n var file = files[i];\r\n var extension = file.type;\r\n if (extension === \"image/jpeg\" || extension === \"image/jpg\" || extension === \"image/png\" || extension === \"image/bmp\") {\r\n this.setState({ selectedFile: file });\r\n console.log(file);\r\n }\r\n }\r\n }\r\n\r\n //clean up iu from any progress indicators, etc.\r\n var ele = document.getElementById(\"dropZone\");\r\n if (ele) ele.classList.remove(\"hoverdropzone\");\r\n this.toggleProcessing(false);\r\n }\r\n\r\n handleExistingPhoto = async () => {\r\n const url = await pasteFromClickBoard();\r\n this.setState({ selectedFile: url });\r\n }\r\n render() {\r\n const inst = () => {\r\n if (this.state.selectedFile) {\r\n return (\r\n \r\n \r\n {\"Edit the photo using the zoom and rotate buttons below...\"}\r\n \r\n \r\n \r\n theme.palette.secondary.main }} onClick={() => this.setState({ selectedFile: null})} >\r\n \r\n \r\n \r\n\r\n \r\n\r\n )\r\n\r\n }\r\n else {\r\n return (\r\n \r\n \r\n {\"Drag photos below, or click for file browser...\"}\r\n \r\n \r\n \r\n theme.palette.secondary.main }} onClick={this.handleExistingPhoto} >\r\n \r\n \r\n \r\n\r\n \r\n \r\n )\r\n /* return \"Drag photos below, or click for file browser...\";*/\r\n }\r\n }\r\n\r\n return (\r\n 1 ? \"Upload Images\" : \"Upload Image\") : \"Upload Image\"}\r\n subTitleContent={inst()}\r\n handleSave={this.state.selectedFile ? this.handleSavePhoto : null}\r\n >\r\n \r\n {this.state.selectedFile ?\r\n <>\r\n \r\n \r\n \r\n theme.palette.secondary.main}} onClick={this.handleScaleUpImage} />\r\n \r\n \r\n theme.palette.secondary.main }} onClick={this.handleScaleDownImage} />\r\n \r\n \r\n theme.palette.secondary.main }} onClick={this.handleRotateImage} />\r\n \r\n \r\n \r\n :\r\n this.handleDrop(acceptedFiles)}\r\n onDragOver={this.handleDragOverDropZone}\r\n onDragLeave={this.handleDragLeaveDropZone}\r\n >\r\n {({ getRootProps, getInputProps }) => (\r\n
\r\n \r\n
\r\n this.props.dark ? \"#bbb\" : \"#444\" }} style={{ fontSize: \"76px\" }} />\r\n
\r\n
\r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { Section } from '../Utilities/Section';\r\nimport { Spin } from '../Utilities/Spin';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport Chip from '@mui/material/Chip';\r\n\r\n\r\nexport class UserSiteAbout extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n about = () => {\r\n if (this.props.loading) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n return (\r\n \r\n
\r\n \r\n {(this.props.siteProfile && this.props.siteProfile.gender) &&\r\n \r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.relationshipStatus) &&\r\n \r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.sexualPreference) &&\r\n \r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.politicalSlant) &&\r\n \r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.religiousViews) &&\r\n \r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.socialType) &&\r\n \r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.dob) &&\r\n \r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.weddingAnniversary) &&\r\n \r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.jobAnniversary) &&\r\n \r\n }\r\n \r\n
\r\n {(this.props.siteProfile && ((this.props.siteProfile.emailAddresses && this.props.siteProfile.emailAddresses.length > 0) || (this.props.siteProfile.addresses && this.props.siteProfile.addresses.length > 0) || (this.props.siteProfile.phoneNumbers && this.props.siteProfile.phoneNumbers.length >0))) &&\r\n
\r\n \r\n {(this.props.siteProfile && this.props.siteProfile.emailAddresses) &&\r\n this.props.siteProfile.emailAddresses.map((item) => {\r\n return ()\r\n })\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.addresses) &&\r\n this.props.siteProfile.addresses.map((item) => {\r\n return ()\r\n })\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.phoneNumbers) &&\r\n this.props.siteProfile.phoneNumbers.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.interests && this.props.siteProfile.interests.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.interests.map((item) => {\r\n return ()\r\n })\r\n } \r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.movieTastes && this.props.siteProfile.movieTastes.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.movieTastes.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.musicTastes && this.props.siteProfile.musicTastes.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.musicTastes.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && (this.props.siteProfile.foodTastes && this.props.siteProfile.foodTastes.length > 0)) &&\r\n
\r\n \r\n {this.props.siteProfile.foodTastes.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.drinkTastes && this.props.siteProfile.drinkTastes.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.drinkTastes.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.readingTastes && this.props.siteProfile.readingTastes.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.readingTastes.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.personalStrengths && this.props.siteProfile.personalStrengths.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.personalStrengths.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.personalWeaknesses && this.props.siteProfile.personalWeaknesses.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.personalWeaknesses.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.educationHistory && this.props.siteProfile.educationHistory.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.educationHistory.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.employmentHistory && this.props.siteProfile.employmentHistory.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.employmentHistory.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.lifeRoles && this.props.siteProfile.lifeRoles.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.lifeRoles.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.occupations && this.props.siteProfile.occupations.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.occupations.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.personalGoals && this.props.siteProfile.personalGoals.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.personalGoals.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.bucketList && this.props.siteProfile.bucketList.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.bucketList.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n {(this.props.siteProfile && this.props.siteProfile.lifeEvents && this.props.siteProfile.lifeEvents.length > 0) &&\r\n
\r\n \r\n {this.props.siteProfile.lifeEvents.map((item) => {\r\n return ()\r\n })\r\n }\r\n \r\n
\r\n }\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n return this.about();\r\n }\r\n}\r\n\r\n","\r\nexport async function createNotification(userid, type, refid, refuserid, message, appid) {\r\n const req = { UserID: userid, Type: type, RefID: refid, RefUserID: refuserid, Message: message, AppID: appid };\r\n const response = await fetch('notifications/createnotification', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getNotifications(all, appid) {\r\n\r\n const response = await fetch('notifications/getnotifications?all=' + (all ?? true) + '&appid=' + appid);\r\n\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nexport async function updateNotification(id, status) {\r\n const req = { NotificationID: id, NewStatus: status };\r\n const response = await fetch('notifications/updatenotification', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n","\r\nexport async function addReaction(targetid, type, reaction) {\r\n const req = { TargetID: targetid, TargetType: type, Reaction: reaction };\r\n const response = await fetch('reactions/addreaction', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getMyReactions() {\r\n let url = 'reactions/getmyreactions';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Materiual UI\r\nimport ThumbUpOutlinedIcon from '@mui/icons-material/ThumbUpOutlined';\r\nimport ThumbUpIcon from '@mui/icons-material/ThumbUp';\r\nimport Box from '@mui/material/Box';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport IconButton from '@mui/material/IconButton';\r\n\r\n//Database Services\r\nimport { createNotification } from '../../DataServices/NotificationService'\r\nimport { addReaction } from '../../DataServices/ReactionService'\r\n\r\n\r\nexport class Reactions extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n likeCount: this.props.likeCount,\r\n myReaction: this.props.myReaction,\r\n };\r\n }\r\n \r\n handleLikeMessage = async (e) => {\r\n if (this.state.myReaction === 0) {\r\n this.setState({\r\n myReaction: -1,\r\n likeCount: (this.state.likeCount - 1)\r\n });\r\n }\r\n else {\r\n if (this.state.myReaction === 1) {\r\n this.setState({\r\n loveCount: (this.state.loveCount - 1)\r\n });\r\n }\r\n\r\n this.setState({\r\n myReaction: 0,\r\n likeCount: (this.state.likeCount + 1)\r\n });\r\n let message = (this.props.user.displayName ? this.props.user.displayName : \"A user\") + \" liked your \" + this.props.targetTypeDesc;\r\n if (this.props.refUser.userID === this.props.user.userID) {\r\n message = \"You loved your own \" + this.props.targetTypeDesc;\r\n }\r\n await createNotification(this.props.refUser.userID, this.props.targetType, this.props.targetID, this.props.user.userID, message, this.props.appIdentifier);\r\n }\r\n\r\n await addReaction(this.props.targetID, this.props.targetType, 0);\r\n }\r\n\r\n tooltip = () => {\r\n if (this.state.likeCount >= 0) {\r\n const totalReactions = parseInt(this.state.likeCount);\r\n let suffix = \" likes\";\r\n if (totalReactions === 0) {\r\n return \"No likes yet\";\r\n }\r\n if (totalReactions === 1) {\r\n suffix = \" like\";\r\n }\r\n return totalReactions + suffix;\r\n }\r\n return \"Likes\"\r\n }\r\n render() {\r\n return (\r\n \r\n \r\n this.props.dark ? (this.props.noColor ? \"transparent\" : theme.palette.reactionContainer.dark) : \"transparent\"\r\n }}\r\n >\r\n this.props.dark ?\r\n (this.props.noColor ? theme.palette.common.white : theme.palette.secondary.main) \r\n :\r\n (this.state.myReaction === 0 ? (this.props.noColor ? theme.palette.common.black : theme.palette.secondary.main) : theme.palette.common.black )\r\n }}\r\n >\r\n {this.state.myReaction === 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","import React, { Component } from 'react';\r\nimport { default as MuiMenu } from '@mui/material/Menu';\r\n\r\nexport class Menu extends Component {\r\n content = () => {\r\n return (\r\n this.props.dark ? theme.palette.backgroundMenu.dark : theme.palette.backgroundMenu.light,\r\n border: (theme) => this.props.dark ? theme.palette.borderMenu.dark : theme.palette.borderMenu.light,\r\n color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack\r\n }\r\n }}\r\n MenuListProps={{\r\n dense: this.props.width < 600,\r\n sx: {\r\n backgroundColor: (theme) => this.props.dark ? theme.palette.backgroundMenu.dark : theme.palette.backgroundMenu.light,\r\n color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack\r\n }\r\n }}\r\n >\r\n {this.props.children}\r\n \r\n )\r\n\r\n }\r\n\r\n\r\n //main component render\r\n render() {\r\n return this.content()\r\n }\r\n}","\r\nexport async function sendEmail(toEmail, toName, subject, textContent, htmlContent, appid, sender) {\r\n const req = { RecipientEmail: toEmail, RecipientName: toName, Subject: subject, TextContent: textContent, HTMLContent: htmlContent, AppID: appid, SenderEmail: sender};\r\n console.log(req);\r\n const response = await fetch('email/sendemail', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const res = await response.json();\r\n return res;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { UserSite } from '../UserSites/UserSite';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { Menu } from '../Utilities/Menu'\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Typography from '@mui/material/Typography';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Skeleton from '@mui/material/Skeleton';\r\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport { styled } from '@mui/material/styles';\r\nimport Badge from '@mui/material/Badge';\r\n\r\n//Data Services\r\nimport { getPhotoThumb } from '../../DataServices/PhotoService'\r\nimport { followUser, unfollowUser, getSiteOptions, getUserAvatar } from '../../DataServices/UserService'\r\nimport { sendEmail } from '../../DataServices/EmailService'\r\n\r\nconst StyledBadge = styled(Badge)(({ theme }) => ({\r\n '& .MuiBadge-badge': {\r\n backgroundColor: '#44b700',\r\n color: '#44b700',\r\n boxShadow: `0 0 0 1px ${theme.palette.background.paper}`,\r\n '&::after': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n borderRadius: '50%',\r\n animation: 'ripple 1.2s infinite ease-in-out',\r\n border: '1px solid currentColor',\r\n content: '\"\"',\r\n },\r\n },\r\n '@keyframes ripple': {\r\n '0%': {\r\n transform: 'scale(.8)',\r\n opacity: 1,\r\n },\r\n '100%': {\r\n transform: 'scale(2.4)',\r\n opacity: 0,\r\n },\r\n },\r\n}));\r\n\r\nexport class UserAvatar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n anchorUserEl: null,\r\n showUserSite: false,\r\n avatarImage: this.props.user && (this.props.user.avatar ?? this.props.user.avatarB64),\r\n width: 0,\r\n height: 0,\r\n userSiteFullScreen: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getAvatar();\r\n this.updateWindowDimensions();\r\n window.addEventListener('resize', this.updateWindowDimensions);\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateWindowDimensions);\r\n }\r\n updateWindowDimensions = () => {\r\n this.setState({ width: window.innerWidth, height: window.innerHeight });\r\n }\r\n\r\n //Data getters\r\n getSiteOptions = async () => {\r\n\r\n const data = await getSiteOptions(this.props.user.userID);\r\n if (data) {\r\n data.user = this.props.user;\r\n this.setState({ siteOptions: data });\r\n if (data.coverPhotoID) {\r\n const thumb = await getPhotoThumb(data.coverPhotoID);\r\n if (thumb) {\r\n this.setState(\r\n state => {\r\n state.siteOptions.coverPhoto = thumb;\r\n return state;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n getAvatar = async () => {\r\n if (this.props.user && !this.state.avatarImage) {\r\n const avatar = await getUserAvatar(this.props.user.userID);\r\n if (avatar) {\r\n this.setState({ avatarImage: avatar.avatarB64 });\r\n // this.forceUpdate();\r\n }\r\n }\r\n }\r\n\r\n //event handlers\r\n handleShowUserMenu = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.setState({ anchorUserEl: e.currentTarget });\r\n }\r\n handleCloseUserMenu = (e) => {\r\n this.setState({ anchorUserEl: null });\r\n }\r\n handleUserSite = async (e) => {\r\n let target = e.target;\r\n target.style.cursor = 'wait';\r\n document.body.style.cursor = 'wait';\r\n this.handleCloseUserMenu();\r\n await this.getSiteOptions();\r\n this.setState({ showUserSite: true });\r\n target.style.cursor = 'default';\r\n document.body.style.cursor = 'default';\r\n }\r\n handleFollow = async () => {\r\n this.handleCloseUserMenu();\r\n const res = await followUser(this.props.activeUser.userID, this.props.user.userID);\r\n if (res) {\r\n this.props.handleFollow && this.props.handleFollow();\r\n }\r\n }\r\n handleUnfollow = async () => {\r\n this.handleCloseUserMenu();\r\n const res = await unfollowUser(this.props.activeUser.userID, this.props.user.userID);\r\n if (res) {\r\n this.props.handleUnfollow && this.props.handleUnfollow();\r\n }\r\n }\r\n handleMessageUser = async () => {\r\n this.handleCloseUserMenu();\r\n await sendEmail('brianesabin@gmail.com', 'Brian Sabin', 'Test Email', 'This is a test email!', '', this.props.appIdentifier);\r\n }\r\n handleCloseSite = (e, reason) => {\r\n if (reason !== \"backdropClick\") {\r\n this.setState({ showUserSite: false })\r\n }\r\n\r\n }\r\n\r\n userSite = () => {\r\n if (this.state.showUserSite) {\r\n return (\r\n this.setState({ userSiteFullScreen: val })}\r\n toggleFullScreen={this.state.width < 600 ? false : true}\r\n solid\r\n fullHeight\r\n noPad\r\n disableButtons\r\n maxWidth=\"xl\"\r\n hideScroll\r\n >\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n userMenu = () => {\r\n return (\r\n \r\n \r\n User Site\r\n \r\n {(this.props.user && this.props.user.following) ?\r\n Stop Following\r\n :\r\n {\"Follow \" + this.props.user.firstName ?? \"\"} \r\n }\r\n Message\r\n {this.props.post && Hide Posts}\r\n {this.props.menuItem1 && { this.setState({ anchorUserEl: null }); this.props.menuItem1(this.props.user, this.props.userIndex); }}>{this.props.menuItem1Label ? this.props.menuItem1Label : \"Custom Action\"}}\r\n \r\n )\r\n\r\n }\r\n userAvatar = () => {\r\n return (\r\n \r\n \r\n {this.props.loaded ?\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {this.userMenu()}\r\n \r\n :\r\n \r\n }\r\n \r\n {!this.props.hideName &&\r\n \r\n {this.props.loaded ?\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack, fontWeight: 550 }}>\r\n {this.props.user.firstName + \" \" + this.props.user.lastName}\r\n \r\n\r\n {this.props.user.following &&\r\n\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n\r\n \r\n :\r\n \r\n }\r\n {this.props.post &&\r\n <>\r\n {(this.props.loaded && this.props.post && (this.props.post.whenPosted || this.props.post.postDate)) ?\r\n \r\n {this.props.post.whenPosted ?? new Date(this.props.post.postDate).toLocaleDateString()}\r\n \r\n :\r\n \r\n }\r\n \r\n }\r\n \r\n }\r\n {this.state.showUserSite && this.userSite()}\r\n \r\n )\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.userAvatar()\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom components\r\nimport { Reactions } from '../Reactions/Reactions';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\n\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport Paper from '@mui/material/Paper';\r\nimport Box from '@mui/material/Box';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nexport class Reply extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n anchorEl: null,\r\n showReplies: false,\r\n showConfirmDelete: false\r\n };\r\n }\r\n\r\n //event handlers\r\n handleClose = () => {\r\n this.setState({ anchorEl: null });\r\n };\r\n handleDelete = () => {\r\n this.handleClose();\r\n this.setState({ showConfirmDelete: true }); \r\n }\r\n handleConfirmDelete = () => {\r\n this.setState({ showConfirmDelete: false});\r\n this.props.handleDelete(this.props.message.id, this.props.idx);\r\n }\r\n handleEdit = () => {\r\n this.handleClose();\r\n this.props.handleEdit(this.props.message.id, this.props.idx);\r\n }\r\n\r\n //Render funcs\r\n avatar = () => {\r\n return (\r\n \r\n )\r\n }\r\n userAvatar = (me) => {\r\n return (\r\n \r\n {this.avatar()}\r\n \r\n )\r\n }\r\n msgMenu = () => {\r\n return (\r\n this.setState({ anchorEl: null })}\r\n PaperProps={{ style: { backgroundColor: this.props.dark ? \"#333\" : \"#e0e0e0\", color: this.props.dark ? \"#ccc\" : \"#444\" } }}\r\n MenuListProps={{ style: { backgroundColor: this.props.dark ? \"#333\" : \"#e0e0e0\", color: this.props.dark ? \"#ccc\" : \"#444\" } }}\r\n >\r\n\r\n Delete\r\n \r\n )\r\n }\r\n editButton = () => {\r\n return (\r\n \r\n this.setState({ anchorEl: e.currentTarget })}\r\n sx={{ color: (theme) => this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }}\r\n >\r\n \r\n \r\n \r\n )\r\n }\r\n deleteConfirmation = () => {\r\n return (\r\n this.setState({ showConfirmDelete: false })}\r\n handleSave={this.handleConfirmDelete}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\"\r\n />\r\n )\r\n }\r\n reactions = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n msg = () => {\r\n return (\r\n \r\n {this.userAvatar(this.props.message.fromMe)}\r\n \r\n this.props.dark ? theme.palette.reply.dark : theme.palette.reply.light,\r\n padding: \"8px\"\r\n }}>\r\n \r\n {this.props.message.fromMe && this.editButton()}\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack, fontSize: \".9rem\" }}>\r\n {this.props.message.commentText}\r\n \r\n \r\n \r\n {!this.props.message.fromMe && this.reactions()}\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack, fontSize: \".7rem\" }}>\r\n {this.props.message.whenPosted ? this.props.message.whenPosted : new Date(this.props.message.commentDate).toLocaleDateString() + \" \" + new Date(this.props.message.commentDate).toLocaleTimeString()}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n content = () => {\r\n return (\r\n <>\r\n {this.msg()}\r\n {this.msgMenu()}\r\n {this.deleteConfirmation()}\r\n \r\n );\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n\r\n","import React, { PureComponent } from 'react';\r\n\r\n//custom components\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { Spin } from '../Utilities/Spin'\r\nimport { Reply } from './Reply';\r\n\r\n//materialui\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport Box from '@mui/material/Box';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport Stack from '@mui/material/Stack';\r\nimport Button from '@mui/material/Button';\r\n\r\n//data functions\r\nimport { getPhotoThumb } from '../../DataServices/PhotoService'\r\nimport { createNotification } from '../../DataServices/NotificationService'\r\n\r\nexport class Replies extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loadIndex: 0,\r\n loadCount: 10,\r\n comments: [],\r\n loading: false,\r\n loaded: false,\r\n showComments: false,\r\n avatarPhotos: [this.props.user.avatar && { userID: this.props.user.userID, avatar: this.props.user.avatar }],\r\n };\r\n }\r\n \r\n componentDidUpdate() {\r\n if (!this.state.loading && !this.state.loaded && this.state.showComments) {\r\n this.getReplies();\r\n }\r\n }\r\n getReplies = async () => {\r\n this.setState({ loading: true });\r\n const response = await fetch('comment/getchildcomments?commentid=' + this.props.targetID + \"&index=\" + this.state.loadIndex + \"&count=\" + this.state.loadCount);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data && data.length > 0) {\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n if (state.comments === null) {\r\n state.comments = [];\r\n }\r\n data.map((comment, index) => {\r\n state.comments.push(comment);\r\n });\r\n return { state };\r\n }\r\n );\r\n this.setState({ loading: false, loaded: true });\r\n this.loadAvatars();\r\n }\r\n else {\r\n this.setState({ loading: false, loaded: true });\r\n\r\n }\r\n }\r\n }\r\n loadAvatars = async () => {\r\n if (this.state.comments && this.state.comments.length > 0) {\r\n for (var i = 0; i < this.state.comments.length; i++) {\r\n let cuser = this.state.comments[i].user;\r\n if (!cuser.avatarB64) {\r\n const euser = this.state.avatarPhotos.find(x => x.userID === cuser.userID);\r\n if (euser) {\r\n const eavatar = euser.avatar;\r\n if (eavatar) {\r\n const comments = this.state.comments;\r\n comments[i].user.avatarB64 = eavatar;\r\n this.setState({ comments });\r\n this.forceUpdate();\r\n }\r\n else {\r\n const avatar = await getPhotoThumb(cuser.userID);\r\n const avatarPhotos = this.state.avatarPhotos;\r\n avatarPhotos.push({ userID: euser.userID, avatar: avatar });\r\n const comments = this.state.comments;\r\n comments[i].user.avatarB64 = avatar;\r\n this.setState({ comments, avatarPhotos });\r\n this.forceUpdate();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n updateComments(comments) {\r\n this.setState({ comments: comments });\r\n }\r\n handleKeyPress = (event) => {\r\n if (event.key === 'Enter') {\r\n this.handlePostComment();\r\n }\r\n }\r\n handlePostComment = async () => {\r\n const msg = document.getElementById(\"newReply\" + this.props.targetID).value;\r\n if (msg) {\r\n document.getElementById(\"newReply\" + this.props.targetID).value = \"\";\r\n const req = { TargetType: this.props.targetType, TargetID: this.props.targetID, CommentText: msg };\r\n //save data and get new id as response\r\n const response = await fetch('comment/addcomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n let user = this.props.user;\r\n if (user) {\r\n user.avatarB64 = user.avatar;\r\n }\r\n const itemToInsert = await response.json().then(function (text) {\r\n var newItem = {\r\n id: text,\r\n fromMe: true,\r\n commentText: msg,\r\n commentDate: new Date,\r\n likeCount: 0,\r\n loveCount: 0,\r\n commentCount:0,\r\n myReaction: -1,\r\n whenPosted: \"just now\",\r\n user: user ?? { firstName: \"Me\", lastName: \"\" }\r\n };\r\n return newItem;\r\n });\r\n\r\n const comments = [...this.state.comments];\r\n comments.push(itemToInsert);\r\n this.setState({ comments: comments });\r\n this.props.updateReplyCount(this.props.commentCount + 1);\r\n this.setState({ show: true });\r\n\r\n let message = this.props.user.displayName + \" replied to your comment\";\r\n if (this.props.refUser.userID === this.props.user.userID) {\r\n message = \"You replied to your own comment\";\r\n }\r\n await createNotification(this.props.refUser.userID, 3, this.state.targetID, this.props.user.userID, message, this.props.appIdentifier);\r\n }\r\n\r\n }\r\n handleEditComment = async (id, idx, commentText) => {\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n state.comments[idx].commentText = commentText;\r\n return { state };\r\n }\r\n );\r\n const req = { CommentID: id, CommentText: commentText };\r\n await fetch('comment/editcomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n }\r\n handleDeleteComment = async (id, idx) => {\r\n const comments = [...this.state.comments];\r\n comments.splice(idx, 1);\r\n this.setState({ comments });\r\n if (this.state.comments.length < 1) {\r\n this.setState({ show: false });\r\n }\r\n this.props.updateReplyCount(this.props.commentCount - 1);\r\n const req = { CommentID: id };\r\n await fetch('comment/deletecomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n }\r\n\r\n //render funcs\r\n items = () => {\r\n return (\r\n \r\n {this.state.comments.map((comment, index) => (\r\n \r\n ))}\r\n \r\n )\r\n }\r\n composer = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n commentButton = () => {\r\n let commentLinkLabel = \"Replies\";\r\n if (this.props.commentCount === 0) commentLinkLabel = \"No Replies Yet\";\r\n if (this.props.commentCount === 1) commentLinkLabel = \"1 Reply\";\r\n if (this.props.commentCount > 1) commentLinkLabel = this.props.commentCount + \" Replies\";\r\n return (\r\n <>\r\n this.setState({ showComments: !this.state.showComments })}\r\n >{commentLinkLabel}\r\n \r\n {this.state.loading &&\r\n \r\n \r\n \r\n }\r\n \r\n )\r\n }\r\n replies = () => {\r\n return (\r\n
\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n sx={{ margin: \"0px\" }}\r\n onClick={() => this.setState({ showComments: !this.state.showComments })}\r\n >\r\n {this.props.commentCount > 0 ? this.commentButton() : this.composer()}\r\n \r\n \r\n {!this.state.loading &&\r\n <>\r\n {this.items()}\r\n {this.props.commentCount > 0 && this.composer()}\r\n \r\n }\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n //main render func\r\n render() {\r\n return this.replies();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Reactions } from '../Reactions/Reactions';\r\n\r\n//Custom Components\r\nimport { Replies } from './Replies';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\n\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport Paper from '@mui/material/Paper';\r\nimport Box from '@mui/material/Box';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nexport class Comment extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n anchorEl: null,\r\n showReplies: false,\r\n showConfirmDelete: false\r\n };\r\n }\r\n\r\n //event handlers\r\n handleClose = () => {\r\n this.setState({ anchorEl: null });\r\n };\r\n handleDelete = (id, idx) => {\r\n this.setState({\r\n anchorEl: null,\r\n showConfirmDelete: true,\r\n selectedMessageID: id,\r\n selectedMessageIDX: idx\r\n });\r\n\r\n }\r\n handleConfirmDelete = () => {\r\n this.setState({ showConfirmDelete: false });\r\n this.props.handleDelete(this.state.selectedMessageID, this.state.selectedMessageIDX);\r\n }\r\n handleEdit = (id, idx) => {\r\n this.handleClose();\r\n this.props.handleEdit(id, idx);\r\n }\r\n handleAddReply = () => {\r\n const val = document.getElementById(\"newReply\" + this.props.message.id).value;\r\n if (val) {\r\n this.props.cbAddReply(this.props.message.id, this.props.idx, val);\r\n document.getElementById(\"newReply\" + this.props.message.id).value = \"\";\r\n }\r\n }\r\n handleKeyPress = (event) => {\r\n if (event.key === 'Enter') {\r\n this.handleAddReply();\r\n }\r\n }\r\n updateReplyCount = (count) => {\r\n this.props.updateReplyCount(this.props.idx, count);\r\n }\r\n\r\n //Render funcs\r\n avatar = () => {\r\n return (\r\n \r\n )\r\n }\r\n editButton = () => {\r\n return (\r\n \r\n this.setState({ anchorEl: e.currentTarget })}\r\n sx={{ color: (theme) => this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }}\r\n >\r\n \r\n \r\n \r\n )\r\n }\r\n msgMenu = () => {\r\n return (\r\n this.setState({ anchorEl: null })}\r\n PaperProps={{ elevation: 4, sx: { backgroundColor: (theme) => this.props.dark ? theme.palette.backgroundModal.dark : theme.palette.backgroundModal.light, color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack } }}\r\n MenuListProps={{ sx: { backgroundColor: (theme) => this.props.dark ? theme.palette.backgroundModal.dark : theme.palette.backgroundModal.light, color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack } }}\r\n >\r\n this.handleDelete(this.props.message.id, this.props.index)}>Delete\r\n \r\n )\r\n }\r\n deleteConfirmation = () => {\r\n return (\r\n this.setState({ showConfirmDelete: false })}\r\n handleSave={this.handleConfirmDelete}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\"\r\n />\r\n )\r\n }\r\n userAvatar = (me) => {\r\n return (\r\n \r\n {this.avatar()}\r\n \r\n )\r\n }\r\n replies = () => {\r\n return (\r\n )\r\n } \r\n reactions = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n msg = () => {\r\n return (\r\n \r\n {this.userAvatar(this.props.message.fromMe)}\r\n \r\n this.props.dark ? theme.palette.comment.dark : theme.palette.comment.light, padding: \"8px\" }}\r\n >\r\n \r\n {this.props.message.fromMe && this.editButton()}\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack, fontSize: \".9rem\" }}>\r\n {this.props.message.commentText}\r\n \r\n \r\n \r\n {!this.props.message.fromMe && this.reactions()}\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack, fontSize: \".7rem\" }}>\r\n {this.props.message.whenPosted ? this.props.message.whenPosted : new Date(this.props.message.commentDate).toLocaleDateString() + \" \" + new Date(this.props.message.commentDate).toLocaleTimeString()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.replies()}\r\n \r\n \r\n )\r\n }\r\n content = () => {\r\n return (\r\n <>\r\n {this.msg()}\r\n {this.deleteConfirmation()}\r\n {this.msgMenu()}\r\n \r\n );\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n\r\n","export async function getMyComments(index, count) {\r\n let url = 'comment/getmycomments?index=' + index + '&count=' + count;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\n\r\nexport async function getComments(targetid, index, count) {\r\n let url = 'comment/getcomments?targetid=' + targetid + \"&index=\" + index + \"&count=\" + count;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\n","import React, { PureComponent } from 'react';\r\n\r\n//Custom Components\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { Spin } from '../Utilities/Spin'\r\nimport { Comment } from './Comment';\r\n\r\n//Material UI\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport Button from '@mui/material/Button';\r\n\r\n//Database Services\r\nimport { createNotification } from '../../DataServices/NotificationService'\r\nimport { getComments } from '../../DataServices/CommentService'\r\nimport { getPhotoThumb } from '../../DataServices/PhotoService'\r\n\r\nexport class Comments extends PureComponent {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n targetID: this.props.targetID,\r\n targetType: this.props.targetType,\r\n commentCount: this.props.commentCount,\r\n loadIndex: 0,\r\n loadCount: 10,\r\n comments: [],\r\n showComments: false,\r\n loading: false,\r\n show: false,\r\n loaded: false,\r\n avatarPhotos: [this.props.user.avatar ? { userID: this.props.user.userID, avatar: this.props.user.avatar } : { UserID:\"\", avatar:\"\"}],\r\n };\r\n }\r\n \r\n componentDidUpdate() {\r\n if (!this.state.loaded && this.state.showComments) {\r\n this.getItems();\r\n }\r\n }\r\n\r\n getItems = async () => {\r\n this.setState({ loading: true });\r\n const data = await getComments(this.state.targetID, this.state.loadIndex, this.state.loadCount );\r\n if (data === 'error') {\r\n return;\r\n }\r\n if (data) {\r\n this.setState({\r\n comments: data,\r\n loading: false,\r\n loaded: true\r\n });\r\n this.loadAvatars();\r\n }\r\n }\r\n loadAvatars = async () => {\r\n if (this.state.comments && this.state.comments.length > 0) {\r\n for (var i = 0; i < this.state.comments.length; i++) {\r\n let cuser = this.state.comments[i].user;\r\n if (!cuser.avatarB64) {\r\n const euser = this.state.avatarPhotos.find(x => x.userID === cuser.userID);\r\n if (euser) {\r\n const eavatar = euser.avatar;\r\n if (eavatar) {\r\n const comments = this.state.comments;\r\n comments[i].user.avatarB64 = eavatar;\r\n this.setState({ comments });\r\n this.forceUpdate();\r\n }\r\n else {\r\n const avatar = await getPhotoThumb(cuser.userID);\r\n const avatarPhotos = this.state.avatarPhotos;\r\n avatarPhotos.push({ userID: euser.userID, avatar: avatar });\r\n const comments = this.state.comments;\r\n comments[i].user.avatarB64 = avatar;\r\n this.setState({ comments, avatarPhotos });\r\n this.forceUpdate();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n updateComments(comments) {\r\n this.setState({ comments: comments });\r\n }\r\n handleKeyPress = (event) => {\r\n if (event.key === 'Enter') {\r\n this.handlePostComment();\r\n }\r\n }\r\n handlePostComment = async () => {\r\n const msg = document.getElementById(\"newComment\" + this.state.targetID).value;\r\n if (msg) {\r\n document.getElementById(\"newComment\" + this.state.targetID).value = \"\";\r\n const req = { TargetType: this.props.targetType, TargetID: this.state.targetID, CommentText: msg };\r\n //save data and get new id as response\r\n const response = await fetch('comment/addcomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n const user = this.props.user;\r\n const itemToInsert = await response.json().then(function (text) {\r\n var newItem = {\r\n id: text,\r\n fromMe: true,\r\n commentText: msg,\r\n commentDate: new Date(),\r\n likeCount: 0,\r\n loveCount: 0,\r\n commentCount:0,\r\n myReaction: -1,\r\n comments:[],\r\n whenPosted: \"just now\",\r\n user: user ?? { firstName: \"Me\", lastName: \"\" }\r\n };\r\n return newItem;\r\n });\r\n\r\n const comments = [...this.state.comments];\r\n comments.push(itemToInsert);\r\n this.setState({ comments: comments });\r\n\r\n if (this.props.updateCommentCount) {\r\n this.props.updateCommentCount(this.state.commentCount + 1);\r\n }\r\n this.setState({ commentCount: this.state.commentCount + 1 });\r\n this.setState({ show: true });\r\n }\r\n let message = this.props.user.displayName + \" commented on your \" + this.props.targetTypeDesc;\r\n if (this.props.refUser.userID === this.props.user.userID) {\r\n message = \"You commented on your own \" + this.props.targetTypeDesc;\r\n }\r\n await createNotification(this.props.refUser.userID, 3, this.state.targetID, this.props.user.userID, message, this.props.appIdentifier);\r\n }\r\n handleEditComment = async (id, idx, commentText) => {\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n state.comments[idx].commentText = commentText;\r\n return { state };\r\n }\r\n );\r\n const req = { CommentID: id, CommentText: commentText };\r\n await fetch('comment/editcomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n }\r\n handleDeleteComment = async (id, idx) => {\r\n\r\n const comments = [...this.state.comments];\r\n comments.splice(idx, 1);\r\n this.setState({ comments});\r\n\r\n if (this.props.updateCommentCount) {\r\n this.props.updateCommentCount(this.state.commentCount - 1);\r\n }\r\n this.props.updateCommentCount(this.state.commentCount - 1);\r\n this.setState({ commentCount: this.state.commentCount - 1 });\r\n\r\n const req = { CommentID: id };\r\n await fetch('comment/deletecomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n }\r\n handleAddReply = async (id, idx, reply) => {\r\n\r\n const req = { TargetID: id, CommentText: reply };\r\n //save data and get new id as response\r\n const response = await fetch('comment/addcomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n let user = this.props.user;\r\n if (user) {\r\n user.avatarB64 = user.avatar;\r\n }\r\n const itemToInsert = await response.json().then(function (text) {\r\n \r\n var newItem = {\r\n id: text,\r\n fromMe: true,\r\n commentText: reply,\r\n commentDate: new Date(),\r\n likeCount: 0,\r\n loveCount: 0,\r\n myReaction: -1,\r\n whenPosted: \"just now\",\r\n user: user ?? { firstName: \"Me\", lastName: \"\" }\r\n };\r\n return newItem;\r\n });\r\n\r\n \r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n if (!state.comments[idx].comments) {\r\n state.comments[idx].comments = [];\r\n }\r\n state.comments[idx].comments.push(itemToInsert);\r\n state.comments[idx].commentCount++;\r\n return { state };\r\n }\r\n );\r\n }\r\n handleDeleteReply = async (id, idx, replyidx) => {\r\n\r\n var newList = this.state.comments[idx].comments.splice(replyidx, 1);\r\n\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n state.comments[idx].comments = newList;\r\n return { state };\r\n }\r\n );\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n state.comments[idx].commentCount = this.state.comments[idx].commentCount - 1;\r\n return { state };\r\n }\r\n );\r\n\r\n const req = { CommentID: id };\r\n await fetch('comment/deletecomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n }\r\n handleEditReply = async (id, idx, editidx, reply) => {\r\n\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n state.comments[idx].comments[editidx].commentText = reply;\r\n return { state };\r\n }\r\n );\r\n const req = { CommentID: id, CommentText: reply};\r\n await fetch('comment/editcomment', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n }\r\n handleGetReplies = async (id, idx, loadindex, loadcount) => {\r\n const response = await fetch('comment/getchildcomments?commentid=' + id + \"&index=\" + loadindex + \"&count=\" + loadcount);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data && data.length > 0) {\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n if (state.comments[idx].comments === null) {\r\n state.comments[idx].comments = [];\r\n }\r\n state.comments[idx].comments = [];\r\n var i;\r\n for (i = 0; i < data.length; i++) {\r\n state.comments[idx].comments.push(data[i]);\r\n }\r\n return { state };\r\n }\r\n );\r\n }\r\n }\r\n }\r\n updateReplyCount = (idx, count) => {\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n state.comments[idx].commentCount = count;\r\n return { state };\r\n }\r\n );\r\n }\r\n\r\n //redner funcs\r\n composer = () => {\r\n return (\r\n \r\n \r\n \r\n\r\n )\r\n }\r\n items = () => {\r\n return (\r\n \r\n {this.state.comments.map((comment, index) => (\r\n \r\n ))}\r\n \r\n )\r\n } \r\n commentButton = () => {\r\n var commentLinkLabel = \"Comments\";\r\n if (this.state.commentCount === 0) commentLinkLabel = \"No Comments Yet\";\r\n if (this.state.commentCount === 1) commentLinkLabel = \"1 Comment\";\r\n if (this.state.commentCount > 1) commentLinkLabel = this.state.commentCount + \" Comments\";\r\n return (\r\n <>\r\n this.setState({ showComments: !this.state.showComments })}\r\n >{commentLinkLabel}\r\n \r\n {this.state.loading &&\r\n \r\n \r\n \r\n }\r\n \r\n )\r\n } \r\n comments = () => {\r\n return (\r\n
\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"panel1a-header\"\r\n onClick={() => this.setState({ showComments: !this.state.showComments })}\r\n >\r\n {this.state.commentCount > 0 ? this.commentButton() : this.composer()}\r\n \r\n \r\n {(!this.state.loading && this.state.commentCount > 0) &&\r\n <>\r\n {this.items()}\r\n {this.composer()}\r\n \r\n }\r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.comments();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Box from '@mui/material/Box';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Chip from '@mui/material/Chip';\r\nimport { TextInput } from '../Utilities/TextInput';\r\n\r\nexport class Tags extends Component {\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tags: [],\r\n };\r\n }\r\n componentDidMount() {\r\n this.getTextTags();\r\n }\r\n getTextTags = async () => {\r\n const response = await fetch('tags/gettexttags?targetid= ' + this.props.targetID);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n this.setState({ tags: data });\r\n }\r\n }\r\n\r\n parseTags = (text) => {\r\n var regex = /(?:^|\\s)(?:#)([a-zA-Z\\d]+)/gm;\r\n var matches = [];\r\n var match;\r\n\r\n while ((match = regex.exec(text))) {\r\n matches.push(match[1]);\r\n }\r\n\r\n return matches;\r\n }\r\n\r\n handleRemoveTag = (idx) => {\r\n const tag = this.state.tags[idx];\r\n let originalPost = this.state.postValue\r\n let tagStart = originalPost.indexOf(\"#\" + tag);\r\n const finalString = originalPost.slice(0, tagStart) + originalPost.slice(tagStart + 1);\r\n var ele = document.getElementById(\"newPostTextContent\");\r\n if (ele) {\r\n ele.value = finalString;\r\n var event = new Event('input', {\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n ele.dispatchEvent(event);\r\n }\r\n }\r\n\r\n handleInput = (e) => {\r\n var val = e.target.value;\r\n let tags = this.parseTags(val);\r\n if (this.state.tags !== tags) {\r\n this.setState({ tags: tags });\r\n }\r\n }\r\n\r\n handleBlur = (e) => {\r\n var val = e.target.value;\r\n let tags = this.parseTags(val);\r\n if (this.state.tags !== tags) {\r\n this.setState(\r\n state => {\r\n state.tags.push(tags);\r\n return state;\r\n }\r\n );\r\n e.target.value = \"\";\r\n }\r\n }\r\n\r\n render() {\r\n const tagInput = (\r\n \r\n )\r\n\r\n const tagContainer = () => {\r\n if (this.state.tags !== null) {\r\n return (\r\n \r\n {tagInput}\r\n {this.state.tags.map((item, index) => {\r\n return (\r\n this.handleRemoveTag(index)}\r\n size=\"small\"\r\n color=\"secondary\"\r\n sx={{ marginRight: \"6px\", marginBottom: \"6px\" }}\r\n\r\n />\r\n )\r\n })}\r\n \r\n )\r\n }\r\n }\r\n\r\n return (\r\n \r\n {tagContainer()}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { ModalDialog } from '../../Utilities/ModalDialog';\r\nimport Box from '@mui/material/Box';\r\nimport Button from '@mui/material/Button';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Slider from '@mui/material/Slider';\r\nimport Stack from '@mui/material/Stack';\r\nimport Typography from '@mui/material/Typography';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Switch from '@mui/material/Switch';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore';\r\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\r\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\r\nimport { HexColorInput, HexColorPicker } from \"react-colorful\";\r\nimport Cropper from 'react-easy-crop';\r\n//import getCroppedImg from './CropImage';\r\nimport { EyeDropper, OnChangeEyedrop, useEyeDrop } from 'react-eyedrop'\r\n\r\nimport { blobToBase64 } from '../../../DataServices/Utility'\r\nimport { updatePhoto } from '../../../DataServices/PhotoService'\r\n//import 'context-filter-polyfill/dist/index.js'\r\n\r\n\r\nexport const createImage = (url) =>\r\n new Promise((resolve, reject) => {\r\n const image = new Image()\r\n image.addEventListener('load', () => resolve(image))\r\n image.addEventListener('error', (error) => reject(error))\r\n image.setAttribute('crossOrigin', 'anonymous') // needed to avoid cross-origin issues on CodeSandbox\r\n image.src = url\r\n })\r\n\r\nexport function getRadianAngle(degreeValue) {\r\n return (degreeValue * Math.PI) / 180\r\n}\r\n\r\nexport function rotateSize(width, height, rotation) {\r\n const rotRad = getRadianAngle(rotation)\r\n\r\n return {\r\n width:\r\n Math.abs(Math.cos(rotRad) * width) + Math.abs(Math.sin(rotRad) * height),\r\n height:\r\n Math.abs(Math.sin(rotRad) * width) + Math.abs(Math.cos(rotRad) * height),\r\n }\r\n}\r\n\r\nexport default async function getCroppedImg(\r\n imageSrc,\r\n pixelCrop,\r\n rotation = 0,\r\n flip = { horizontal: false, vertical: false },\r\n backgroundColor,\r\n filters,\r\n base64\r\n) {\r\n const image = await createImage(imageSrc)\r\n const canvas = document.createElement('canvas')\r\n const ctx = canvas.getContext('2d')\r\n\r\n if (!ctx) {\r\n return null\r\n }\r\n\r\n const rotRad = getRadianAngle(rotation)\r\n\r\n // calculate bounding box of the rotated image\r\n const { width: bBoxWidth, height: bBoxHeight } = rotateSize(\r\n image.width,\r\n image.height,\r\n rotation\r\n )\r\n\r\n // set canvas size to match the bounding box\r\n canvas.width = bBoxWidth\r\n canvas.height = bBoxHeight\r\n\r\n\r\n //add selected background color to canvas\r\n ctx.fillStyle = backgroundColor ?? \"#222\";\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n if (filters) {\r\n ctx.filter = filters;\r\n }\r\n\r\n\r\n // translate canvas context to a central location to allow rotating and flipping around the center\r\n ctx.translate(bBoxWidth / 2, bBoxHeight / 2)\r\n ctx.rotate(rotRad)\r\n ctx.scale(flip.horizontal ? -1 : 1, flip.vertical ? -1 : 1)\r\n ctx.translate(-image.width / 2, -image.height / 2)\r\n\r\n //add selected background color to canvas\r\n ctx.fillStyle = backgroundColor ?? \"#222\";\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n\r\n // draw rotated image\r\n ctx.drawImage(image, 0, 0)\r\n\r\n // croppedAreaPixels values are bounding box relative\r\n // extract the cropped image using these values\r\n const data = ctx.getImageData(\r\n pixelCrop.x,\r\n pixelCrop.y,\r\n pixelCrop.width,\r\n pixelCrop.height\r\n )\r\n\r\n // set canvas width to final desired crop size - this will clear existing context\r\n canvas.width = pixelCrop.width\r\n canvas.height = pixelCrop.height\r\n \r\n //add selected background color to canvas\r\n ctx.fillStyle = backgroundColor ?? \"#222\";\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n\r\n // paste generated rotate image at the top left corner\r\n ctx.putImageData(data, 0, 0)\r\n\r\n \r\n if (base64) {\r\n // As Base64 string\r\n return canvas.toDataURL();\r\n }\r\n else { \r\n // As a blob\r\n return new Promise((resolve, reject) => {\r\n canvas.toBlob((file) => { resolve(file) })\r\n })\r\n }\r\n}\r\n\r\nexport class PhotoEditor extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.state = {\r\n src: this.props.src,\r\n page: 0,\r\n zoom: 1,\r\n crop: { x: 0, y: 0 },\r\n savedCrop: { x: 0, y: 0 },\r\n rotation: 0,\r\n blur: 0,\r\n brightness: 1,\r\n contrast: 1,\r\n grayscale: 0,\r\n hueRotate: 0,\r\n invert: 0,\r\n saturate: 100,\r\n opacity: 100,\r\n sepia: 0,\r\n aspect: 1 / 1,\r\n backgroundColor: \"#transparent\",\r\n showColorPicker: false,\r\n restrictPosition: true\r\n\r\n }\r\n }\r\n\r\n //event handlers\r\n resetFilters = () => {\r\n this.setState({\r\n blur: 0,\r\n brightness: 1,\r\n contrast: 1,\r\n grayscale: 0,\r\n hueRotate: 0,\r\n invert: 0,\r\n saturate: 100,\r\n opacity: 100,\r\n sepia: 0,\r\n });\r\n }\r\n handleGoToFilters = (e) => {\r\n this.setState({\r\n filteredB64: this.state.croppedB64,\r\n page: 1,\r\n })\r\n }\r\n handlePickColor = () => {\r\n this.setState({ showColorPicker: false });\r\n this.onCropComplete(null, this.state.savedCrop);\r\n\r\n }\r\n onCropComplete = async (croppedArea, croppedAreaPixels) => {\r\n const croppedImage = await getCroppedImg(\r\n this.state.src,\r\n croppedAreaPixels,\r\n this.state.rotation,\r\n false,\r\n this.state.backgroundColor,\r\n null,\r\n false\r\n )\r\n\r\n const fileUrl = URL.createObjectURL(croppedImage);\r\n this.setState({ croppedB64: fileUrl, savedCrop: croppedAreaPixels });\r\n \r\n }\r\n onFilterComplete = async () => {\r\n const croppedImageBlob = await getCroppedImg(\r\n this.state.src,\r\n this.state.savedCrop,\r\n this.state.rotation,\r\n false,\r\n this.state.backgroundColor,\r\n this.computeFilters(),\r\n false\r\n )\r\n\r\n const b64withPrefix = await blobToBase64(croppedImageBlob);\r\n const base64Image = b64withPrefix.split(',')[1];\r\n this.props.onSave(base64Image);\r\n this.setState({ finalBlob: croppedImageBlob });\r\n\r\n const file = new File([croppedImageBlob], \"image.png\", { type: \"image/png\", lastModified: Date.now() })\r\n updatePhoto(file, this.props.photoID);\r\n }\r\n\r\n handleSaveEdit = async () => {\r\n await this.onFilterComplete();\r\n\r\n\r\n }\r\n //render funcs\r\n zoomSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Zoom\r\n \r\n this.setState({ zoom: value })}\r\n step={0.05}\r\n min={0.1}\r\n max={6.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n />\r\n \r\n )\r\n }\r\n rotateSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Rotation\r\n \r\n this.setState({ rotation: value })}\r\n step={15.0}\r\n min={0.0}\r\n max={360.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n />\r\n \r\n )\r\n }\r\n aspectSwitch = () => {\r\n return (\r\n \r\n this.setState({ aspect: e.target.checked ? 1 / 1 : 4 / 3 })} size=\"small\" />}\r\n label={\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n {this.state.aspect === 1 / 1 ? \"Square\" : \"Rectangle\"}\r\n \r\n }\r\n />\r\n \r\n )\r\n }\r\n restrictPositionSwitch = () => {\r\n return (\r\n \r\n this.setState({ restrictPosition: e.target.checked})} size=\"small\" />}\r\n label={\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Restrict\r\n \r\n }\r\n />\r\n \r\n )\r\n }\r\n cropperComponent = () => {\r\n return (\r\n this.setState({ crop })}\r\n onCropComplete={this.onCropComplete}\r\n onZoomChange={(zoom) => this.setState({ zoom })}\r\n aspect={this.state.aspect}\r\n zoomWithScroll\r\n restrictPosition={this.state.restrictPosition}\r\n //objectFit=\"contain\"\r\n showGrid\r\n style={{\r\n containerStyle: {\r\n top: \"150px\",\r\n bottom: this.props.width < 600 ? \"56px\" : \"0px\",\r\n backgroundColor: this.props.dark ? \"#222\" : \"unset\"\r\n }\r\n }}\r\n\r\n />\r\n )\r\n }\r\n croppedPreview = () => {\r\n return (\r\n this.setState({ showColorPicker: true })}>\r\n \r\n \r\n )\r\n }\r\n blurSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Blur\r\n \r\n this.setState({ blur: value })}\r\n step={0.1}\r\n min={0.0}\r\n max={10.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n />\r\n \r\n )\r\n }\r\n brightnessSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Brightness\r\n \r\n this.setState({ brightness: value })}\r\n step={0.1}\r\n min={0.0}\r\n max={10.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n />\r\n \r\n )\r\n }\r\n contrastSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Contrast\r\n \r\n this.setState({ contrast: value })}\r\n step={0.1}\r\n min={0.0}\r\n max={10.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n />\r\n \r\n )\r\n }\r\n grayscaleSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Grayscale\r\n \r\n this.setState({ grayscale: value })}\r\n step={1.0}\r\n min={0.0}\r\n max={100.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n />\r\n \r\n )\r\n }\r\n hueRotateSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Hue\r\n \r\n this.setState({ hueRotate: value })}\r\n step={1.0}\r\n min={0.0}\r\n max={360.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n />\r\n \r\n )\r\n }\r\n invertSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Invert\r\n \r\n this.setState({ invert: value })}\r\n step={1.0}\r\n min={0.0}\r\n max={100.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n />\r\n \r\n )\r\n }\r\n saturateSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Saturation\r\n \r\n this.setState({ saturate: value })}\r\n step={1.0}\r\n min={0.0}\r\n max={300.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n />\r\n \r\n )\r\n }\r\n opacitySlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Opacity\r\n \r\n this.setState({ opacity: value })}\r\n step={1.0}\r\n min={0.0}\r\n max={100.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n \r\n />\r\n \r\n )\r\n }\r\n sepiaSlider = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Sepia\r\n \r\n this.setState({ sepia: value })}\r\n step={1.0}\r\n min={0.0}\r\n max={100.0}\r\n aria-label=\"Default\"\r\n valueLabelDisplay=\"auto\"\r\n color=\"secondary\"\r\n size={this.props.width < 600 && \"small\"}\r\n \r\n />\r\n \r\n )\r\n }\r\n computeFilters = () => {\r\n let filters = `blur(${this.state.blur}px) brightness(${this.state.brightness}) contrast(${this.state.contrast}) grayscale(${this.state.grayscale}%) hue-rotate(${this.state.hueRotate}deg) invert(${this.state.invert}%) saturate(${this.state.saturate}%) opacity(${this.state.opacity}%) sepia(${this.state.sepia}%)`;\r\n return (\r\n filters\r\n )\r\n }\r\n filterPreview = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n colorPicker = () => {\r\n return (\r\n this.setState({ showColorPicker: false })}\r\n saveLabel=\"Select Color\"\r\n handleSave={this.handlePickColor}\r\n handleDelete={() => this.setState({ showColorFromImagePicker: true })}\r\n deleteLabel=\"From Image\"\r\n fullWidth={false}\r\n maxWidth=\"xs\"\r\n noSidePad\r\n containedButton\r\n fullHeight\r\n >\r\n this.setState({ backgroundColor: color })} />\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black, my: \"auto\", mr: 1 }}>Color\r\n this.setState({ backgroundColor: color })} />\r\n \r\n {this.colorFromImagePicker()}\r\n
\r\n )\r\n }\r\n handleSelectColorFromImageClick = async (event) => {\r\n var img = await createImage(this.props.src);\r\n //img.setAttribute('crossOrigin', 'anonymous') \r\n console.log(img);\r\n var canvas = document.createElement('canvas');\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height);\r\n var pixelData = canvas.getContext('2d').getImageData(event.offsetX, event.offsetY, 1, 1).data;\r\n if (pixelData && pixelData.length === 4) {\r\n const rgbaColor = `rgba(${pixelData[0]},${pixelData[1]},${pixelData[2]},${pixelData[3]})`;\r\n this.setState({ backgroundColor: rgbaColor, showColorFromImagePicker: false });\r\n }\r\n }\r\n handleEyedropperChange = (color) => {\r\n this.setState({ backgroundColor: color.hex, showColorFromImagePicker: false });\r\n }\r\n colorFromImagePicker = () => {\r\n return (\r\n this.setState({ showColorFromImagePicker: false })}\r\n fullWidth={false}\r\n maxWidth=\"xs\"\r\n noSidePad\r\n fullHeight\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n
\r\n )\r\n }\r\n filterPage = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n theme.palette.secondary.main, color: \"white\" }} onClick={() => this.setState({ page: 0 })}>\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {this.filterPreview()}\r\n \r\n {this.filterControls()}\r\n \r\n )\r\n }\r\n filterControls = () => {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Filters\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {this.blurSlider()}\r\n {this.brightnessSlider()}\r\n {this.contrastSlider()}\r\n {this.grayscaleSlider()}\r\n {this.hueRotateSlider()}\r\n {this.invertSlider()}\r\n {this.saturateSlider()}\r\n {this.opacitySlider()}\r\n {this.sepiaSlider()}\r\n \r\n )\r\n }\r\n cropPage = () => {\r\n return (\r\n <>\r\n \r\n\r\n {this.zoomSlider()}\r\n {this.rotateSlider()}\r\n \r\n {this.aspectSwitch()}\r\n {this.restrictPositionSwitch()}\r\n \r\n \r\n {this.state.croppedB64 && this.croppedPreview()}\r\n {this.colorPicker()}\r\n \r\n \r\n theme.palette.secondary.main, color: \"white\" }} onClick={this.handleGoToFilters}>\r\n \r\n \r\n \r\n \r\n {this.cropperComponent()}\r\n \r\n )\r\n }\r\n content = () => {\r\n return (\r\n \r\n {this.state.page === 0 ? this.cropPage() : this.filterPage()}\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.content();\r\n }\r\n\r\n}","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { Spin } from '../../Utilities/Spin';\r\nimport { Comments } from '../../Comments/Comments';\r\nimport { Tags } from '../../Tags/Tags';\r\nimport { Reactions } from '../../Reactions/Reactions'\r\nimport { ModalDialog } from '../../Utilities/ModalDialog';\r\nimport { PhotoEditor } from './PhotoEditor';\r\n//Material UI\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\r\nimport NavigateNextIcon from '@material-ui/icons/NavigateNext';\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport CardMedia from '@mui/material/CardMedia';\r\nimport Typography from '@mui/material/Typography';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport CommentOutlinedIcon from '@mui/icons-material/CommentOutlined';\r\nimport TagIcon from '@mui/icons-material/Tag';\r\nimport Box from '@mui/material/Box';\r\n//Data Services\r\nimport { getPhoto, updatePhoto } from '../../../DataServices/PhotoService'\r\n\r\nexport class PhotoViewer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n photo: this.props.photo ? this.props.photo : null,\r\n index: this.props.index,\r\n fullScreen: false,\r\n showComments: false,\r\n showCommentSection: false,\r\n showTagSection: false,\r\n showEditor: false,\r\n title: \"Photo Viewer\"\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.state.photo || !this.state.photo.fullPhoto) {\r\n this.getPhoto();\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n \r\n componentDidUpdate(prevProps, prevState) {\r\n if (this.props.photoID !== prevProps.photoID) {\r\n this.setState(\r\n state => {\r\n state.photo.fullPhoto = null;\r\n return state;\r\n }\r\n );\r\n this.updatePhoto();\r\n }\r\n }\r\n handleEdit = () => {\r\n if (this.state.showEditor) {\r\n this.setState({ showEditor: false, title: \"Photo Viewer\" });\r\n }\r\n else {\r\n this.setState({ showEditor: true, title: \"Photo Editor\" });\r\n }\r\n }\r\n getPhoto = async () => {\r\n const photo = await getPhoto(this.props.photoID);\r\n if (photo) {\r\n this.setState({\r\n photo: photo,\r\n index: this.props.index,\r\n showComments: false,\r\n loading: false\r\n });\r\n }\r\n if (this.props.handleUpdateItem)\r\n this.props.handleUpdateItem(photo, this.props.index);\r\n }\r\n updatePhoto = async () => {\r\n this.setState({ loading: true });\r\n if (!this.props.photo || !this.props.photo.fullPhoto) {\r\n this.getPhoto();\r\n }\r\n else {\r\n this.setState({\r\n photo: this.props.photo,\r\n index: this.props.index,\r\n showComments: false,\r\n loading: false\r\n });\r\n }\r\n }\r\n toggleFullScreen = () => {\r\n this.setState({fullScreen : !this.state.fullScreen})\r\n }\r\n handleSaveEdit = (b64) => {\r\n const photo = this.state.photo;\r\n photo.fullPhoto = b64;\r\n photo.thumb = b64;\r\n photo.extension = \".png\";\r\n this.setState({ photo, showEditor: false });\r\n this.props.handleUpdateItem(photo, this.props.index);\r\n\r\n }\r\n\r\n //Render Funcs\r\n comments = () => {\r\n return (\r\n )\r\n }\r\n tags = () => {\r\n return (\r\n\r\n \r\n )\r\n } \r\n card = () => {\r\n return (\r\n \r\n \r\n {this.state.showTagSection && this.tags()}\r\n {this.state.showCommentSection &&\r\n \r\n {this.comments()}\r\n \r\n }\r\n {this.state.showEditor ?\r\n \r\n :\r\n \r\n \r\n \r\n }\r\n\r\n\r\n \r\n )\r\n }\r\n tagsButton = () => {\r\n return (\r\n \r\n this.setState({ showTagSection: !this.state.showTagSection })} size=\"small\" sx={{ marginLeft: \"4px\" }}>\r\n this.props.dark ? theme.palette.common.dimmerwhite : theme.palette.common.white }} />\r\n \r\n \r\n )\r\n } \r\n commentButton = () => {\r\n return (\r\n \r\n this.setState({ showCommentSection: !this.state.showCommentSection })} size=\"small\" sx={{ marginLeft: \"4px\" }}>\r\n this.props.dark ? theme.palette.common.dimmerwhite : theme.palette.common.white }} />\r\n \r\n \r\n )\r\n }\r\n reactions = () => {\r\n return (\r\n \r\n )\r\n } \r\n closeButton = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }}>\r\n \r\n \r\n \r\n )\r\n }\r\n navButtons = () => {\r\n return (\r\n <>\r\n {(this.props.allowPrevious && this.props.handlePrevious) &&\r\n \r\n \r\n \r\n \r\n \r\n\r\n }\r\n {(this.props.allowNext && this.props.handleNext) &&\r\n \r\n \r\n \r\n \r\n \r\n\r\n }\r\n \r\n\r\n )\r\n }\r\n title = () => {\r\n return (\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white\r\n }}\r\n align=\"left\"\r\n >\r\n Photo Viewer\r\n \r\n )\r\n }\r\n\r\n\r\n render() {\r\n\r\n let contents = this.state.loading\r\n ? \r\n :\r\n \r\n {this.card()}\r\n \r\n\r\n\r\n\r\n \r\n return contents;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { Section } from '../Utilities/Section';\r\nimport { PhotoViewer } from '../Content/Photos/PhotoViewer';\r\nimport { Spin } from '../Utilities/Spin';\r\n\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\nimport Skeleton from '@mui/material/Skeleton';\r\nimport ImageList from '@mui/material/ImageList';\r\nimport ImageListItem from '@mui/material/ImageListItem';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport { getPhoto } from '../../DataServices/PhotoService'\r\nconst getCols = (w) => {\r\n let cols = 1;\r\n if (w > 600 && w <= 800) {\r\n cols = 2;\r\n }\r\n if (w > 800 && w <= 1000) {\r\n cols = 3;\r\n }\r\n if (w > 1000 && w <= 1200) {\r\n cols = 4;\r\n }\r\n if (w > 1200 && w <= 1400) {\r\n cols = 4;\r\n }\r\n if (w > 1400) {\r\n cols = 5;\r\n }\r\n return cols;\r\n}\r\nexport class UserSitePhotos extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n openPhotoViewer: false,\r\n selectedPhoto: null\r\n }\r\n }\r\n\r\n //Event handlers\r\n handleClickPhoto = async (e, photo) => {\r\n var ele = e.target;\r\n ele.style.cursor = 'wait';\r\n document.body.style.cursor = 'wait';\r\n if (!photo.fullPhoto) {\r\n photo = await getPhoto(photo.photoID);\r\n }\r\n\r\n this.setState({\r\n selectedPhoto: photo,\r\n openPhotoViewer: true\r\n })\r\n\r\n document.body.style.cursor = 'default';\r\n ele.style.cursor = 'default';\r\n\r\n }\r\n\r\n //Render funcs\r\n photoLibraries = () => {\r\n if (this.props.loading) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n if (this.props.siteContent && this.props.siteContent.photoAlbums && this.props.siteContent.photoAlbums.length > 0) {\r\n return (\r\n \r\n {this.props.siteContent.photoAlbums.map((item) => {\r\n if (item.photos && item.photos.length > 0) {\r\n return (\r\n
\r\n {(item.photos && item.photos.length > 0) && this.photos(item)}\r\n
\r\n )\r\n }\r\n return null;\r\n })}\r\n {this.photoViewer()}\r\n
\r\n )\r\n }\r\n return null;\r\n }\r\n photos = (album) => {\r\n \r\n return (\r\n \r\n {album.photos.map((item) => (\r\n \r\n {item.thumb ?\r\n this.handleClickPhoto(e, item)}\r\n />\r\n :\r\n \r\n }\r\n \r\n ))}\r\n \r\n )\r\n }\r\n photoViewer = () => {\r\n if (this.state.selectedPhoto) {\r\n return (\r\n this.setState({ openPhotoViewer: false })}\r\n index={0}\r\n allowNext={false}\r\n allowPrevious={false}\r\n user={this.props.user}\r\n appIdentifier={this.props.appIdentifier}\r\n fullScreen={this.props.fullScreen}\r\n />\r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n //main component render func\r\n render() {\r\n return this.photoLibraries();\r\n }\r\n}\r\n\r\n","import React, { PureComponent } from 'react';\r\nimport { b64toBlob } from '../../DataServices/Utility';\r\n//material ui\r\nimport Box from '@mui/material/Box';\r\nimport PlayCircleIcon from '@mui/icons-material/PlayCircle';\r\n//React PLayer (video/audio player)\r\nimport ReactPlayer from 'react-player'\r\n\r\nexport class VideoPlayer extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n streamBase: \"https://mylivesphere.com/api/videostream/\",\r\n }\r\n }\r\n\r\n //render funcs\r\n content = () => {\r\n let blob;\r\n if (this.props.video.cover && this.props.video.cover.thumb) {\r\n blob = b64toBlob(this.props.video.cover.thumb);\r\n }\r\n return (\r\n \r\n }\r\n />\r\n \r\n )\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { PureComponent } from 'react';\r\n\r\n//Custom Components\r\nimport { Section } from '../Utilities/Section';\r\nimport { Spin } from '../Utilities/Spin';\r\nimport { VideoPlayer } from '../Utilities/VideoPlayer';\r\n\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\nimport Card from '@mui/material/Card';\r\nimport Typography from '@mui/material/Typography';\r\nimport Box from '@mui/material/Box';\r\n\r\nexport class UserSiteVideos extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n streamBase: \"https://mylivesphere.com/api/videostream/\",\r\n }\r\n }\r\n \r\n videoLibraries = () => {\r\n if (this.props.loading) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n if (this.props.videoLibraries && this.props.videoLibraries.length > 0) {\r\n return (\r\n \r\n {this.props.videoLibraries.map((item) => {\r\n if (item.videos && item.videos.length > 0) {\r\n return (\r\n
\r\n \r\n {this.videos(item)}\r\n \r\n \r\n
\r\n )\r\n }\r\n return null;\r\n })}\r\n
\r\n )\r\n }\r\n return null;\r\n }\r\n videos = (item) => {\r\n return (\r\n \r\n {(item.videos && item.videos.length > 0) && item.videos.map((video) => {\r\n return (\r\n this.props.dark && \"#2a2a2a\", color: (theme) => this.props.dark && theme.palette.common.dimwhite,\r\n maxWidth: 800,\r\n m: \"auto\",\r\n mb:2\r\n }}\r\n raised\r\n elevation={this.props.dark ? 1 : 4}\r\n >\r\n \r\n \r\n \r\n {video.title}\r\n \r\n \r\n \r\n )\r\n })\r\n }\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.videoLibraries();\r\n }\r\n}\r\n\r\n","\r\nexport async function getAlbums() {\r\n const response = await fetch(\"music/getalbums\");\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getPlaylists() {\r\n const response = await fetch(\"music/getplaylists\");\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getArtists() {\r\n const response = await fetch(\"music/getartists\");\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getSongs() {\r\n const response = await fetch(\"music/getsongs\");\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getGenres() {\r\n const response = await fetch(\"music/getgenres\");\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getAlbum(id) {\r\n const response = await fetch(\"music/getalbum?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getPlaylist(id) {\r\n const response = await fetch(\"music/getplaylist?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getArtist(id) {\r\n const response = await fetch(\"music/getartist?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getSong(id) {\r\n const response = await fetch(\"music/getsong?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function createArtist(name, origin, ownerid, genre, photoid) {\r\n const req = {\r\n Name: name,\r\n Origin: origin,\r\n OwnerID: ownerid,\r\n GenreID: genre,\r\n PhotoID: photoid,\r\n };\r\n\r\n const response = await fetch(\"music/createartist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function editArtist(id, name, origin, genre, photoid) {\r\n const req = {\r\n ID: id,\r\n Name: name,\r\n Origin: origin,\r\n GenreID: genre,\r\n PhotoID: photoid,\r\n };\r\n\r\n const response = await fetch(\"music/editartist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function deleteArtist(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n\r\n const response = await fetch(\"music/deleteartist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function createAlbum(name, artistid, genreid, label, ownerid, releasedate, statusid, typeid, photoid) {\r\n const req = {\r\n Name: name,\r\n ArtistID: artistid,\r\n GenreID: genreid,\r\n Label: label,\r\n ReleaseDate: releasedate,\r\n StatusID: statusid,\r\n TypeID: typeid,\r\n Origin: origin,\r\n OwnerID: ownerid,\r\n PhotoID: photoid,\r\n };\r\n\r\n const response = await fetch(\"music/createalbum\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function editAlbum(id, name, artistid, genreid, label, releasedate, statusid, typeid, photoid) {\r\n const req = {\r\n ID: id,\r\n Name: name,\r\n ArtistID: artistid,\r\n GenreID: genreid,\r\n Label: label,\r\n ReleaseDate: releasedate,\r\n StatusID: statusid,\r\n TypeID: typeid,\r\n Origin: origin,\r\n PhotoID: photoid,\r\n };\r\n\r\n const response = await fetch(\"music/editalbum\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function deleteAlbum(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n\r\n const response = await fetch(\"music/deletealbum\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function createPlaylist(name, artistid, genreid, desc, statusid, isprivate, photoid, ownerid) {\r\n const req = {\r\n Name: name,\r\n Desc: desc,\r\n ArtistID: artistid,\r\n GenreID: genreid,\r\n StatusID: statusid,\r\n Private: isprivate,\r\n Origin: origin,\r\n PhotoID: photoid,\r\n OwnerID: ownerid\r\n };\r\n\r\n const response = await fetch(\"music/createplaylist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function editPlaylist(id, name, artistid, genreid, desc, statusid, isprivate, photoid) {\r\n const req = {\r\n ID: id,\r\n Name: name,\r\n Desc: desc,\r\n ArtistID: artistid,\r\n GenreID: genreid,\r\n StatusID: statusid,\r\n Private: isprivate,\r\n Origin: origin,\r\n PhotoID: photoid,\r\n };\r\n\r\n const response = await fetch(\"music/editplaylist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function deletePlaylist(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n\r\n const response = await fetch(\"music/deleteplaylist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function createSong(name, artistid, albumid, genreid, desc, releasedate, format, lyrics, statusid, photoid, content, ownerid) {\r\n let req;\r\n if (content) {\r\n req = {\r\n Name: name,\r\n Desc: desc,\r\n ArtistID: artistid,\r\n AlbumID: albumid,\r\n ReleaseDate: releasedate,\r\n Format: format,\r\n Lyrics: lyrics,\r\n GenreID: genreid,\r\n StatusID: statusid,\r\n PhotoID: photoid,\r\n BinaryContent: content,\r\n OwnerID: ownerid\r\n };\r\n }\r\n else {\r\n req = {\r\n Name: name,\r\n Desc: desc,\r\n ArtistID: artistid,\r\n AlbumID: albumid,\r\n ReleaseDate: releasedate,\r\n Format: format,\r\n Lyrics: lyrics,\r\n GenreID: genreid,\r\n StatusID: statusid,\r\n PhotoID: photoid,\r\n OwnerID: ownerid\r\n };\r\n }\r\n\r\n console.log(req);\r\n const response = await fetch(\"music/createsong\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function editSong(id, name, artistid, albumid, genreid, desc, releasedate, format, lyrics, statusid) {\r\n const req = {\r\n ID: id,\r\n Name: name,\r\n Desc: desc,\r\n ArtistID: artistid,\r\n AlbumID: albumid,\r\n ReleaseDate: releasedate,\r\n Format: format,\r\n Lyrics: lyrics,\r\n GenreID: genreid,\r\n StatusID: statusid,\r\n };\r\n console.log(req);\r\n const response = await fetch(\"music/editsong\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function updateSongImage(id, photoid) {\r\n const req = {\r\n ID: id,\r\n PhotoID: photoid,\r\n };\r\n\r\n const response = await fetch(\"music/updatesongimage\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function updateSongContent(id, file) {\r\n\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('id', id);\r\n\r\n\r\n const response = await fetch(\"music/updatesongcontent\", {\r\n method: 'POST',\r\n body: formData\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function deleteSong(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n\r\n const response = await fetch(\"music/deletesong\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function addSongToPlaylist(songid, playlistid) {\r\n const req = {\r\n SongID: songid,\r\n PlaylistID: playlistid\r\n };\r\n\r\n const response = await fetch(\"music/addsongtoplaylist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function removeSongFromPlaylist(songid, playlistid) {\r\n const req = {\r\n SongID: songid,\r\n PlaylistID: playlistid\r\n };\r\n\r\n const response = await fetch(\"music/removesongfromplaylist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function moveSongInPlaylist(songid, playlistid, idx) {\r\n const req = {\r\n SongID: songid,\r\n PlaylistID: playlistid,\r\n Idx: idx\r\n };\r\n\r\n const response = await fetch(\"music/movesonginplaylist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function addSongToAlbum(songid, albumid) {\r\n const req = {\r\n SongID: songid,\r\n AlbumID: albumid\r\n };\r\n\r\n const response = await fetch(\"music/addsongtoalbum\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function removeSongFromAlbum(songid, albumid) {\r\n const req = {\r\n SongID: songid,\r\n AlbumID: albumid\r\n };\r\n\r\n const response = await fetch(\"music/removesongfromalbum\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function moveSongInAlbum(songid, albumid, idx) {\r\n const req = {\r\n SongID: songid,\r\n AlbumID: albumid,\r\n Idx: idx\r\n };\r\n\r\n const response = await fetch(\"music/movesonginalbum\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function recordPlay(songid) {\r\n const req = {\r\n SongID: songid,\r\n };\r\n\r\n const response = await fetch(\"music/recordplay\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}","import React, { Component } from 'react';\r\n\r\n\r\n//Database Services\r\nimport { getSong } from '../../../DataServices/MusicService';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Card from '@mui/material/Card';\r\nimport CardMedia from '@mui/material/CardMedia';\r\nimport Typography from '@mui/material/Typography';\r\nimport Skeleton from '@mui/material/Skeleton';\r\n\r\n//import ReactAudioPlayer from 'react-audio-player';\r\nimport AudioPlayer from 'react-h5-audio-player';\r\nimport 'react-h5-audio-player/lib/styles.css';\r\n\r\nexport class Song extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n componentDidMount() {\r\n if (!this.state.song) {\r\n this.getSong();\r\n }\r\n }\r\n\r\n getSong = async () => {\r\n\r\n document.body.style.cursor = 'wait';\r\n const song = await getSong(this.props.id);\r\n if (song) {\r\n this.setState({song})\r\n }\r\n document.body.style.cursor = 'default';\r\n }\r\n\r\n //Render functions\r\n song = () => {\r\n if (this.state.song) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.white }}>\r\n {this.state.song.title}\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.white }}>\r\n {this.state.song.artist ? this.state.song.artist.name : \"Unspecified Artist\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return ()\r\n }\r\n\r\n\r\n\r\n\r\n render() {\r\n return this.song();\r\n }\r\n}\r\n","import React, { PureComponent } from 'react';\r\n\r\n//Custom Components\r\nimport { Section } from '../Utilities/Section';\r\nimport { Spin } from '../Utilities/Spin';\r\nimport { Song } from '../Content/Music/Song';\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\nimport Typography from '@mui/material/Typography';\r\nimport Card from '@mui/material/Card';\r\nimport CardMedia from '@mui/material/CardMedia';\r\nimport Box from '@mui/material/Box';\r\n\r\n//import ReactAudioPlayer from 'react-audio-player';\r\nimport AudioPlayer from 'react-h5-audio-player';\r\nimport 'react-h5-audio-player/lib/styles.css';\r\n\r\nexport class UserSiteMusic extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n streamBase: \"https://mylivesphere.com/api/musicstream/\",\r\n }\r\n }\r\n \r\n music = () => {\r\n if (this.props.loading) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n if (this.props.music && this.props.music.songs && this.props.music.songs.length > 0) {\r\n return (\r\n \r\n
\r\n {this.props.music.songs.map((item) => {\r\n return this.songCard(item);\r\n })}\r\n
\r\n
\r\n )\r\n }\r\n return null;\r\n }\r\n songCard = (item) => {\r\n if (item.hasAudio) {\r\n return (\r\n //\r\n // this.props.dark && theme.palette.card.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }}\r\n // raised\r\n // elevation={this.props.dark ? 1 : 4}\r\n // >\r\n // {item.image && item.image.thumb &&\r\n // \r\n // }\r\n // \r\n // \r\n // \r\n // this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n // {item.title}\r\n // \r\n // this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n // {item.artist ? item.artist.name : \"Unspecified Artist\"}\r\n // \r\n // \r\n // \r\n\r\n // \r\n // \r\n // \r\n // \r\n // \r\n //\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n render() {\r\n return this.music();\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Material UI\r\nimport Toolbar from '@mui/material/Toolbar'; \r\nimport Box from '@mui/material/Box';\r\nimport Typography from '@mui/material/Typography';\r\nimport Paper from '@mui/material/Paper'\r\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\r\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport RotateRightIcon from '@mui/icons-material/RotateRight';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\nimport Tooltip from '@mui/material/Tooltip';\r\n//react-pdf\r\nimport { Document, Page } from 'react-pdf'\r\n\r\n\r\n\r\nexport class DocumentViewer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n pageScale: this.props.scale ?? 1,\r\n numPages: null,\r\n pageNumber: 1,\r\n loaded: false,\r\n rotate: 0\r\n }\r\n }\r\n\r\n download = () => {\r\n const linkSource = `data:application/pdf;base64,${this.props.document}`;\r\n const downloadLink = document.createElement(\"a\");\r\n downloadLink.href = linkSource;\r\n const ext = this.props.fileName.slice(-4);\r\n downloadLink.download = ext === '.pdf' ? this.props.fileName : `${this.props.fileName}.pdf`;\r\n downloadLink.click();\r\n }\r\n\r\n changePage = (offset) => {\r\n this.setState({ pageNumber: this.state.pageNumber + offset });\r\n }\r\n nextPage = () => {\r\n this.changePage(1);\r\n }\r\n previousPage = () => {\r\n this.changePage(-1);\r\n }\r\n zoomIn = () => {\r\n this.setState({ pageScale: this.state.pageScale * 1.2 })\r\n }\r\n zoomOut = () => {\r\n this.setState({ pageScale: this.state.pageScale / 1.2 })\r\n }\r\n rotatePage = () => {\r\n if (this.state.rotate === 270) {\r\n this.setState({ rotate: 0 });\r\n }\r\n else {\r\n this.setState({ rotate: this.state.rotate + 90 });\r\n }\r\n }\r\n onDocumentLoadSuccess = ({ numPages }) => {\r\n\r\n if (!this.state.loaded) {\r\n this.setState({\r\n numPages: numPages,\r\n loaded: true\r\n });\r\n }\r\n }\r\n\r\n //render funcs\r\n title = () => {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack, my:\"auto\" }}\r\n >\r\n {this.props.fileName ?? \"Document Viewer\"}\r\n \r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack}} disabled={!this.state.loaded}>\r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }} disabled={!this.state.loaded}>\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }} disabled={!this.state.loaded}>\r\n \r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }} disabled={!this.state.loaded}>\r\n \r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }} disabled={!this.state.loaded}>\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n )\r\n }\r\n loading = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n\r\n }\r\n contents = () => {\r\n return (\r\n \r\n {this.title()}\r\n \r\n {this.props.document &&\r\n \r\n {this.state.numPages &&\r\n Array.apply(null, Array(this.state.numPages))\r\n .map((x, i) => i + 1)\r\n .map(page => )\r\n }\r\n \r\n }\r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.contents();\r\n }\r\n}\r\n","\r\nexport async function getDocumentFolders(userid, parentID, appid) {\r\n var url;\r\n if (parentID) {\r\n url = 'document/getfolders?userid=' + userid + '&parentid=' + userid + '&appid=' + appid;\r\n }\r\n else {\r\n url = 'document/getfolders?appid=' + appid;\r\n }\r\n url = 'document/getfolders?appid=LS';\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getFolder(id){\r\n const response = await fetch('document/getfolder?id=' + id);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function getDocument(id){\r\n const response = await fetch('document/getdocument?id=' + id);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function downloadDocument(id, name) {\r\n const response = await fetch('document/downloaddocument?id=' + id);\r\n console.log(response);\r\n if (response.status === 200) {\r\n const data = await response.blob();\r\n console.log(data);\r\n if (data) {\r\n const fileURL = window.URL.createObjectURL(data);\r\n // Setting various property values\r\n let alink = document.createElement('a');\r\n alink.setAttribute(\r\n 'download',\r\n name,\r\n );\r\n alink.href = fileURL;\r\n alink.target = \"_blank\";\r\n alink.click();\r\n }\r\n\r\n }\r\n return null;\r\n}\r\nexport async function getDocumentInfo(id) {\r\n const response = await fetch('document/getdocumentInfo?id=' + id);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newDocument(file, parentID, appid){\r\n const fileName = file.name;\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('parentid', parentID);\r\n formData.append('appid', appid);\r\n\r\n const doc = await fetch('document/uploadfile', {\r\n method: 'POST',\r\n body: formData\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n response => {\r\n var newID = response;\r\n var doc = { documentID: newID, documentName: fileName, createDate: new Date().toISOString() };\r\n return doc;\r\n }\r\n ).catch((error) => {\r\n console.log(error);\r\n return null;\r\n });\r\n return doc;\r\n}\r\nexport async function newOwnerDocument(file, ownerid, parentID, appid, name) {\r\n const fileName = file.name;\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('parentid', parentID);\r\n formData.append('userid', ownerid);\r\n formData.append('appid', appid);\r\n\r\n const doc = await fetch('document/uploadownerfile', {\r\n method: 'POST',\r\n body: formData\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n response => {\r\n var newID = response;\r\n var doc = { documentID: newID, documentName: name, createDate: new Date().toISOString() };\r\n return doc;\r\n }\r\n ).catch((error) => {\r\n console.log(error);\r\n return null;\r\n });\r\n return doc;\r\n}\r\n\r\nexport async function deleteDocument(id) {\r\n const req = { DocID: id };\r\n console.log(req);\r\n const response = await fetch(\"document/deletedocument\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function setDocumentStatus(id, status) {\r\n const response = await fetch(\"document/setdocumentstatus?documentid=\" + id + \"&documentstatus=\" + status);\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function renameDocument(id, name) {\r\n const req = { DocID: id, Name: name };\r\n console.log(req);\r\n const response = await fetch(\"document/editdocument\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function moveDocument(id, parentid) {\r\n const req = { DocID: id, ParentID: parentid };\r\n const response = await fetch(\"document/movedocument\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function newFolder(name, parentID, appid) {\r\n const req = { Name: name, ParentID: parentID, AppID: appid };\r\n const response = await fetch(\"document/createfolder\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data) {\r\n const folder = { id: data, name: name, documents: [] };\r\n return folder;\r\n }\r\n }\r\n return false;\r\n}\r\nexport async function newOwnerFolder(name, userid, parentID, appid) {\r\n const req = { Name: name, ParentID: parentID, AppID: appid, UserID: userid };\r\n const response = await fetch(\"document/createownerfolder\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data) {\r\n const folder = { id: data, name: name, documents: [] };\r\n return folder;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport async function deleteFolder(id) {\r\n const req = { FolderID: id };\r\n const response = await fetch(\"document/deletefolder\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\n\r\nexport async function renameFolder(id, name) {\r\n const req = { FolderID: id, Name: name };\r\n const response = await fetch(\"document/editfolder\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\n\r\nexport async function shareDocument(id, ownerid, userid, isFolder, appid, canedit, hasexpiration, expiration) {\r\n const req = {\r\n DocID: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n IsFolder: isFolder,\r\n AppID: appid,\r\n CanEdit: canedit,\r\n HasExpiration: hasexpiration,\r\n Expiration: expiration\r\n };\r\n const response = await fetch(\"document/sharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function unShareDocument(id, ownerid, userid, appid) {\r\n const req = {\r\n DocID: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"document/unsharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function hideSharedDocument(id, ownerid, userid, appid) {\r\n const req = {\r\n DocID: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"document/hidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function unhideSharedDocument(id, ownerid, userid, appid) {\r\n const req = {\r\n DocID: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"document/unhidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}","import React, { PureComponent } from 'react';\r\n\r\n//Custom Components\r\nimport { Section } from '../Utilities/Section';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { DocumentViewer } from '../Content/Documents/DocumentViewer';\r\nimport { Spin } from '../Utilities/Spin';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport Card from '@mui/material/Card';\r\nimport Typography from '@mui/material/Typography';\r\nimport { CardActionArea } from '@mui/material';\r\n\r\n//Font Awesome\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faFilePdf } from '@fortawesome/free-solid-svg-icons'\r\n\r\nimport { getDocument } from '../../DataServices/DocumentService'\r\n\r\nexport class UserSiteFiles extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showDocument: false,\r\n selectedDocumentContent: null,\r\n selectedDocumentName: \"\"\r\n }\r\n }\r\n\r\n //event handlers\r\n handleClickDocument = async (e, id) => {\r\n let ele = e.target;\r\n ele.style.cursor = 'wait';\r\n document.body.style.cursor = 'wait';\r\n\r\n const doc = await getDocument(id);\r\n ele.style.cursor = 'default';\r\n document.body.style.cursor = 'default';\r\n\r\n if (doc && doc.eFiles && doc.eFiles.length > 0 && doc.eFiles[0].fileContent) {\r\n this.setState({\r\n selectedDocumentName: doc.documentName,\r\n selectedDocumentContent: doc.eFiles[0].fileContent,\r\n showDocument: true\r\n });\r\n }\r\n }\r\n\r\n //Render funcs\r\n folders = () => {\r\n if (this.props.loading) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n if (this.props.folders && this.props.folders.length > 0) {\r\n let hasDocs = false;\r\n return (\r\n \r\n {this.props.folders.map((item) => {\r\n if (item.documents && item.documents.length > 0) {\r\n hasDocs = true;\r\n return (\r\n
\r\n {this.documents(item)}\r\n
\r\n )\r\n }\r\n return null;\r\n })}\r\n {!hasDocs &&\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>No shared files at this time.\r\n \r\n\r\n }\r\n {this.state.showDocument && this.docPreview() }\r\n
\r\n )\r\n }\r\n return null;\r\n }\r\n documents = (item) => {\r\n return (\r\n \r\n {(item.documents && item.documents.length > 0) && item.documents.map((doc) => {\r\n return (\r\n this.props.dark && theme.palette.card.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }}\r\n raised\r\n elevation={this.props.dark ? 1 : 4}\r\n >\r\n this.handleClickDocument(e, doc.documentID)}>\r\n \r\n \r\n \r\n \r\n {doc.documentName ? doc.documentName.substr(0, 30) : \"Document\"}\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {`Added ${new Date(doc.createDate).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 docPreview = () => {\r\n if (this.state.selectedDocumentContent && this.state.showDocument) {\r\n return (\r\n this.setState({ showDocument: false })}\r\n fullWidth={true}\r\n disableButtons\r\n hideScroll={true}\r\n draggable={true}\r\n noUpperClose\r\n maxWidth=\"xl\" \r\n closeLabel=\"Close\"\r\n noSidePad\r\n >\r\n this.setState({ showDocument: false })}\r\n fullHeight\r\n />\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n //Main component render\r\n render() {\r\n return this.folders();\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport Typography from '@mui/material/Typography';\r\nimport Paper from '@mui/material/Paper';\r\nimport Button from '@mui/material/Button';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport TwitterIcon from '@mui/icons-material/Twitter';\r\nimport FacebookIcon from '@mui/icons-material/Facebook';\r\nimport LinkedInIcon from '@mui/icons-material/LinkedIn';\r\n\r\n\r\nexport class Blog extends Component {\r\n\r\n //Event Handlers\r\n handleSubscribe = () => { }\r\n\r\n //Render funcs\r\n header = () => {\r\n if (this.props.blog) {\r\n return (\r\n \r\n \r\n {(this.props.blog.header && this.props.blog.header.title) &&\r\n \r\n {this.props.blog.header.title}\r\n \r\n }\r\n {(this.props.blog.header && this.props.blog.header.subTitle) &&\r\n \r\n {this.props.blog.header.subTitle}\r\n \r\n }\r\n {this.author()}\r\n \r\n
\r\n )\r\n }\r\n return null;\r\n }\r\n author = () => {\r\n if (this.props.blog.header.authorName) {\r\n return (\r\n \r\n {/**/}\r\n \r\n theme.palette.common.white }} >\r\n {\"by \" + this.props.blog.header.authorName ? this.props.blog.header.authorName : this.props.blog.author.firstName + \" \" + this.props.blog.author.lastName}\r\n \r\n theme.palette.common.dimwhite }} >\r\n {\"Posted on \" + this.props.pubDate ?? \"\"}\r\n \r\n \r\n {this.social(false)}\r\n \r\n\r\n )\r\n }\r\n }\r\n social = (dark) => {\r\n return (\r\n \r\n {this.props.blog.header.authorFB &&\r\n dark ? theme.palette.secondary.main : (this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white) }}>\r\n \r\n \r\n }\r\n {this.props.blog.header.authorLI &&\r\n dark ? theme.palette.secondary.main : (this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white) }}>\r\n \r\n \r\n }\r\n {this.props.blog.header.authorTW &&\r\n dark ? theme.palette.secondary.main : (this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white) }}\r\n\r\n >\r\n \r\n \r\n }\r\n\r\n\r\n \r\n\r\n\r\n )\r\n }\r\n aboutAuthor = () => {\r\n if (this.props.blog.header.authorName) {\r\n return (\r\n \r\n\r\n \r\n \r\n \r\n theme.palette.common.black, marginTop: \"0px\", marginBottom: \"0px\" }} >\r\n {this.props.blog.header.authorName ? this.props.blog.header.authorName : this.props.blog.author.firstName + \" \" + this.props.blog.author.lastName}\r\n \r\n {this.props.blog.header.authorDesc &&\r\n theme.palette.common.dimblack, marginTop: \"0px\", marginBottom: \"0px\" }} >\r\n {this.props.blog.header.authorDesc}\r\n \r\n }\r\n \r\n\r\n {this.social(true)}\r\n \r\n \r\n\r\n\r\n )\r\n }\r\n }\r\n bodyrows = () => {\r\n if (this.props.blog.bodyRows && this.props.blog.bodyRows.length > 0) {\r\n return (\r\n \r\n {\r\n this.props.blog.bodyRows.map((item, index) => {\r\n\r\n if (item.numCols === 1) {\r\n return (\r\n theme.palette.common.dimblack }}>\r\n {(item.rowContent && item.rowContent.length > 0 && item.rowContent[0].contentType === 0) &&\r\n\r\n
\r\n\r\n }\r\n {(item.rowContent && item.rowContent.length > 0 && item.rowContent[0].contentType === 1 && item.rowContent[0].photo && item.rowContent[0].photo.thumb) &&\r\n \r\n \r\n {item.rowContent[0].textContent &&\r\n \r\n \r\n {item.rowContent[0].textContent}\r\n \r\n \r\n }\r\n \r\n }\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n theme.palette.common.dimblack }}>\r\n {(item.rowContent && item.rowContent.length > 0 && item.rowContent[0].contentType === 0) &&\r\n
\r\n }\r\n {(item.rowContent && item.rowContent.length > 0 && item.rowContent[0].contentType === 1 && item.rowContent[0].photo && item.rowContent[0].photo.thumb) &&\r\n \r\n \r\n {item.rowContent[0].textContent &&\r\n \r\n \r\n {item.rowContent[0].textContent}\r\n \r\n \r\n }\r\n \r\n }\r\n \r\n theme.palette.common.dimblack }}>\r\n {(item.rowContent && item.rowContent.length > 1 && item.rowContent[1].contentType === 0) &&\r\n
\r\n }\r\n {(item.rowContent && item.rowContent.length > 1 && item.rowContent[1].contentType === 1 && item.rowContent[1].photo && item.rowContent[1].photo.thumb) &&\r\n \r\n \r\n {item.rowContent[1].textContent &&\r\n \r\n \r\n {item.rowContent[1].textContent}\r\n \r\n \r\n }\r\n\r\n \r\n }\r\n \r\n\r\n \r\n )\r\n }\r\n })\r\n }\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n footer = (show) => {\r\n if (show) {\r\n return (\r\n theme.palette.secondary.main }}>\r\n \r\n\r\n \r\n\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {\r\n this.props.blog &&\r\n <>\r\n {this.header()}\r\n {this.bodyrows()}\r\n {this.aboutAuthor()}\r\n {this.footer(false)}\r\n \r\n\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { getPhoto } from '../../../DataServices/PhotoService'\r\nimport { PhotoViewer } from '../Photos/PhotoViewer';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport Typography from '@mui/material/Typography';\r\nimport Paper from '@mui/material/Paper';\r\nimport Button from '@mui/material/Button';\r\n\r\n\r\nexport class Event extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n openPhotoViewer : false,\r\n }\r\n }\r\n\r\n handleClickPhoto = async (e, photo, idx) => {\r\n var ele = e.target;\r\n ele.style.cursor = 'wait';\r\n document.body.style.cursor = 'wait';\r\n if (!photo.fullPhoto) {\r\n photo = await getPhoto(photo.photoID);\r\n //this.updatePhoto(photo, idx);\r\n\r\n }\r\n\r\n this.setState({\r\n selectedPhoto: photo,\r\n selectedPhotoIDX: idx,\r\n openPhotoViewer: true\r\n })\r\n\r\n document.body.style.cursor = 'default';\r\n ele.style.cursor = 'default';\r\n\r\n }\r\n\r\n\r\n\r\n //Render funcs\r\n header = () => {\r\n if (this.props.event) {\r\n const event = this.props.event;\r\n let startDate, endDate;\r\n if (event.eventStart) {\r\n startDate = new Date(new Date(event.eventStart).getTime() - (new Date(event.eventStart).getTimezoneOffset() * 60000));\r\n }\r\n if (event.eventEnd) {\r\n endDate = new Date(new Date(event.eventEnd).getTime() - (new Date(event.eventEnd).getTimezoneOffset() * 60000));\r\n }\r\n\r\n return (\r\n theme.palette.green.light\r\n }}\r\n >\r\n \r\n {event.title &&\r\n \r\n {event.title}\r\n \r\n }\r\n \r\n {event.hostedBy &&\r\n \r\n {`Hosted by ${event.hostedBy}`}\r\n \r\n }\r\n {event.locationDesc &&\r\n \r\n {`${event.locationDesc}`}\r\n \r\n }\r\n \r\n \r\n {event.eventStart &&\r\n \r\n {new Date(event.eventStart).toDateString()}\r\n \r\n }\r\n {(event.eventStart && event.eventEnd) &&\r\n \r\n {`${new Date(startDate).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })} to ${new Date(endDate).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}` }\r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n bodyrows = () => {\r\n if (this.props.event.bodyRows && this.props.event.bodyRows.length > 0) {\r\n return (\r\n \r\n {\r\n this.props.event.bodyRows.map((item, index) => {\r\n\r\n if (item.numCols === 1) {\r\n return (\r\n theme.palette.common.dimblack }}>\r\n {(item.rowContent && item.rowContent.length > 0 && item.rowContent[0].contentType === 0) &&\r\n\r\n
\r\n\r\n }\r\n {(item.rowContent && item.rowContent.length > 0 && item.rowContent[0].contentType === 1 && item.rowContent[0].photo && item.rowContent[0].photo.thumb) &&\r\n \r\n this.handleClickPhoto(e, item.rowContent[0].photo, index)}\r\n />\r\n {item.rowContent[0].textContent &&\r\n \r\n \r\n {item.rowContent[0].textContent}\r\n \r\n \r\n }\r\n \r\n }\r\n \r\n )\r\n }\r\n else {\r\n return (\r\n \r\n theme.palette.common.dimblack }}>\r\n {(item.rowContent && item.rowContent.length > 0 && item.rowContent[0].contentType === 0) &&\r\n
\r\n }\r\n {(item.rowContent && item.rowContent.length > 0 && item.rowContent[0].contentType === 1 && item.rowContent[0].photo && item.rowContent[0].photo.thumb) &&\r\n \r\n this.handleClickPhoto(e, item.rowContent[0].photo, index)}\r\n />\r\n {item.rowContent[0].textContent &&\r\n \r\n \r\n {item.rowContent[0].textContent}\r\n \r\n \r\n }\r\n \r\n }\r\n \r\n theme.palette.common.dimblack }}>\r\n {(item.rowContent && item.rowContent.length > 1 && item.rowContent[1].contentType === 0) &&\r\n
\r\n }\r\n {(item.rowContent && item.rowContent.length > 1 && item.rowContent[1].contentType === 1 && item.rowContent[1].photo && item.rowContent[1].photo.thumb) &&\r\n \r\n this.handleClickPhoto(e, item.rowContent[1].photo, index)}\r\n />\r\n {item.rowContent[1].textContent &&\r\n \r\n \r\n {item.rowContent[1].textContent}\r\n \r\n \r\n }\r\n\r\n \r\n }\r\n \r\n\r\n \r\n )\r\n }\r\n })\r\n }\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n\r\n\r\n footer = (show) => {\r\n if (show) {\r\n return (\r\n theme.palette.secondary.main }}>\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n photoViewer = () => {\r\n if (this.state.selectedPhoto) {\r\n return (\r\n this.setState({ openPhotoViewer: false })}\r\n index={this.state.selectedPhotoIDX}\r\n allowNext={false}\r\n allowPrevious={false}\r\n hideInteractions\r\n />\r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n\r\n }\r\n content = () => {\r\n return (\r\n \r\n \r\n {this.header()}\r\n {this.bodyrows()}\r\n {this.footer(true)}\r\n {this.photoViewer()}\r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { getPhoto } from '../../../DataServices/PhotoService'\r\nimport { PhotoViewer } from '../Photos/PhotoViewer';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport Typography from '@mui/material/Typography';\r\nimport Grid from '@mui/material/Grid';\r\nimport ImageList from '@mui/material/ImageList';\r\nimport ImageListItem from '@mui/material/ImageListItem';\r\nimport Accordion from '@mui/material/Accordion';\r\nimport AccordionSummary from '@mui/material/AccordionSummary';\r\nimport AccordionDetails from '@mui/material/AccordionDetails';\r\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\r\nimport Rating from '@mui/material/Rating';\r\n\r\n\r\nexport class Product extends Component {\r\n constructor(props) {\r\n super(props); \r\n this.state = {\r\n openPhotoViewer: false,\r\n }\r\n }\r\n handleClickPhoto = async (e, photo, idx) => {\r\n var ele = e.target;\r\n ele.style.cursor = 'wait';\r\n document.body.style.cursor = 'wait';\r\n if (!photo.fullPhoto) {\r\n photo = await getPhoto(photo.photoID);\r\n //this.updatePhoto(photo, idx);\r\n\r\n }\r\n\r\n this.setState({\r\n selectedPhoto: photo,\r\n selectedPhotoIDX: idx,\r\n openPhotoViewer: true\r\n })\r\n\r\n document.body.style.cursor = 'default';\r\n ele.style.cursor = 'default';\r\n\r\n }\r\n\r\n //Render funcs\r\n header = () => {\r\n if (this.props.item) {\r\n return (\r\n \r\n \r\n {this.props.item.name &&\r\n \r\n {this.props.item.name}\r\n \r\n }\r\n {this.props.item.desc &&\r\n \r\n {this.props.item.desc + (this.props.preview ? \" $\" + this.props.item.price : \"\")}\r\n \r\n }\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n body = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Product Information\r\n \r\n \r\n \r\n Name: {this.props.item.name}\r\n \r\n {this.props.item.desc &&\r\n \r\n Description: {this.props.item.desc}\r\n \r\n }\r\n \r\n Asking Price: ${this.props.item.price}\r\n \r\n \r\n
\r\n {this.props.item.longDesc &&\r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"itemacc\"\r\n >\r\n this.props.dark ? theme.palette.common.dimblack : theme.palette.common.dimblack }}>More Details\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n aria-controls=\"panel1a-content\"\r\n id=\"itemspecs\"\r\n >\r\n this.props.dark ? theme.palette.common.dimblack : theme.palette.common.dimblack }}>Product Specs\r\n \r\n \r\n \r\n Attributes will go here\r\n \r\n \r\n \r\n
\r\n\r\n {this.rating()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Product Images\r\n \r\n \r\n \r\n {this.props.item.photos.map((item, index) => (\r\n \r\n this.handleClickPhoto(e, item.photo, index)}\r\n />\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Seller Reviews\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n\r\n )\r\n }\r\n\r\n rating = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimblack : theme.palette.common.dimblack }}>Seller Rating\r\n {\r\n this.setRatingValue(newValue);\r\n }}\r\n />\r\n \r\n )\r\n }\r\n photoViewer = () => {\r\n if (this.state.selectedPhoto) {\r\n return (\r\n this.setState({ openPhotoViewer: false })}\r\n index={this.state.selectedPhotoIDX}\r\n allowNext={false}\r\n allowPrevious={false}\r\n hideInteractions\r\n />\r\n )\r\n }\r\n else {\r\n return null;\r\n }\r\n\r\n }\r\n render() {\r\n return (\r\n \r\n \r\n {\r\n this.props.item &&\r\n <>\r\n {this.header()}\r\n {this.body()}\r\n {this.photoViewer()}\r\n \r\n\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { PhotoViewer } from './PhotoViewer';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport Carousel from 'react-material-ui-carousel';\r\n\r\n//Data Services\r\nexport class PhotoGallery extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n openPhotoViewer: false,\r\n selectedPhoto: null,\r\n };\r\n }\r\n\r\n //Event handlers\r\n handleClickPhoto = (e, photo, index) => {\r\n let target = e.target;\r\n target.style.cursor = 'wait';\r\n document.body.style.cursor = 'wait';\r\n this.setState({\r\n selectedPhoto: photo,\r\n selectedPhotoID: photo.photoID,\r\n selectedPhotoIDX: index,\r\n openPhotoViewer: true,\r\n });\r\n target.style.cursor = 'default';\r\n document.body.style.cursor = 'default';\r\n }\r\n\r\n //Render funcs\r\n content = () => {\r\n const photos = this.props.photos;\r\n if (photos && photos.length > 1) {\r\n return (\r\n \r\n {\r\n photos.map((photo, index) => {\r\n if (photo && photo.thumb) {\r\n const imageUrl = \"data:image/png;base64, \" + photo.thumb;\r\n return (\r\n \r\n this.handleClickPhoto(e, photo, index)}\r\n sx={{\r\n backgroundColor: this.props.dark ? \"black\" : \"#f7f7f7\",\r\n height: { xs: this.props.width, md: this.props.width },\r\n objectFit: \"cover\",\r\n cursor: \"pointer\",\r\n borderRadius: \"0px\",\r\n maxHeight: { xs: this.props.width, md: 500 },\r\n maxWidth: { xs: '100%', md: 500 },\r\n width: { xs: \"100%\" },\r\n my: \"auto\"\r\n\r\n }}\r\n />\r\n \r\n\r\n )\r\n }\r\n return null;\r\n })\r\n }\r\n \r\n\r\n )\r\n }\r\n else {\r\n let photo = photos[0];\r\n if (photo && photo.thumb) {\r\n const imageUrl = \"data:image/png;base64, \" + photo.thumb;\r\n return (\r\n \r\n this.handleClickPhoto(e, photo, 0)}\r\n sx={{\r\n backgroundColor: this.props.dark ? \"black\" : \"#f7f7f7\",\r\n height: { xs: this.props.width, md: this.props.width },\r\n objectFit: \"cover\",\r\n cursor: \"pointer\",\r\n borderRadius: \"0px\",\r\n maxHeight: { xs: this.props.width, md: 500 },\r\n maxWidth: { xs: '100%', md: 500 },\r\n width: { xs: \"100%\" },\r\n my: \"auto\"\r\n\r\n }}\r\n />\r\n \r\n\r\n )\r\n }\r\n return null;\r\n }\r\n\r\n }\r\n\r\n photoViewer = () => {\r\n if (this.state.openPhotoViewer) {\r\n return (\r\n this.setState({ openPhotoViewer: false })}\r\n index={this.state.selectedPhotoIDX}\r\n user={this.props.user}\r\n updateCommentCount={this.updatePhotoCommentCount}\r\n appIdentifier={this.props.appIdentifier}\r\n fullScreen={this.props.width <= 600}\r\n />\r\n )\r\n }\r\n return null;\r\n }\r\n\r\n //main component render\r\n render() {\r\n return (\r\n <>\r\n {this.content()}\r\n {this.photoViewer()}\r\n \r\n )\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Picker from 'emoji-picker-react';\r\nimport Box from '@mui/material/Box';\r\nimport { styled, alpha } from '@mui/material/styles';\r\n\r\nexport class EmojiPicker extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n onClick = (e, emoji) => {\r\n this.props.handleSelectEmoji(emoji);\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n );\r\n }\r\n}\r\n","\r\nimport React, { Component } from 'react';\r\nimport InputGroup from 'react-bootstrap/InputGroup'\r\nimport FormControl from 'react-bootstrap/FormControl'\r\nimport Linkify from 'react-linkify';\r\nimport { LinkPreview } from '@dhaiwat10/react-link-preview';\r\n\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { EmojiPicker } from '../Utilities/EmojiPicker'\r\nimport Box from '@mui/material/Box';\r\nimport Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Chip from '@mui/material/Chip';\r\n\r\nimport { MentionsInput, Mention } from 'react-mentions'\r\n\r\n\r\nconst parseTags = (text) => {\r\n var regex = /(?:^|\\s)(?:#)([a-zA-Z\\d]+)/gm;\r\n var matches = [];\r\n var match;\r\n\r\n while ((match = regex.exec(text))) {\r\n matches.push(match[1]);\r\n }\r\n return matches;\r\n}\r\n\r\n\r\nexport class PostContentComposer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n user: this.props.user,\r\n show: this.props.show,\r\n newPostText: [],\r\n newPostPhoto: [],\r\n newPostVideo: [],\r\n tags: [],\r\n postValue: \"\",\r\n postLink: null,\r\n postLinks: [],\r\n saving: false,\r\n anchorEl: null,\r\n mentions: [],\r\n };\r\n }\r\n \r\n\r\n handleSubmitPost = () => {\r\n let textContent = \"\";\r\n var ele = document.getElementById(\"newPostTextContent\");\r\n if (ele) {\r\n textContent = ele.value;\r\n }\r\n var linkContent = this.state.postLink;\r\n\r\n if (linkContent && linkContent == textContent) {\r\n textContent = \"\";\r\n }\r\n var post = { textContent: textContent, tags: this.state.tags, type: this.props.postType, mentions: this.state.mentions};\r\n this.props.savePost(post);\r\n this.setState({\r\n postLink: null,\r\n newPostText: [],\r\n newPostPhoto: [],\r\n newPostVideo: [],\r\n tags: [],\r\n mentions: [],\r\n postValue: \"\",\r\n showEmojiPicker: false,\r\n showPhotoDropZone: false\r\n });\r\n }\r\n\r\n handlePostCompose = (e) => {\r\n var val = e.target.value;\r\n this.setState({ postValue: val });\r\n let tags = parseTags(val);\r\n if (this.state.tags !== tags) {\r\n this.setState({ tags: tags });\r\n }\r\n setTimeout(() => {\r\n var eles = document.querySelectorAll(\"div #linkContainer a\");\r\n if (eles.length > 0) {\r\n if (eles[0].href) {\r\n this.setState({ postLink: eles[0].href });\r\n }\r\n\r\n }\r\n }, 500)\r\n }\r\n\r\n\r\n\r\n handleRemoveTag = (idx) => {\r\n const tag = this.state.tags[idx];\r\n let originalPost = this.state.postValue\r\n let tagStart = originalPost.indexOf(\"#\" + tag);\r\n const finalString = originalPost.slice(0, tagStart) + originalPost.slice(tagStart + 1);\r\n var ele = document.getElementById(\"newPostTextContent\");\r\n if (ele) {\r\n ele.value = finalString;\r\n var event = new Event('input', {\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n\r\n ele.dispatchEvent(event);\r\n }\r\n }\r\n handleSelectEmoji = (emoji) => {\r\n document.getElementById(\"newPostTextContent\").value = document.getElementById(\"newPostTextContent\").value + emoji.emoji;\r\n this.setState({ showEmojiPicker: false, anchorEl: null })\r\n }\r\n addMention = (id, display, startPos, endPos) => {\r\n const mentions = [...this.state.mentions, { id: id, display: display }];\r\n this.setState({ mentions });\r\n\r\n }\r\n formatMention = (id, display) => {\r\n return \"@\" + display;\r\n }\r\n handleRemoveMention = (idx) => {\r\n const mentions = [...this.state.mentions];\r\n mentions.splice(idx, 1);\r\n this.setState({ mentions });\r\n }\r\n\r\n\r\n\r\n postLinks = () => {\r\n return (\r\n \r\n
\r\n {this.state.postValue}\r\n
\r\n
\r\n )\r\n } \r\n linkPreview = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n tagContainer = () => {\r\n if (this.state.tags && this.state.tags.length > 0) {\r\n return (\r\n \r\n\r\n {this.state.tags.map((item, index) => {\r\n return (\r\n this.handleRemoveTag(index)}\r\n size=\"small\"\r\n color=\"secondary\"\r\n sx={{ marginRight: \"6px\", marginBottom: \"6px\" }}\r\n />\r\n )\r\n })}\r\n \r\n )\r\n }\r\n }\r\n mentions = () => {\r\n return (\r\n \r\n this.setState({ mentionValue: e.target.value })}\r\n onInput={this.handlePostCompose}\r\n className={this.props.dark ? \"postTextDark\" : \"postText\"}\r\n rows={2}\r\n style={{\r\n backgroundColor: this.props.dark ? '#111' : '#fff',\r\n minHeight: \"60px\",\r\n border: \"none\",\r\n }}\r\n >\r\n\r\n \r\n \r\n \r\n\r\n )\r\n }\r\n render() {\r\n\r\n\r\n return (\r\n \r\n {this.mentions()}\r\n {this.tagContainer()}\r\n {this.postLinks()}\r\n {this.state.postLink && this.linkPreview()}\r\n \r\n );\r\n }\r\n\r\n\r\n}\r\n","\r\nexport async function getPosts(index, count, type, appid, filter = 0) {\r\n const req = { Index: index, Count: count, Type: type, AppID: appid, Filter: filter };\r\n const response = await fetch('post/getposts', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n\r\n if (response.status !== 200) {\r\n if (response.status === 401 || response.status === 400)\r\n return response.status;\r\n return 'error';\r\n }\r\n \r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getPostsByUser(postuserid, index, count, type, appid) {\r\n const req = { PostUserID: postuserid, Index: index, Count: count, Type: type, AppID: appid };\r\n const response = await fetch('post/getpostsbyuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status !== 200) {\r\n if (response.status === 401 || response.status === 400)\r\n return response.status;\r\n return 'error';\r\n }\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getPostsByIdRange(postids, index, count) {\r\n const req = { IDs: postids, Index: index, Count: count};\r\n const response = await fetch('post/getpostsbyidrange', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n\r\n if (response.status !== 200) {\r\n if (response.status === 401)\r\n return response.status;\r\n return 'error';\r\n }\r\n\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getNewPosts(type, id, appid, filter = 0) {\r\n const req = { Type: type, PostID: id, AppID: appid, Filter: filter };\r\n const response = await fetch('post/getnewposts', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n\r\n if (response.status !== 200) {\r\n if (response.status === 401)\r\n return response.status;\r\n return 'error';\r\n }\r\n\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getPost(id) {\r\n let url = 'post/getpostdetails?postid=' + id;\r\n const response = await fetch(url);\r\n\r\n if (response.status !== 200) {\r\n if (response.status === 401)\r\n return response.status;\r\n return 'error';\r\n }\r\n\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getPostContent(id) {\r\n const req = { ID: id };\r\n const response = await fetch('post/getpostcontent', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const post = await response.json();\r\n return post;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newMobilePhotoPost(textcontent, photocontent, appid) {\r\n const b64 = await toBase64(photocontent);\r\n const photob64 = b64.split(',')[1];\r\n const req = { PhotoContent: photob64, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/createmobilephotopost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newPost(userid, type, appid, category) {\r\n const req = { OwnerType: 0, OwnerID: userid, Type: type, AppID: appid, TextCategory: category };\r\n const response = await fetch('post/createpost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function repost(userid, postid, textcontent, appid) {\r\n const req = { OwnerType: 0, OwnerID: userid, PostID: postid, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/repost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newBlogPost(userid, blogid, textcontent, appid) {\r\n const req = { OwnerType: 0, OwnerID: userid, RefID: blogid, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/createblogpost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newEventPost(userid, eventid, textcontent, appid) {\r\n const req = { OwnerType: 0, OwnerID: userid, RefID: eventid, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/createeventpost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newMarketPost(userid, itemid, textcontent, appid) {\r\n const req = { OwnerType: 0, OwnerID: userid, RefID: itemid, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/createmarketpost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newVideoPost(userid, videoid, textcontent, appid) {\r\n const req = { OwnerType: 0, OwnerID: userid, RefID: videoid, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/createvideopost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newPhotoPost(userid, photoid, textcontent, appid) {\r\n const req = { OwnerType: 0, OwnerID: userid, RefID: photoid, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/createphotopost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newSongPost(userid, songid, textcontent, appid) {\r\n const req = { OwnerType: 0, OwnerID: userid, RefID: songid, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/createsongpost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newPdfDocumentPost(userid, docid, textcontent,appid) {\r\n const req = { OwnerType: 0, OwnerID: userid, RefID: docid, TextContent: textcontent, AppID: appid };\r\n const response = await fetch('post/createpdfdocumentpost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deletePost(id) {\r\n const req = { PostID: id };\r\n const response = await fetch('post/deletepost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addTextContent(id, idx, type, content) {\r\n const req = { PostID: id, Index: idx, Type: type, TextContent: content };\r\n const response = await fetch('post/addpostcontent', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addPhotoContent(id, idx, file) {\r\n var formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('postid', id);\r\n formData.append('index', idx);\r\n const response = await fetch('post/addpostphotocontent', {\r\n method: 'POST',\r\n body: formData\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function addVideoContent(id, idx, file, thumb) {\r\n var formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('postid', id);\r\n formData.append('index', idx);\r\n formData.append('coverB64', thumb);\r\n const response = await fetch('post/addpostvideocontent', {\r\n method: 'POST',\r\n body: formData\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function savePost(id) {\r\n const req = { PostID: id };\r\n const response = await fetch('post/savepost', {\r\n\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (response.status === 200) {\r\n return await response.json();\r\n\r\n }\r\n return null;\r\n}\r\n\r\nexport async function unsavePost(id) {\r\n const req = { PostID: id };\r\n const response = await fetch('post/unsavepost', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nconst toBase64 = file => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n});\r\n\r\nexport async function addSource(postid, source) {\r\n const req = { PostID: postid, Source: source };\r\n const response = await fetch('post/addsource', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editSource(postid, source) {\r\n const req = { ID: postid, Source: source };\r\n const response = await fetch('post/editsource', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteSource(postid) {\r\n const req = { ID: postid };\r\n const response = await fetch('post/deletesource', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getPostTextCategories() {\r\n let url = 'post/getposttextcategories';\r\n const response = await fetch(url);\r\n\r\n if (response.status !== 200) {\r\n if (response.status === 401)\r\n return response.status;\r\n return 'error';\r\n }\r\n\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { Blog } from '../Content/Blog/Blog';\r\nimport { Event } from '../Content/Events/Event';\r\n\r\n\r\n//Font Awesome\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faFilePdf } from '@fortawesome/free-solid-svg-icons'\r\n\r\n//Link Components\r\nimport Linkify from 'react-linkify';\r\nimport { LinkPreview } from '@dhaiwat10/react-link-preview';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport Typography from '@mui/material/Typography';\r\nimport Paper from '@mui/material/Paper';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport Skeleton from '@mui/material/Skeleton';\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\n\r\n\r\n//React Player (videos)\r\n/*import ReactPlayer from 'react-player'*/\r\n\r\n//Data Services\r\nimport { getPostContent, repost } from '../../DataServices/PostService'\r\n\r\nexport class Repost extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showDelete: false,\r\n mode: this.props.mode,\r\n anchorEl: null,\r\n anchorUserEl: null,\r\n openPhotoViewer: false,\r\n selectedPhoto: null,\r\n showComments: false,\r\n showConfirmDeletePost: false,\r\n contentLoaded: false,\r\n showCommentSection: this.props.post.commentCount > 0 ? true : true,\r\n showBlog: false,\r\n showDocument: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.loadPost();\r\n }\r\n\r\n loadPost = async () => {\r\n await this.getPostContent();\r\n this.setState({ contentLoaded: true });\r\n }\r\n getPostContent = async () => {\r\n const post = this.props.post;\r\n if (post.content) {\r\n for (var j = 0; j < post.content.length; j++) {\r\n if (post.content[j].id &&\r\n (post.content[j].type === 2 && (!post.content[j].photo || !post.content[j].photo.thumb)) ||\r\n (post.content[j].type === 3) ||\r\n (post.content[j].type === 4 && !post.content[j].blog) ||\r\n (post.content[j].type === 8 && !post.content[j].event) ||\r\n (post.content[j].type === 6 && !post.content[j].document)) {\r\n var content = post.content[j];\r\n if (content.type !== 0 && content.type !== 1) {\r\n const data = await getPostContent(content.id);\r\n this.props.updatePostContent(this.props.postIdx, this.props.idx, j, data);\r\n }\r\n \r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n \r\n //Render funcs\r\n postHeaderContent = () => {\r\n if (this.props.post.user) {\r\n return (\r\n \r\n \r\n \r\n {this.state.contentLoaded ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n {this.state.contentLoaded ?\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack, fontWeight: 550 }}>\r\n {this.props.post.user.firstName + \" \" + this.props.post.user.lastName}\r\n \r\n :\r\n \r\n }\r\n {this.state.contentLoaded ?\r\n \r\n {this.props.post.whenPosted ?? new Date(this.props.post.postDate).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 return null;\r\n }\r\n postContent = () => {\r\n\r\n if (this.props.post.content && this.state.contentLoaded) {\r\n return (\r\n \r\n {this.props.post.content.map((content, index) => {\r\n switch (content.type) {\r\n case 0:\r\n return this.textContent(content, index);\r\n case 1:\r\n return this.linkContent(content, index);\r\n default:\r\n return null;\r\n }\r\n })}\r\n {this.props.post.content.map((content, index) => {\r\n switch (content.type) {\r\n case 2:\r\n return this.photoContent(content, index);\r\n case 3:\r\n return this.videoContent(content, index);\r\n case 4:\r\n return this.blogContent(content, index);\r\n case 6:\r\n return this.docContent(content, index);\r\n case 8:\r\n return this.eventContent(content, index);\r\n case 11:\r\n return this.repost(content.post)\r\n default:\r\n\r\n return null;\r\n }\r\n })}\r\n \r\n )\r\n\r\n }\r\n return (\r\n \r\n )\r\n }\r\n textContent = (content, index) => {\r\n if (content.textContent && content.textContent !== \"\") {\r\n return (\r\n \r\n ( {decoratedText} )}>\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimmerblack, fontWeight: 500 }}>\r\n {content.textContent}\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n return null;\r\n }\r\n linkContent = (content, index) => {\r\n if (content.textContent) {\r\n return (\r\n \r\n ( {decoratedText} )}>\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimmerblack, fontWeight: 500 }}>\r\n {content.textContent}\r\n \r\n }\r\n />\r\n ( {decoratedText} )}>\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimmerblack, fontWeight: 500 }}>\r\n {content.textContent}\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n photoContent = (content, index) => {\r\n const photos = this.props.post.content.filter((x) => x.type === 2);\r\n let photoCount = 1;\r\n if (photos)\r\n photoCount = photos.length;\r\n if (content.photo && content.photo.thumb) {\r\n const imageUrl = \"data:image/png;base64, \" + content.photo.thumb;\r\n return (\r\n \r\n 1 ? 250 : 500, md: photoCount > 1 ? 350 : 700, lg: photoCount > 1 ? 400 : 800, xl: photoCount > 1 ? 500 : 1000, },\r\n maxWidth: { xs: '100%', md: photoCount === 1 ? \"640px\" : \"100%\" },\r\n width: { xs: \"100%\", md: photoCount > 1 ? \"50%\" : \"100%\" },\r\n\r\n }}\r\n />\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n docContent = (content, index) => {\r\n \r\n if (content.document) {\r\n return (\r\n this.props.dark && theme.palette.doc.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }}\r\n raised\r\n elevation={this.props.dark ? 1 : 4}\r\n >\r\n\r\n \r\n \r\n \r\n \r\n \r\n {content.document.documentName ? content.document.documentName.substr(0, 30) : \"Document\"}\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {new Date(content.document.createDate).toLocaleDateString()}\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n videoContent = (content, index) => {\r\n if (content.rumbleVideo) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n blogContent = (content, index) => {\r\n if (content.blog) {\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n eventContent = (content, index) => {\r\n if (content.event) {\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n this.props.dark ? theme.palette.repost.dark : theme.palette.component3.light,\r\n }}\r\n\r\n >\r\n this.props.setSelectedPost && this.props.setSelectedPost(this.props.post, -2)} sx={{cursor: \"pointer\", width:\"100%\", display:\"flex\", textAlign:\"left\"}}>\r\n \r\n {this.postHeaderContent()}\r\n {this.postContent()}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n\r\n}\r\n","export async function getMentionsByUser(userid) {\r\n let url = 'mentions/getmentionsbyuser?userid=' + userid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getMention(id) {\r\n let url = 'mentions/getmention?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function addMention(userid, refuserid, targettype, targetid){\r\n const req = { TargetID: targetid, TargetType: targettype, UserID: userid, RefUserID: refuserid };\r\n const response = await fetch('mentions/addmention', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\nexport async function removeMention(id) {\r\n const req = { ID: id };\r\n const response = await fetch('mentions/removemention', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","\r\nexport async function newTextTag(targetid, type, text) {\r\n const req = { TargetID: targetid, TargetType: type, TagComment: text };\r\n const response = await fetch('tag/addtexttag', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { Comments } from '../Comments/Comments';\r\nimport { Blog } from '../Content/Blog/Blog';\r\nimport { DocumentViewer } from '../Content/Documents/DocumentViewer';\r\nimport { Event } from '../Content/Events/Event';\r\nimport { Product } from '../Content/Market/Product';\r\nimport { Song } from '../Content/Music/Song';\r\nimport { PhotoGallery } from '../Content/Photos/PhotoGallery';\r\nimport { Reactions } from '../Reactions/Reactions';\r\nimport { ModalDialog } from '../Utilities/ModalDialog';\r\nimport { UserAvatar } from '../Utilities/UserAvatar';\r\nimport { PostContentComposer } from './PostContentComposer';\r\nimport { Repost } from './Repost';\r\nimport { VideoPlayer } from '../Utilities/VideoPlayer';\r\nimport { Menu } from '../Utilities/Menu'\r\n//Font Awesome\r\nimport { faFilePdf } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\n//Link Components\r\nimport Microlink from '@microlink/react';\r\nimport Linkify from 'react-linkify';\r\n\r\n//Material UI\r\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\r\nimport StarIcon from '@mui/icons-material/Star';\r\nimport StarBorderIcon from '@mui/icons-material/StarBorder';\r\nimport { CardActionArea } from '@mui/material';\r\nimport Box from '@mui/material/Box';\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport Chip from '@mui/material/Chip';\r\nimport IconButton from '@mui/material/IconButton';\r\n//import Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Paper from '@mui/material/Paper';\r\nimport Skeleton from '@mui/material/Skeleton';\r\nimport Stack from '@mui/material/Stack';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Typography from '@mui/material/Typography';\r\n//Data Services\r\nimport { getDocument } from '../../DataServices/DocumentService';\r\nimport { addMention } from '../../DataServices/MentionsService';\r\nimport { createNotification } from '../../DataServices/NotificationService';\r\nimport { getPostContent, repost, savePost, unsavePost } from '../../DataServices/PostService';\r\nimport { newTextTag } from '../../DataServices/TagService';\r\n\r\nexport class Post extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showDelete: false,\r\n mode: this.props.mode,\r\n anchorEl: null,\r\n anchorUserEl: null,\r\n openPhotoViewer: false,\r\n selectedPhoto: null,\r\n showComments: false,\r\n showConfirmDeletePost: false,\r\n contentLoaded: false,\r\n showCommentSection: this.props.post.commentCount > 0 ? true : true,\r\n showBlog: false,\r\n showDocument: false,\r\n showMarketItem: false,\r\n allowEdit: false,\r\n showUserSite: false,\r\n streamBase: \"https://mylivesphere.com/api/videostream/\",\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.loadPost();\r\n }\r\n //Data getters\r\n loadPost = async () => {\r\n await this.getPostContent();\r\n this.setState({ contentLoaded: true });\r\n }\r\n getPostContent = async () => {\r\n const post = this.props.post;\r\n if (post.content) {\r\n for (var j = 0; j < post.content.length; j++) {\r\n if (post.content[j].id &&\r\n (post.content[j].type === 2 && (!post.content[j].photo || !post.content[j].photo.thumb)) ||\r\n (post.content[j].type === 3 && !post.content[j].rumbleVideo) ||\r\n (post.content[j].type === 4 && !post.content[j].blog) ||\r\n (post.content[j].type === 8 && !post.content[j].event) ||\r\n (post.content[j].type === 12 && !post.content[j].marketItem) ||\r\n (post.content[j].type === 6 && !post.content[j].document)) {\r\n let content = post.content[j];\r\n if (content.type !== 0 && content.type !== 1) {\r\n \r\n const data = await getPostContent(content.id);\r\n\r\n this.props.updatePostContent(this.props.channel, this.props.idx, j, data);\r\n }\r\n\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n //Event handlers\r\n handleFollow = async () => {\r\n let post = this.props.post;\r\n post.user.following = true;\r\n this.props.updatePosts(this.props.channel,post, this.props.idx);\r\n }\r\n handleUnfollow = async () => {\r\n let post = this.props.post;\r\n post.user.following = false;\r\n this.props.updatePosts(this.props.channel, post, this.props.idx);\r\n }\r\n handleShowPostActionMenu = (e) => {\r\n this.setState({ anchorEl: e.currentTarget });\r\n }\r\n handleClosePostActionMenu = (e) => {\r\n this.setState({ anchorEl: null });\r\n }\r\n handleClickPhoto(e, photo, idx) {\r\n let target = e.target;\r\n target.style.cursor = 'wait';\r\n document.body.style.cursor = 'wait';\r\n this.setState({\r\n selectedPhoto: photo,\r\n selectedPhotoIDX: idx,\r\n openPhotoViewer: true\r\n })\r\n target.style.cursor = 'default';\r\n document.body.style.cursor = 'default';\r\n }\r\n handleEdit = () => {\r\n this.props.handleEditPost(this.props.post);\r\n }\r\n handleDelete = () => {\r\n this.setState({ showConfirmDeletePost: true, anchorEl: null });\r\n }\r\n handleOpen = () => {\r\n this.setState({ anchorEl: null });\r\n this.props.setSelectedPost(this.props.post, this.props.idx);\r\n }\r\n handleShare = () => {\r\n this.setState({\r\n anchorEl: null,\r\n showPostComposer: true\r\n });\r\n\r\n }\r\n handleHide = () => {\r\n this.props.handleHidePost(this.props.post);\r\n }\r\n handleConfirmDelete = () => {\r\n this.setState({ showConfirmDeletePost: false });\r\n this.props.handleDeletePost(this.props.post.id, this.props.idx);\r\n }\r\n handleMenuClick = (event) => {\r\n this.setState({ anchorEl: event.currentTarget });\r\n };\r\n updatePhotoCommentCount = (count) => {\r\n this.setState(\r\n prevState => {\r\n let state = { ...prevState };\r\n state.selectedPhoto.commentCount = count;\r\n return { state };\r\n }\r\n );\r\n }\r\n handleComments = () => {\r\n this.setState({\r\n anchorEl: null,\r\n showCommentSection: !this.state.showCommentSection\r\n });\r\n //this.props.menuOpen(false);\r\n }\r\n handleClickDocument = async (e, docid, idx) => {\r\n let target = e.target;\r\n target.style.cursor = 'wait';\r\n document.body.style.cursor = 'wait';\r\n const doc = await getDocument(docid);\r\n target.style.cursor = 'default';\r\n document.body.style.cursor = 'default';\r\n\r\n this.setState({\r\n selectedDocument: doc,\r\n selectedDocumentName: doc.documentName,\r\n selectedDocumentContent: doc.eFiles[0].fileContent,\r\n selectedDocumentIDX: idx,\r\n showDocument: true\r\n })\r\n }\r\n handleSaveRepost = async (post) => {\r\n\r\n const npost = await repost(this.props.user.userID, this.props.post.id, post.textContent, this.props.appIdentifier);\r\n if (npost) {\r\n this.props.updateLastPost(npost.id);\r\n this.props.handleSharePost(npost);\r\n\r\n if (post.tags && post.tags.length > 0) {\r\n for (var t = 0; t < post.tags.length; t++) {\r\n await newTextTag(npost.id, 2, post.tags[t]);\r\n }\r\n }\r\n if (post.mentions && post.mentions.length > 0) {\r\n for (var m = 0; m < post.mentions.length; m++) {\r\n await addMention(post.mentions[m].id, this.props.user.userID, 2, npost.id);\r\n\r\n let message = (this.props.user.displayName ? this.props.user.displayName : \"A user\") + \" mentioned you in a post\";\r\n if (post.mentions[m].id === this.props.user.userID) {\r\n message = \"You mentioned yourself in a post\";\r\n }\r\n await createNotification(post.mentions[m].id, 2, npost.id, this.props.user.userID, message, this.props.appIdentifier);\r\n }\r\n }\r\n\r\n let msg = (this.props.user.displayName ? this.props.user.displayName : \"A user\") + \" shared your post\";\r\n if (this.props.post.user.userID === this.props.user.userID) {\r\n msg = \"You shared your own post\";\r\n }\r\n await createNotification(this.props.post.user.userID, 2, npost.id, this.props.user.userID, msg, this.props.appIdentifier);\r\n }\r\n\r\n this.setState({ showPostComposer: false });\r\n\r\n\r\n }\r\n savePost = async () => {\r\n let post = this.props.post;\r\n post.isSaved = true;\r\n this.props.updatePosts(this.props.channel, post, this.props.idx);\r\n await savePost(post.id);\r\n }\r\n unsavePost = async () => {\r\n let post = this.props.post;\r\n post.isSaved = false;\r\n this.props.updatePosts(this.props.channel, post, this.props.idx);\r\n await unsavePost(post.id);\r\n }\r\n updateCommentCount = (count) => {\r\n let post = this.props.post;\r\n post.commentCount = count;\r\n this.props.updatePosts(this.props.channel, post, this.props.idx);\r\n }\r\n\r\n //Render funcs\r\n postHeader = () => {\r\n if (this.props.post.user) {\r\n return (\r\n \r\n {this.userAvatar()}\r\n \r\n {this.state.contentLoaded &&\r\n \r\n {this.saved()}\r\n {this.reactions()}\r\n {this.postMenu()}\r\n \r\n }\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n userAvatar = () => {\r\n return (\r\n \r\n )\r\n }\r\n reactions = () => {\r\n return (\r\n \r\n )\r\n }\r\n saved = () => {\r\n return (\r\n \r\n {!this.props.post.isSaved ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n )\r\n }\r\n postMenu = () => {\r\n if (!this.props.readOnly) {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n \r\n \r\n {this.props.setSelectedPost &&\r\n \r\n Open\r\n \r\n }\r\n \r\n {this.state.showCommentSection ? \"Hide Comments\" : \"Show Comments\"}\r\n \r\n {(this.state.allowEdit && this.props.post.user.userID === this.props.user.userID) &&\r\n Edit\r\n }\r\n {this.props.post.user.userID === this.props.user.userID &&\r\n Delete\r\n }\r\n {(!this.props.post.isRepost && true === true) &&\r\n \r\n Share\r\n \r\n }\r\n {this.props.post.shareFlag && Hide}\r\n\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n //rendered content in post container\r\n postContent = () => {\r\n if (this.props.post.content && this.state.contentLoaded) {\r\n let photos = false;\r\n return (\r\n \r\n {this.props.post.content.map((content, index) => {\r\n switch (content.type) {\r\n case 2:\r\n photos = true;\r\n break;\r\n case 3:\r\n return this.videoContent(content, index);\r\n case 4:\r\n return this.blogContent(content, index);\r\n case 5:\r\n return this.songContent(content, index);\r\n case 6:\r\n return this.docContent(content, index);\r\n case 8:\r\n return this.eventContent(content, index);\r\n case 11:\r\n return this.repost(content.post, index);\r\n case 12:\r\n return this.marketContent(content, index);\r\n default:\r\n\r\n return null;\r\n }\r\n\r\n })}\r\n {photos && this.photoContent()}\r\n\r\n\r\n {this.props.post.content.map((content, index) => {\r\n switch (content.type) {\r\n case 0:\r\n return this.textContent(content, index);\r\n case 1:\r\n return this.linkContent(content, index);\r\n default:\r\n return null;\r\n }\r\n })}\r\n\r\n \r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n textContent = (content, index) => {\r\n if (content.textContent && content.textContent !== \"\") {\r\n const words = content.textContent.split(' ');\r\n if (words && words.length > 0) {\r\n for (var i = 0; i < words.length; i++) {\r\n if (words[i].startsWith(\"@\")) {\r\n words[i] = words[i].replace(\"@\", \"\");\r\n }\r\n }\r\n }\r\n content.textContent = words.join(' ');\r\n return (\r\n \r\n ( {decoratedText} )}>\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack, fontWeight: 500 }}>\r\n {content.textContent}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return null;\r\n }\r\n linkContent = (content, index) => {\r\n if (content.textContent) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n photoContent = () => {\r\n const content = this.props.post.content.filter((x) => x.type === 2);\r\n if (content && content.length > 0) {\r\n const photos = content.map(x => x.photo);\r\n return (\r\n \r\n )\r\n }\r\n return null;\r\n\r\n }\r\n docContent = (content, index) => { \r\n if (content.document) {\r\n return (\r\n this.props.dark && theme.palette.note.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }}\r\n raised\r\n elevation={this.props.dark ? 1 : 4}\r\n >\r\n this.handleClickDocument(e, content.document.documentID, index)}>\r\n \r\n \r\n \r\n \r\n \r\n {content.document.documentName ? content.document.documentName.substr(0, 30) : \"Document\"}\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {new Date(content.document.createDate).toLocaleDateString()}\r\n \r\n \r\n \r\n \r\n \r\n {this.docViewer(content)}\r\n \r\n\r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n videoContent = (content, index) => {\r\n if (content.video) {\r\n return ( )\r\n }\r\n return null;\r\n }\r\n blogContent = (content, index) => {\r\n if (content.blog) {\r\n return (\r\n \r\n this.setState({ showBlog: true })}\r\n elevation={this.props.dark ? 0 : 4}\r\n sx={{ cursor:\"pointer\", padding: 0, marginTop: \"8px\", borderRadius: \"0px\", maxHeight: \"500px\", overflow: \"hidden\", border: this.props.dark ? \"none\" : \"solid 1px #ddd\", }}>\r\n \r\n\r\n \r\n \r\n {this.blogViewer(content)}\r\n \r\n\r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n eventContent = (content, index) => {\r\n if (content.event) {\r\n return (\r\n \r\n this.setState({ showEvent: true })}\r\n elevation={this.props.dark ? 0 : 4}\r\n sx={{ cursor: \"pointer\", padding: 0, marginTop: \"8px\", borderRadius: \"0px\", maxHeight: \"300px\", overflow: \"hidden\", border: this.props.dark ? \"none\" : \"solid 1px #ddd\", }}>\r\n \r\n \r\n {this.eventViewer(content)}\r\n \r\n\r\n )\r\n }\r\n return ( \r\n \r\n )\r\n }\r\n songContent = (content, index) => {\r\n if (content.refID) {\r\n return (\r\n \r\n )\r\n }\r\n return ( )\r\n }\r\n marketContent = (content, index) => {\r\n if (content.marketItem) {\r\n return (\r\n \r\n this.setState({ showMarketItem: true })}\r\n elevation={this.props.dark ? 0 : 4}\r\n sx={{ cursor: \"pointer\", padding: 0, marginTop: \"8px\", borderRadius: \"0px\", maxHeight: \"250px\", overflow: \"hidden\", border: this.props.dark ? \"none\" : \"solid 1px #ddd\", }}>\r\n \r\n \r\n {this.marketViewer(content)}\r\n \r\n\r\n )\r\n }\r\n return (\r\n \r\n )\r\n }\r\n repost = (post, index) => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimwblack }}>Shared Post\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n //post footer items\r\n comments = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n postInfo = () => {\r\n if (this.props.showInfo) {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimmerblack }}>\r\n Post Information\r\n \r\n \r\n {this.category()}\r\n {this.sources()}\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n sources = () => {\r\n if (this.props.post.sources && this.props.post.sources.length > 0) {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimmerblack }}>\r\n Sources:\r\n \r\n ( {decoratedText} )}>\r\n \r\n {this.props.post.sources.map((source, idx) => {\r\n return (\r\n \r\n {source}\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n category = () => {\r\n if (this.props.post && this.props.post.textCategory) {\r\n return (\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n //popup viewers for content clicks\r\n marketViewer = (content) => {\r\n if (this.state.showMarketItem) {\r\n return (\r\n this.setState({ showMarketItem: false })}\r\n fullWidth={false}\r\n maxWidth=\"xl\"\r\n fullScreen={true}\r\n noPad\r\n prettyScroll\r\n >\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n eventViewer = (content) => {\r\n if (this.state.showEvent) {\r\n return (\r\n this.setState({ showEvent: false })}\r\n fullWidth={false}\r\n maxWidth=\"xl\"\r\n fullScreen={true}\r\n noPad\r\n prettyScroll\r\n >\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n blogViewer = (content) => {\r\n if (this.state.showBlog) {\r\n return (\r\n this.setState({ showBlog: false })}\r\n fullWidth={false}\r\n maxWidth=\"xl\"\r\n noPad\r\n fullScreen={true}\r\n prettyScroll\r\n >\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n docViewer = () => {\r\n if (this.state.showDocument && this.state.selectedDocument) {\r\n return (\r\n this.setState({ showDocument: false })}\r\n fullWidth={true}\r\n disableButtons\r\n hideScroll={true}\r\n noUpperClose\r\n maxWidth=\"xl\"\r\n closeLabel=\"Close\"\r\n noSidePad\r\n fullScreen\r\n solid\r\n fullHeight\r\n >\r\n this.setState({ showDocument: false })}\r\n fullHeight\r\n width={this.props.width}\r\n />\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n postDeleteConfirmation = () => {\r\n return (\r\n this.setState({ showConfirmDeletePost: false })}\r\n handleSave={this.handleConfirmDelete}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\"\r\n />\r\n )\r\n }\r\n composer = () => {\r\n if (this.state.showPostComposer) {\r\n return (\r\n this.setState({ showPostComposer: false })}\r\n dark={this.props.dark}\r\n postType={this.props.post.type}\r\n title=\"New Shared Post\"\r\n userList={this.props.userList}\r\n />\r\n )\r\n }\r\n return null;\r\n }\r\n\r\n //post container\r\n post = () => {\r\n return (\r\n this.props.dark ? \"none\" : { xs: \"none\", sm: \"solid 1px #dadada\" },\r\n background: (theme) => this.props.dark ? theme.palette.post.dark : theme.palette.post.light,\r\n }}\r\n >\r\n \r\n {this.postHeader()}\r\n {this.postContent()}\r\n \r\n {this.props.post.type === 0 && this.postInfo()}\r\n {this.state.showCommentSection && this.comments()}\r\n \r\n {this.postDeleteConfirmation()}\r\n {this.composer()}\r\n \r\n )\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.post();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { Post } from './Post'\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@mui/material/Typography';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Stack from '@mui/material/Stack';\r\n\r\nexport class PostsContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n user: null, \r\n menuOpen: false, \r\n };\r\n }\r\n\r\n //Event handlers\r\n handleScroll = (e) => {\r\n const bottom = e.target.scrollHeight - e.target.scrollTop >= e.target.clientHeight * 0.75;\r\n if (bottom) {\r\n console.log(\"bottom\")\r\n this.props.getMorePosts();\r\n }\r\n }\r\n\r\n //render funcs\r\n loadingSpinner = () => {\r\n return (\r\n this.props.dark ? theme.palette.backgroundMain.dark : theme.palette.backgroundMain.light, }}>\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {\"Loading Posts...\"}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n searchingSpinner = () => {\r\n return (\r\n this.props.dark ? \"#090909\" : theme.palette.component3.light, }}>\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {\"Searching...\"}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n searchNoResultsMessage = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n {'Sorry, your search for \"' + this.props.searchTerm + '\" returned no results.'}\r\n \r\n \r\n )\r\n }\r\n posts = () => {\r\n if (this.props.loaded) {\r\n return (\r\n this.props.site ? \"unset\" : (this.props.dark ? \"#050505\" : theme.palette.backgroundMain.light),\r\n height: !this.props.site && (this.props.dark ? { xs: \"calc(100vh - 149px)\", sm: \"calc(100vh - 157px)\", lg: \"calc(100vh - 102px)\" } : { xs: \"calc(100vh - 148px)\", sm: \"calc(100vh - 156px)\", lg:\"calc(100vh - 101px)\" }) ,\r\n position: \"relative\",\r\n minHeight: this.props.site && \"400px\"\r\n }}\r\n className=\"prettyScroll\"\r\n onScroll={this.handleScroll}\r\n >\r\n \r\n {(this.props.channel === 100 && this.props.searching)\r\n ?\r\n this.searchingSpinner() \r\n :\r\n ((this.props.channel === 100 && !this.props.hasResults)\r\n ?\r\n this.searchNoResultsMessage()\r\n :\r\n \r\n {this.props.posts.map((post, index) => {\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 else {\r\n if (this.props.searching) {\r\n return this.searchingSpinner();\r\n }\r\n return this.loadingSpinner();\r\n } \r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.posts();\r\n }\r\n}\r\n\r\n","import React, { PureComponent } from 'react';\r\n\r\n//Custom Components\r\nimport { Section } from '../Utilities/Section';\r\nimport { Spin } from '../Utilities/Spin';\r\nimport { PostsContainer } from '../Posts/PostsContainer';\r\n\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\nimport Box from '@mui/material/Box';\r\nimport Avatar from '@mui/material/Avatar';\r\n\r\nexport class UserSiteHome extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n videoStreamBase: \"https://mylivesphere.com/api/videostream/\",\r\n musicStreamBase: \"https://mylivesphere.com/api/musicstream/\",\r\n }\r\n }\r\n\r\n //Render funcs\r\n home = () => {\r\n let content = this.props.loading\r\n ?\r\n \r\n :\r\n \r\n {this.props.bio && this.bio()}\r\n {this.posts()} \r\n \r\n return content;\r\n }\r\n bio = () => {\r\n if (this.props.bio) {\r\n return (\r\n
\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack, }}>\r\n \r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\n return null;\r\n }\r\n avatar = () => {\r\n return (\r\n \r\n )\r\n }\r\n posts = () => {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n //Main component render\r\n render() {\r\n return this.home();\r\n }\r\n}\r\n\r\n","\r\nexport async function getVideoLibraries(appid) {\r\n var url = \"video/getlibraries?appid=\" + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getVideoLibrary(id) {\r\n const response = await fetch(\"video/getlibrary?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getRumbleVideo(id) {\r\n const response = await fetch(\"video/getrumblevideo?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\n\r\nexport async function newLibrary(title, parentID, appid) {\r\n const req = {\r\n ParentID: parentID,\r\n Title: title,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"video/createlibrary\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editLibrary(id, title) {\r\n const req = {\r\n ID: id,\r\n Title: title\r\n };\r\n const response = await fetch(\"video/editlibrary\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n // console.error(response);\r\n return false;\r\n}\r\n\r\nexport async function deleteLibrary(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n const response = await fetch(\"video/deletelibrary\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n // console.error(response);\r\n return false;\r\n}\r\nexport async function updateCover(id, photoid) {\r\n const req = {\r\n ID: id,\r\n PhotoID: photoid\r\n };\r\n const response = await fetch(\"video/updatecover\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n //console.error(response);\r\n return false;\r\n}\r\nexport async function saveRumbleVideo(title, parentID, rumbleID, rumbleURL, appid) {\r\n const req = {\r\n ParentID: parentID,\r\n Title: title,\r\n RumbleID: rumbleID,\r\n RumbleURL: rumbleURL,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"video/saverumblevideo\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editRumbleVideo(id, title, parentID, rumbleID, rumbleURL) {\r\n const req = {\r\n ID: id,\r\n ParentID: parentID,\r\n Title: title,\r\n RumbleID: rumbleID,\r\n RumbleURL: rumbleURL\r\n };\r\n const response = await fetch(\"video/editrumblevideo\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function deleteRumbleVideo(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n const response = await fetch(\"video/deleterumblevideo\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function saveVideo(file, parentID, appid, cover) {\r\n\r\n const formData = new FormData();\r\n formData.append('file', file);\r\n formData.append('parentid', parentID);\r\n formData.append('appid', appid);\r\n formData.append('coverB64', cover);\r\n\r\n const vidID = await fetch('video/savevideo', {\r\n method: 'POST',\r\n body: formData\r\n }).then(\r\n response => response.json()\r\n );\r\n return vidID;\r\n}\r\nexport async function deleteVideo(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n const response = await fetch(\"video/deletevideo\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n // console.error(response);\r\n return false;\r\n}\r\nexport async function moveVideo(id, parentid) {\r\n const req = {\r\n ID: id,\r\n ParentID: parentid\r\n };\r\n const response = await fetch(\"video/movevideo\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n // console.error(response);\r\n return false;\r\n}\r\nexport async function getVideo(id) {\r\n const response = await fetch(\"video/getvideo?id=\" + id);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { UserSiteAbout } from './UserSiteAbout';\r\nimport { UserSitePhotos } from './UserSitePhotos';\r\nimport { UserSiteVideos } from './UserSiteVideos';\r\nimport { UserSiteMusic } from './UserSiteMusic';\r\nimport { UserSiteFiles } from './UserSiteFiles';\r\nimport { UserSiteHome } from './UserSiteHome';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Stack from '@mui/material/Stack';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@mui/material/Button';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\n\r\nimport { getSiteContent, getUserSiteProfile, getProfileImage } from '../../DataServices/UserService'\r\nimport { getPhotoThumb, getPhoto, getSiteLibrary } from '../../DataServices/PhotoService'\r\nimport { getVideoLibrary } from '../../DataServices/VideoService'\r\nimport { getSong } from '../../DataServices/MusicService'\r\nimport { getFolder } from '../../DataServices/DocumentService'\r\nimport { getPostsByUser } from '../../DataServices/PostService'\r\n\r\nconst TabPanel = (props) => {\r\n const { children, value, index, ...other } = props;\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport class UserSite extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tabValue: 0,\r\n tabs: ['Home', 'About Me'],\r\n loadingHome: true,\r\n loadingProfile: false,\r\n loadingContent: false,\r\n loadingPhotos: true,\r\n loadingVideos: true,\r\n loadingFiles: true,\r\n loadingSongs: true,\r\n coverPhoto: this.props.site.coverPhoto ?? null,\r\n profilePhoto: \"\",\r\n refreshing: false,\r\n loadingPosts: false,\r\n loadedPosts: false,\r\n newestPostID: \"\",\r\n\r\n posts: [],\r\n loadIndex: 0,\r\n loadCount: 6,\r\n width: 0,\r\n height: 0,\r\n }\r\n }\r\n componentDidMount() {\r\n this.updateWindowDimensions();\r\n window.addEventListener('resize', this.updateWindowDimensions);\r\n this.getProfilePic();\r\n this.getPosts();\r\n this.getSiteContent();\r\n this.getUserSiteProfile();\r\n this.getCoverImage();\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateWindowDimensions);\r\n }\r\n updateWindowDimensions = () => {\r\n this.setState({ width: window.innerWidth, height: window.innerHeight });\r\n }\r\n //Data Getters\r\n getProfilePic = async () => {\r\n const photo = await getProfileImage(this.props.site.userID);\r\n if (photo) {\r\n this.setState({ profilePhoto: photo.thumb, loadingHome: false });\r\n this.forceUpdate();\r\n }\r\n }\r\n getSiteContent = async () => {\r\n\r\n this.setState({ loadingContent: true });\r\n const siteContent = await getSiteContent(this.props.site.userID);\r\n const tabs = [...this.state.tabs];\r\n if (siteContent) {\r\n if (siteContent.photoAlbums && siteContent.photoAlbums.length > 0) {\r\n tabs.push(\"Photos\");\r\n\r\n }\r\n if (siteContent.videoLibraries && siteContent.videoLibraries.length > 0) {\r\n tabs.push(\"Videos\");\r\n }\r\n if (siteContent.blogs && siteContent.blogs.length > 0) {\r\n tabs.push(\"Blog\");\r\n }\r\n if (siteContent.music && (\r\n (siteContent.music.songs && siteContent.music.songs.length > 0) ||\r\n (siteContent.music.artists && siteContent.music.artists.length > 0) ||\r\n (siteContent.music.albums && siteContent.music.albums.length > 0) ||\r\n (siteContent.music.playlists && siteContent.music.playlists.length > 0)\r\n )) {\r\n tabs.push(\"Music\");\r\n }\r\n if (siteContent.events && siteContent.events.length > 0) {\r\n tabs.push(\"Events\");\r\n }\r\n if (siteContent.documentFolders && siteContent.documentFolders.length > 0) {\r\n tabs.push(\"Files\");\r\n }\r\n //if (siteContent.notebooks && siteContent.notebooks.length > 0) {\r\n // tabs.push(\"Notes\");\r\n //}\r\n //if (siteContent.lists && siteContent.lists.length > 0) {\r\n // tabs.push(\"Lists\");\r\n //}\r\n this.setState({ siteContent, loadingContent: false, tabs });\r\n setTimeout(this.loadContentLibs, 200);\r\n\r\n }\r\n\r\n\r\n\r\n }\r\n loadContentLibs = async () => {\r\n await this.loadVideos();\r\n await this.loadMusic();\r\n await this.loadDocuments();\r\n this.loadPhotos();\r\n }\r\n loadPhotos = async () => {\r\n this.setState({ loadingPhotos: true});\r\n const siteContent = this.state.siteContent;\r\n if (siteContent.photoAlbums && siteContent.photoAlbums.length > 0) {\r\n for (var i = 0; i < siteContent.photoAlbums.length; i++) {\r\n const album = await getSiteLibrary(siteContent.photoAlbums[i].photoAlbumID);\r\n if (album) {\r\n siteContent.photoAlbums[i] = album;\r\n this.setState({ siteContent });\r\n }\r\n }\r\n this.setState({ loadingPhotos: false });\r\n for (var i = 0; i < siteContent.photoAlbums.length; i++) {\r\n for (var j = 0; j < siteContent.photoAlbums[i].photos.length; j++) {\r\n var photo = siteContent.photoAlbums[i].photos[j];\r\n if (photo.photoID) {\r\n const thumb = await getPhotoThumb(photo.photoID);\r\n if (thumb) {\r\n siteContent.photoAlbums[i].photos[j].thumb = thumb;\r\n this.setState({ siteContent });\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n loadVideos = async () => {\r\n this.setState({ loadingVideos: true });\r\n const siteContent = this.state.siteContent;\r\n if (siteContent.videoLibraries && siteContent.videoLibraries.length > 0) {\r\n for (var i = 0; i < siteContent.videoLibraries.length; i++) {\r\n const lib = await getVideoLibrary(siteContent.videoLibraries[i].id);\r\n if (lib) {\r\n siteContent.videoLibraries[i] = lib;\r\n this.setState({ siteContent, loadingVideos: false });\r\n this.forceUpdate();\r\n }\r\n }\r\n }\r\n }\r\n loadDocuments = async () => {\r\n this.setState({ loadingFiles: true });\r\n const siteContent = this.state.siteContent;\r\n if (siteContent.documentFolders && siteContent.documentFolders.length > 0) {\r\n for (var i = 0; i < siteContent.documentFolders.length; i++) {\r\n const folder = await getFolder(siteContent.documentFolders[i].id);\r\n if (folder) {\r\n siteContent.documentFolders[i] = folder;\r\n this.setState({ siteContent, loadingFiles: false });\r\n this.forceUpdate();\r\n }\r\n }\r\n }\r\n }\r\n loadMusic = async () => {\r\n await this.getSongs();\r\n }\r\n getSongs = async () => {\r\n this.setState({ loadingSongs: true });\r\n const siteContent = this.state.siteContent;\r\n if (siteContent.music && siteContent.music.songs && siteContent.music.songs.length > 0) {\r\n for (var i = 0; i < siteContent.music.songs.length; i++) {\r\n const song = await getSong(siteContent.music.songs[i].id);\r\n if (song) {\r\n siteContent.music.songs[i] = song;\r\n this.setState({ siteContent, loadingSongs: false });\r\n this.forceUpdate();\r\n }\r\n }\r\n }\r\n }\r\n getUserSiteProfile = async () => {\r\n this.setState({ loadingProfile: true });\r\n\r\n const userSiteProfile = await getUserSiteProfile(this.props.site.userID);\r\n if (userSiteProfile) {\r\n this.setState({ siteProfile: userSiteProfile, loadingProfile: false });\r\n }\r\n }\r\n getCoverImage = async () => {\r\n if (this.props.site && this.props.site.coverPhotoID) {\r\n const coverPhoto = await getPhoto(this.props.site.coverPhotoID);\r\n if (coverPhoto) {\r\n this.setState({ coverPhoto: coverPhoto.fullPhoto });\r\n }\r\n }\r\n }\r\n getPosts = async () => {\r\n if (!this.state.refreshing) {\r\n this.setState({ refreshing: true });\r\n const postInfo = await this.getPostsByUser(-1, this.state.loadIndex, this.state.loadCount);\r\n if (postInfo) {\r\n this.setState({\r\n posts: postInfo.posts,\r\n loadIndex: postInfo.loadIndex,\r\n newestPostID: postInfo.newestPostID,\r\n loadingPosts: false,\r\n loadedPosts: true,\r\n refreshing: false,\r\n });\r\n }\r\n else {\r\n this.setState({\r\n loadingPosts: false,\r\n loadedPosts: true,\r\n refreshing: false,\r\n });\r\n }\r\n this.forceUpdate();\r\n }\r\n }\r\n getPostsByUser = async (channel, loadIndex, loadCount) => {\r\n const data = await getPostsByUser(this.props.site.userID, loadIndex, loadCount, channel ?? -1, this.props.appIdentifier ?? \"LS\"); //fetch posts\r\n\r\n //if unauthorized, invoke callback to kill token and logout\r\n if (data === 401 || data === 400) {\r\n this.props.setToken('');\r\n return;\r\n }\r\n\r\n //if other error just set status to normal\r\n if (data === 'error') {\r\n return;\r\n }\r\n\r\n let newestPostID;\r\n if (data.posts && data.posts.length > 0) {\r\n newestPostID = data.posts[0].id;\r\n }\r\n const postInfo = { posts: data.posts, newestPostID: newestPostID, loadIndex: loadIndex + data.posts.length, loading: false, user: data.user, loaded: true, refreshing: false };\r\n return postInfo;\r\n }\r\n getMorePosts = async () => {\r\n if (!this.state.refreshing && !this.state.loadingMore) {\r\n this.setState({\r\n loadingMore: true,\r\n refreshing: true\r\n });\r\n const result = await this.getMorePostsByUser();\r\n\r\n if (result) {\r\n let posts = this.state.posts;\r\n posts = [...posts, ...result.posts];\r\n this.setState({\r\n posts,\r\n loadIndex: this.state.loadIndex + result.loadIndex,\r\n loading: false,\r\n loadingMore: false,\r\n refreshing: false,\r\n });\r\n }\r\n else{\r\n this.setState({\r\n loading: false,\r\n loadingMore: false,\r\n refreshing: false,\r\n });\r\n }\r\n this.forceUpdate();\r\n }\r\n }\r\n getMorePostsByUser = async () => {\r\n\r\n const data = await getPostsByUser(this.props.site.userID, this.state.loadIndex, this.state.loadCount, -1, this.props.appIdentifier ?? \"LS\");\r\n\r\n //if unauthorized, invoke callback to kill token and logout\r\n if (data === 401) {\r\n this.props.setToken('');\r\n return;\r\n }\r\n\r\n //if other error just set status to normal\r\n if (data === 'error') {\r\n return null;\r\n }\r\n\r\n if (data && data.posts && data.posts.length > 0) {\r\n const postInfo = { posts: data.posts, loadIndex: data.posts.length, loading: false, loaded: true, refreshing: false, loadingMore: false };\r\n return postInfo;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n updatePostContent = async (channel, idx, contentIdx, content) => {\r\n if (content) {\r\n if (content.type == 4) {\r\n content = await this.loadBlogSpecificContent(content);\r\n }\r\n if (content.type == 8) {\r\n content = await this.loadEventSpecificContent(content);\r\n }\r\n if (content.type == 12) {\r\n content = await this.loadMarketSpecificContent(content);\r\n }\r\n if (idx >= 0) {\r\n const posts = this.state.posts;\r\n if (posts[idx] && posts[idx].content)\r\n if (content) {\r\n posts[idx].content[contentIdx] = content;\r\n }\r\n else {\r\n posts.splice(idx, 1);\r\n }\r\n this.setState({ posts });\r\n this.forceUpdate();\r\n }\r\n else {\r\n\r\n let post = this.props.selectedPost;\r\n if (post) {\r\n post.content[contentIdx] = content;\r\n this.props.setSelectedPost(post);\r\n }\r\n }\r\n }\r\n }\r\n updateRepostContent = async (postIdx, postContentIdx, contentIdx, content) => {\r\n if (content && content) {\r\n if (content.type == 4) {\r\n content = await this.loadBlogSpecificContent(content);\r\n }\r\n if (content.type == 8) {\r\n content = await this.loadEventSpecificContent(content);\r\n }\r\n const posts = [...this.state.posts];\r\n if (posts[postIdx] && posts[postIdx].content && posts[postIdx].content.length > 0 && posts[postIdx].content[postContentIdx].post && posts[postIdx].content[postContentIdx].post.content)\r\n if (content) {\r\n posts[postIdx].content[postContentIdx].post.content[contentIdx] = content;\r\n }\r\n else {\r\n posts[postIdx].content[postContentIdx].post.content[contentIdx].splice(contentIdx, 1);\r\n }\r\n\r\n this.setState({ posts });\r\n }\r\n }\r\n loadBlogSpecificContent = async (content) => {\r\n //get header image\r\n if (content.blog && content.blog.header && content.blog.header.headerImage && content.blog.header.headerImage.photoID) {\r\n const hthumb = await getPhotoThumb(content.blog.header.headerImage.photoID);\r\n if (hthumb) {\r\n content.blog.header.headerImage.thumb = hthumb;\r\n }\r\n }\r\n //get cover image\r\n if (content.blog && content.blog.header && content.blog.header.coverImage && content.blog.header.coverImage.photoID) {\r\n const cthumb = await getPhotoThumb(content.blog.header.coverImage.photoID);\r\n if (cthumb) {\r\n content.blog.header.coverImage.thumb = cthumb;\r\n }\r\n }\r\n //get author image\r\n if (content.blog && content.blog.header && content.blog.header.authorImage && content.blog.header.authorImage.photoID) {\r\n const athumb = await getPhotoThumb(content.blog.header.authorImage.photoID);\r\n if (athumb) {\r\n content.blog.header.authorImage.thumb = athumb;\r\n }\r\n }\r\n //load other content\r\n if (content.blog && content.blog.bodyRows && content.blog.bodyRows.length > 0) {\r\n for (var i = 0; i < content.blog.bodyRows.length; i++) {\r\n let row = content.blog.bodyRows[i];\r\n if (row.rowContent && row.rowContent.length > 0) {\r\n for (var j = 0; j < row.rowContent.length; j++) {\r\n let rcontent = row.rowContent[j];\r\n if (rcontent.contentType == 1 && rcontent.photo && rcontent.photo.photoID) {\r\n const contentThumb = await getPhotoThumb(rcontent.photo.photoID);\r\n if (contentThumb) {\r\n content.blog.bodyRows[i].rowContent[j].photo.thumb = contentThumb;\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return content;\r\n }\r\n loadEventSpecificContent = async (content) => {\r\n //get header image\r\n if (content.event && content.event.coverPhoto && content.event.coverPhoto.photoID) {\r\n const hthumb = await getPhotoThumb(content.event.coverPhoto.photoID);\r\n if (hthumb) {\r\n content.event.coverPhoto.thumb = hthumb;\r\n }\r\n }\r\n\r\n //load other content\r\n if (content.event && content.event.bodyRows && content.event.bodyRows.length > 0) {\r\n for (var i = 0; i < content.event.bodyRows.length; i++) {\r\n let row = content.event.bodyRows[i];\r\n if (row.rowContent && row.rowContent.length > 0) {\r\n for (var j = 0; j < row.rowContent.length; j++) {\r\n let rcontent = row.rowContent[j];\r\n if (rcontent.contentType == 1 && rcontent.photo && rcontent.photo.photoID) {\r\n const contentThumb = await getPhotoThumb(rcontent.photo.photoID);\r\n if (contentThumb) {\r\n content.event.bodyRows[i].rowContent[j].photo.thumb = contentThumb;\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return content;\r\n }\r\n loadMarketSpecificContent = async (content) => {\r\n //get header image\r\n if (content.marketItem && content.marketItem.primaryPhoto && content.marketItem.primaryPhoto.photoID) {\r\n const hthumb = await getPhotoThumb(content.marketItem.primaryPhoto.photoID);\r\n if (hthumb) {\r\n content.marketItem.primaryPhoto.thumb = hthumb;\r\n }\r\n }\r\n\r\n //load other content\r\n if (content.marketItem && content.marketItem.photos && content.marketItem.photos.length > 0) {\r\n for (var i = 0; i < content.marketItem.photos.length; i++) {\r\n if (content.marketItem.photos[i].photo && content.marketItem.photos[i].photo.photoID) {\r\n const contentThumb = await getPhotoThumb(content.marketItem.photos[i].photo.photoID);\r\n if (contentThumb) {\r\n content.marketItem.photos[i].photo.thumb = contentThumb;\r\n }\r\n }\r\n }\r\n }\r\n return content;\r\n }\r\n updatePosts = (channel, post, idx) => {\r\n switch (channel) {\r\n case -1:\r\n const posts = this.state.posts;\r\n posts[idx] = post;\r\n this.setState({ posts });\r\n break;\r\n default:\r\n break;\r\n }\r\n this.forceUpdate();\r\n }\r\n updateLastPost = (id) => {\r\n this.setState({ newestPostID: id });\r\n }\r\n\r\n //Event Handlers\r\n handleSubscribe = () => { }\r\n setTabValue = (newValue) => {\r\n this.setState({ tabValue: newValue });\r\n }\r\n handleScroll = (e) => {\r\n \r\n const bottom = e.target.scrollHeight - e.target.scrollTop === e.target.clientHeight;\r\n console.log(bottom);\r\n if (bottom) {\r\n this.getMorePosts();\r\n }\r\n }\r\n\r\n //Render funcs\r\n avatar = () => {\r\n return (\r\n \r\n )\r\n }\r\n header = () => {\r\n if (this.props.site) {\r\n return (\r\n !this.state.coverPhoto && (this.props.dark ? theme.palette.primary.main : \"white\"),\r\n boxShadow: this.props.dark ? 0 : 8\r\n }}>\r\n \r\n \r\n {/**/}\r\n {this.state.width > 600 && this.avatar() }\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.white, py: this.state.width <= 600 ? \"5px\" : undefined }}>\r\n (!this.state.coverPhoto && !this.props.dark) && theme.palette.common.dimblack }}>\r\n {this.props.site.user.displayName ? this.props.site.user.displayName : this.props.site.user.firstName + \" \" + this.props.site.user.lastName}\r\n \r\n {(this.state.siteProfile && this.state.siteProfile.addresses && this.state.siteProfile.addresses.length > 0) &&\r\n (!this.state.coverPhoto && !this.props.dark) && theme.palette.common.dimblack }}>\r\n {this.state.siteProfile.addresses[0].city + (this.state.siteProfile.addresses[0].state ? \", \" + this.state.siteProfile.addresses[0].state : \"\")}\r\n \r\n }\r\n {(this.state.width > 600 && this.state.siteProfile && this.state.siteProfile.personalHeadline) &&\r\n (!this.state.coverPhoto && !this.props.dark) && theme.palette.common.dimblack }}>\r\n {'\"' + this.state.siteProfile.personalHeadline + '\"'}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n return null;\r\n }\r\n folderLabel = (label) => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {label}\r\n \r\n \r\n )\r\n }\r\n tabs = () => {\r\n return (\r\n \r\n theme.zIndex.drawer + 1, background: theme => this.props.dark ? \"#0f0f0f\" : theme.palette.secondary.main, height: \"100%\" }} >\r\n this.setTabValue(newValue)}\r\n aria-label=\"content tabs\"\r\n >\r\n {this.state.tabs.map((item, index) => {\r\n return (\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }}\r\n />\r\n )\r\n })\r\n }\r\n \r\n {this.state.tabs.map((item, index) => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.backgroundMain.dark : theme.palette.backgroundMain.light,\r\n }} className=\"prettyScroll\">\r\n {this.renderTab(item)}\r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n )\r\n }\r\n home = () => {\r\n return (\r\n \r\n )\r\n }\r\n profile = () => {\r\n if (this.state.siteProfile) {\r\n return ()\r\n }\r\n return null;\r\n }\r\n videos = () => {\r\n if (this.state.siteContent && this.state.siteContent.videoLibraries && this.state.siteContent.videoLibraries.length > 0) {\r\n return (\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n photos = () => {\r\n if (this.state.siteContent && this.state.siteContent.photoAlbums && this.state.siteContent.photoAlbums.length > 0) {\r\n return ()\r\n }\r\n return null;\r\n }\r\n music = () => {\r\n if (this.state.siteContent && this.state.siteContent.music && this.state.siteContent.music.songs && this.state.siteContent.music.songs.length > 0) {\r\n return ()\r\n }\r\n return null;\r\n }\r\n files = () => {\r\n if (this.state.siteContent && this.state.siteContent.documentFolders && this.state.siteContent.documentFolders.length > 0) {\r\n return ()\r\n }\r\n return null;\r\n }\r\n renderTab = (item) => {\r\n switch (item) {\r\n case \"Home\":\r\n return this.home();\r\n case \"About Me\":\r\n return this.profile();\r\n case \"Photos\":\r\n return this.photos();\r\n case \"Videos\":\r\n return this.videos();\r\n case \"Music\":\r\n return this.music();\r\n case \"Files\":\r\n return this.files();\r\n default:\r\n return (item);\r\n }\r\n }\r\n site = () => {\r\n return (\r\n \r\n {this.props.site &&\r\n \r\n {this.header()}\r\n {this.tabs()}\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n //Main component render\r\n render() {\r\n return this.site();\r\n }\r\n}\r\n\r\n","import React, { PureComponent } from 'react';\r\nimport ReactQuill from 'react-quill';\r\nimport 'react-quill/dist/quill.snow.css'\r\n\r\nconst modules = {\r\n toolbar: [\r\n /* [{ 'header': [1, 2, false] }],*/\r\n [{ 'header': [1, 2, false] }, 'bold', 'italic', 'underline', { 'color': [] }, { 'list': 'ordered' }, { 'list': 'bullet' }, { 'indent': '-1' }, { 'indent': '+1' }, { 'align': [] }],\r\n\r\n ],\r\n};\r\nconst formats = [\r\n 'header',\r\n 'bold', 'italic', 'underline', 'strike', 'blockquote',\r\n 'list', 'bullet', 'indent',\r\n 'link', 'image', 'color', 'align'\r\n];\r\nexport class RichTextEditor extends PureComponent {\r\n componentDidMount() {\r\n if(this.input)\r\n this.input.focus();\r\n }\r\n\r\n\r\n componentWillUnmount() {\r\n if(this.props.onClose) this.props.onClose(this.state.currentContent, this.state.currentPreview);\r\n }\r\n\r\n updateContent = (content, text) => {\r\n this.setState({\r\n currentContent: content,\r\n currentPreview: text\r\n });\r\n this.props.updateContent(this.props.id, this.props.idx, content, text);\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n { this.input = el; }}\r\n theme=\"snow\"\r\n defaultValue={this.props.initialContent}\r\n onChange={(content, delta, source, editor) => this.updateContent(content, editor.getText())}\r\n modules={modules}\r\n formats={formats}\r\n />\r\n );\r\n }\r\n};\r\n\r\n","import React, { PureComponent } from 'react';\r\n\r\n//Custom Modules\r\nimport { ComponentImageUploader } from '../Content/Photos/ComponentImageUploader';\r\nimport { ModalDialog } from '../Utilities/ModalDialog';\r\nimport { Section } from '../Utilities/Section';\r\nimport { SectionGrid } from '../Utilities/SectionGrid';\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\nimport { SelectList } from '../Utilities/SelectList';\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { UserSite } from '../UserSites/UserSite'\r\nimport { RichTextEditor } from '../Utilities/RichTextEditor'\r\n\r\n\r\n//Material UI\r\nimport Button from '@mui/material/Button';\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport InsertPhotoIcon from '@mui/icons-material/InsertPhoto';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n//Data Services\r\nimport { setSiteOptions } from '../../DataServices/UserService'\r\n\r\nconst contentTypeOptions = [\r\n { label: '', value: -1 },\r\n { label: 'Text', value: 0 },\r\n { label: 'Link', value: 1 },\r\n { label: 'Photo', value: 2 },\r\n { label: 'Video', value: 3 },\r\n { label: 'Blog', value: 4 },\r\n { label: 'Audio', value: 5 },\r\n { label: 'PDF', value: 6 },\r\n { label: 'Custom', value: 7 },\r\n { label: 'Event', value: 8 },\r\n { label: 'Partner', value: 9 },\r\n { label: 'Article', value: 10 },\r\n];\r\n\r\nexport class ProfileSiteOptions extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n newContentType: this.props.siteOptions.featuredContentType ?? 0,\r\n showPhotoUploader: false,\r\n showPreview: false,\r\n featuredDesc: this.props.siteOptions.featuredDesc,\r\n photoID: this.props.siteOptions.coverPhotoID,\r\n content: this.props.siteOptions.bio,\r\n }\r\n }\r\n handleUpdateCover = (photo) => {\r\n\r\n this.setState({ photoID: photo.photoID, showPhotoUploader: false });\r\n\r\n const siteOptions = this.props.siteOptions;\r\n siteOptions.coverPhoto = photo.thumb;\r\n this.props.updateSiteOptions(siteOptions);\r\n\r\n setTimeout(this.handleSetSiteOptions, 1000);\r\n }\r\n handleUpdateFeaturedDesc = (text, content) => {\r\n this.setState({ featuredDesc: content });\r\n setTimeout(this.handleSetSiteOptions, 1000);\r\n }\r\n handleTypeChange = (e) => {\r\n this.setState({ newContentType: e.target.value });\r\n const siteOptions = this.props.siteOptions;\r\n siteOptions.featuredContentType = e.target.value;\r\n this.props.updateSiteOptions(siteOptions);\r\n setTimeout(this.handleSetSiteOptions, 1000);\r\n }\r\n handleSetSiteOptions = async () => {\r\n const siteid = this.props.siteOptions.userID;\r\n const photoID = this.state.photoID;\r\n const showAboutBtn = document.getElementById(\"showAboutBTN\").checked;\r\n const showFollowBtn = document.getElementById(\"showFollowBTN\").checked;\r\n const showAbout = document.getElementById(\"showAbout\").checked;\r\n const showContent = document.getElementById(\"showContent\").checked;\r\n const showPosts = document.getElementById(\"showPosts\").checked;\r\n const showFeatured = document.getElementById(\"showFeatured\").checked;\r\n const featuredTitle = document.getElementById(\"featuredTitle\").value;\r\n const featuredDesc = document.getElementById(\"featuredDesc\").value;\r\n const featuredContentType = this.state.newContentType;\r\n const contentRefID = document.getElementById(\"newContentRefID\").value;\r\n const style = \"\";\r\n const bio = this.state.siteOptions.bio ?? \"\";\r\n await setSiteOptions(siteid, photoID, showFollowBtn, showAboutBtn, showAbout, showContent, showPosts, showFeatured, featuredTitle, featuredDesc, contentRefID, featuredContentType, style, bio);\r\n }\r\n handleSaveBio = async (content, text) => {\r\n\r\n const siteid = this.props.siteOptions.userID;\r\n const photoID = this.state.photoID;\r\n const showAboutBtn = document.getElementById(\"showAboutBTN\").checked;\r\n const showFollowBtn = document.getElementById(\"showFollowBTN\").checked;\r\n const showAbout = document.getElementById(\"showAbout\").checked;\r\n const showContent = document.getElementById(\"showContent\").checked;\r\n const showPosts = document.getElementById(\"showPosts\").checked;\r\n const showFeatured = document.getElementById(\"showFeatured\").checked;\r\n const featuredTitle = document.getElementById(\"featuredTitle\").value;\r\n const featuredDesc = document.getElementById(\"featuredDesc\").value;\r\n const featuredContentType = this.state.newContentType;\r\n const contentRefID = document.getElementById(\"newContentRefID\").value;\r\n const style = \"\";\r\n \r\n await setSiteOptions(siteid, photoID, showFollowBtn, showAboutBtn, showAbout, showContent, showPosts, showFeatured, featuredTitle, featuredDesc, contentRefID, featuredContentType, style, content);\r\n\r\n }\r\n\r\n coverPic = () => {\r\n return (\r\n
\r\n
\r\n \r\n {this.props.siteOptions.coverPhoto ?\r\n this.setState({ showPhotoUploader: true })}\r\n />\r\n :\r\n \r\n }\r\n \r\n\r\n
\r\n
)\r\n }\r\n headerOptions = () => {\r\n return (\r\n
\r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n control={}\r\n label={\r\n \r\n Show Follow Button\r\n \r\n }\r\n />\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n control={}\r\n label={\r\n \r\n Show About Button\r\n \r\n }\r\n />\r\n \r\n
)\r\n }\r\n bio = () => {\r\n return (\r\n
\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black, }}>\r\n \r\n \r\n\r\n \r\n
)\r\n }\r\n contentOptions = () => {\r\n return (\r\n
\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n control={}\r\n label={\r\n \r\n Show About Me Section\r\n \r\n }\r\n />\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n control={}\r\n label={\r\n \r\n Show Public Content Sections\r\n \r\n }\r\n />\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n control={}\r\n label={\r\n \r\n Show My Posts\r\n \r\n }\r\n />\r\n\r\n\r\n \r\n
)\r\n }\r\n featuredOptions = () => {\r\n return (\r\n
\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n control={}\r\n label={\r\n \r\n Show Feautured Content Section\r\n \r\n }\r\n />\r\n \r\n \r\n {/* this.props.dark ? theme.palette.common.white : theme.palette.common.black, }}>*/}\r\n {/* this.handleUpdateFeaturedDesc(content, text)}*/}\r\n {/* />*/}\r\n {/**/}\r\n \r\n \r\n \r\n
)\r\n }\r\n profileImageUploader = () => {\r\n return (\r\n this.setState({ showPhotoUploader: false })}\r\n cropHeight={400}\r\n cropWidth={1000}\r\n />\r\n )\r\n }\r\n preview = () => {\r\n if (this.state.showPreview) {\r\n return (\r\n this.setState({ showPreview: false })}\r\n closeLabel=\"Close\"\r\n fullWidth={true}\r\n maxWidth=\"lg\" >\r\n \r\n \r\n\r\n\r\n )\r\n }\r\n return null;\r\n }\r\n render() {\r\n\r\n return (\r\n <>\r\n \r\n {this.coverPic()}\r\n {this.headerOptions()}\r\n {this.bio() }\r\n {this.contentOptions()}\r\n {this.featuredOptions()}\r\n \r\n {this.profileImageUploader()}\r\n {this.preview()}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component} from 'react';\r\n\r\n//Custom Components\r\nimport { Spin } from '../Utilities/Spin'\r\nimport { ProfileBasic } from './ProfileBasic'\r\nimport { ProfileContacts } from './ProfileContacts'\r\nimport { ProfileInterests } from './ProfileInterests'\r\nimport { ProfileBucketList } from './ProfileBucketList'\r\nimport { ProfileStrengthsAndWeaknesses } from './ProfileStrengthsAndWeaknesses'\r\nimport { ProfileResponsibilities } from './ProfileResponsibilities'\r\nimport { ProfileLifeEvents } from './ProfileLifeEvents'\r\nimport { ProfileSiteOptions } from './ProfileSiteOptions'\r\n\r\n//Material UI\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\nimport Box from '@mui/material/Box';\r\n\r\n//Data Services\r\nimport { getUserProfile, getProfileImage, removeStrength, addStrength, removeWeakness, addWeakness, getSiteOptions } from '../../DataServices/UserService'\r\nimport { getPhotoThumb } from '../../DataServices/PhotoService'\r\n\r\nconst a11yProps = (index, id) => {\r\n return {\r\n id: `simple-tab-${index}-${id}`,\r\n 'aria-controls': `simple-tabpanel-${index}`,\r\n };\r\n}\r\nconst TabPanel = (props) => {\r\n const { children, value, index, ...other } = props;\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport class Profile extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.props.setToken.bind(this);\r\n this.state = {\r\n userprofile: [],\r\n loading: true,\r\n tabValue: 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getUserProfile();\r\n this.getSiteOptions();\r\n }\r\n\r\n //Get Data\r\n getUserProfile = async () => {\r\n const data = await getUserProfile(this.props.appIdentifier);\r\n if (data === \"error\") {\r\n this.props.setToken('');\r\n localStorage.clear();\r\n }\r\n else {\r\n this.setState({\r\n userprofile: data,\r\n loading: false\r\n });\r\n this.getProfileImage();\r\n }\r\n }\r\n getProfileImage = async () => {\r\n const data = await getProfileImage();\r\n if (data) {\r\n this.setState(\r\n state => {\r\n state.userprofile.imageB64 = data.thumb;\r\n state.userprofile.avatarB64 = data.thumb;\r\n return state;\r\n }\r\n );\r\n }\r\n }\r\n getSiteOptions = async () => {\r\n const data = await getSiteOptions(this.props.user.userID);\r\n if (data) {\r\n this.setState({ siteOptions: data });\r\n if (data.coverPhotoID) {\r\n const thumb = await getPhotoThumb(data.coverPhotoID);\r\n if (thumb) {\r\n this.setState(\r\n state => {\r\n state.siteOptions.coverPhoto = thumb;\r\n return state;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Event Handlers-----------------\r\n handleTabChange = (event, newValue) => {\r\n this.setState({ tabValue: newValue });\r\n }\r\n handleHeadlineChange(data) {\r\n this.setState(\r\n prevState => {\r\n let uprofile = { ...prevState.userprofile };\r\n uprofile.demographics.personalHeadline = data;\r\n return { uprofile };\r\n }\r\n )\r\n }\r\n handleFirstNameChange(data) {\r\n this.setState(\r\n prevState => {\r\n let uprofile = { ...prevState.userprofile };\r\n uprofile.firstName = data;\r\n return { uprofile };\r\n }\r\n )\r\n }\r\n handleLastNameChange(data) {\r\n this.setState(\r\n prevState => {\r\n let uprofile = { ...prevState.userprofile };\r\n uprofile.lastName = data;\r\n return { uprofile };\r\n }\r\n )\r\n }\r\n handleUpdateProfile = (b64) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.imageB64 = b64;\r\n return state;\r\n }\r\n );\r\n\r\n let user = this.props.user;\r\n user.avatar = b64;\r\n this.props.setUserInfo(user);\r\n\r\n }\r\n deleteEmail = (idx) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.emailAddresses.splice(idx, 1);\r\n return state;\r\n }\r\n );\r\n }\r\n deletePhone = (idx) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.phoneNumbers.splice(idx, 1);\r\n return state;\r\n }\r\n );\r\n }\r\n deleteAddress = (idx) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.addresses.splice(idx, 1);\r\n return state;\r\n }\r\n );\r\n }\r\n updateEmail = (idx, email, type) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.emailAddresses[idx].address = email;\r\n state.userprofile.demographics.emailAddresses[idx].emailType = type;\r\n return state;\r\n }\r\n );\r\n }\r\n updatePhone = (idx, phone, type) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.phoneNumbers[idx].number = phone;\r\n state.userprofile.demographics.phoneNumbers[idx].phoneType = type;\r\n return state;\r\n }\r\n );\r\n }\r\n updateAddress = (idx, address) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.addresses[idx].street = address.street;\r\n state.userprofile.demographics.addresses[idx].city = address.city;\r\n state.userprofile.demographics.addresses[idx].state = address.state;\r\n state.userprofile.demographics.addresses[idx].zip = address.zip;\r\n state.userprofile.demographics.addresses[idx].type = address.type;\r\n return state;\r\n }\r\n );\r\n }\r\n updateFamily = (idx, family) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.familyMembers[idx].firstName = family.firstName;\r\n state.userprofile.familyMembers[idx].middleName = family.middleName;\r\n state.userprofile.familyMembers[idx].lastName = family.lastName;\r\n state.userprofile.familyMembers[idx].type = family.type;\r\n state.userprofile.familyMembers[idx].gender = family.gender;\r\n state.userprofile.familyMembers[idx].dob = family.dob;\r\n return state;\r\n }\r\n );\r\n }\r\n updateMyDob = (val) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.importantDates.dob = val;\r\n return state;\r\n }\r\n );\r\n }\r\n updateMyWeddingAnniversary = (val) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.importantDates.weddingAnniversary = val;\r\n return state;\r\n }\r\n );\r\n }\r\n updateMyJobAnniversary = (val) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.importantDates.jobAnniversary = val;\r\n return state;\r\n }\r\n );\r\n }\r\n handlePersonalChange = (type, value) => {\r\n if (type === \"sex\") {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.sexualPreference = value;\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === \"gender\") {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.gender = value;\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === \"relationship\") {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.relationshipStatus = value;\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === \"politics\") {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.politicalSlant = value;\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === \"religion\") {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.religiousViews = value;\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === \"social\") {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.socialType = value;\r\n return state;\r\n }\r\n );\r\n }\r\n\r\n }\r\n toggleSelected = async (val) => {\r\n if (this.state.userprofile.demographics.interests &&\r\n this.state.userprofile.demographics.interests.includes(val)) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.interests.splice(this.state.userprofile.demographics.interests.indexOf(val), 1);\r\n return state;\r\n }\r\n );\r\n await fetch('home/removeinterest?id=' + val, { method: 'POST' });\r\n }\r\n else {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.interests.push(val);\r\n return state;\r\n }\r\n );\r\n await fetch('home/addinterest?interest=' + val, { method: 'POST' });\r\n }\r\n }\r\n addFavorite = async (item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.favorites.push(item);\r\n return state;\r\n }\r\n );\r\n }\r\n removeFavorite = async (item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.favorites.splice(this.state.userprofile.demographics.favorites.indexOf(item), 1);\r\n return state;\r\n }\r\n );\r\n }\r\n toggleSelectedTaste = async (type, item, selected) => {\r\n if (!selected) {\r\n if (type === 0) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.musicTastes.push(item);\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === 1) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.movieTastes.push(item);\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === 2) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.foodTastes.push(item);\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === 3) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.drinkTastes.push(item);\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === 4) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.readingTastes.push(item);\r\n return state;\r\n }\r\n );\r\n }\r\n await fetch('home/addtaste?type=' + type + '&tasteval=' + item, { method: 'POST' });\r\n }\r\n else {\r\n if (type === 0) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.musicTastes.splice(state.userprofile.demographics.musicTastes.indexOf(item), 1);\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === 1) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.movieTastes.splice(state.userprofile.demographics.movieTastes.indexOf(item), 1);\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === 2) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.foodTastes.splice(state.userprofile.demographics.foodTastes.indexOf(item), 1);\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === 3) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.drinkTastes.splice(state.userprofile.demographics.drinkTastes.indexOf(item), 1);\r\n return state;\r\n }\r\n );\r\n }\r\n if (type === 4) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.readingTastes.splice(state.userprofile.demographics.readingTastes.indexOf(item), 1);\r\n return state;\r\n }\r\n );\r\n }\r\n await fetch('home/removetaste?type=' + type + '&value=' + item, { method: 'POST' });\r\n }\r\n\r\n }\r\n updateBucketList = (idx, item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.bucketList[idx] = item;\r\n return state;\r\n }\r\n );\r\n }\r\n updatePersonalGoal = (idx, item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.personalGoals[idx] = item;\r\n return state;\r\n }\r\n );\r\n }\r\n updateHabit = (idx, item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.badHabits[idx] = item;\r\n return state;\r\n }\r\n );\r\n }\r\n toggleSelectedStrength = async (item) => {\r\n if (this.state.userprofile.demographics.personalStrengths &&\r\n this.state.userprofile.demographics.personalStrengths.find((x) => x.strength === item.value)) {\r\n const itm = this.state.userprofile.demographics.personalStrengths.find((x) => x.strength === item.value);\r\n const id = itm.id;\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.personalStrengths.splice(this.state.userprofile.demographics.personalStrengths.indexOf(itm), 1);\r\n return state;\r\n }\r\n );\r\n await removeStrength(id);\r\n }\r\n else {\r\n const newItm = { strength: item.value, ranking: 0, impacts: \"\" };\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.personalStrengths.push(newItm);\r\n return state;\r\n }\r\n );\r\n const len = this.state.userprofile.demographics.personalStrengths.length;\r\n const id2 = await addStrength(item.value);\r\n if (id2) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.personalStrengths[len].id = id2;\r\n return state;\r\n }\r\n );\r\n }\r\n\r\n }\r\n }\r\n toggleSelectedWeakness = async (item) => {\r\n if (this.state.userprofile.demographics.personalWeaknesses &&\r\n this.state.userprofile.demographics.personalWeaknesses.find((x) => x.weakness === item.value)) {\r\n const itm = this.state.userprofile.demographics.personalWeaknesses.find((x) => x.weakness === item.value);\r\n const id = itm.id;\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.personalWeaknesses.splice(this.state.userprofile.demographics.personalWeaknesses.indexOf(itm), 1);\r\n return state;\r\n }\r\n );\r\n await removeWeakness(id);\r\n }\r\n else {\r\n const newItm = { weakness: item.value, ranking: 0, impacts: \"\" };\r\n const len = this.state.userprofile.demographics.personalWeaknesses.length;\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.personalWeaknesses.push(newItm);\r\n return state;\r\n }\r\n );\r\n\r\n const id2 = await addWeakness(item.value);\r\n if (id2) {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.personalWeaknesses[len].id = id2;\r\n return state;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n updateOccupation = (idx, item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.occupations[idx] = item;\r\n return state;\r\n }\r\n );\r\n }\r\n updateRole = (idx, item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.lifeRoles[idx] = item;\r\n return state;\r\n }\r\n );\r\n }\r\n updateEvent = (idx, item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.demographics.lifeEvents[idx] = item;\r\n return state;\r\n }\r\n );\r\n }\r\n updateEducation = (idx, item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.educationHistory[idx] = item;\r\n return state;\r\n }\r\n );\r\n }\r\n updateEmployment = (idx, item) => {\r\n this.setState(\r\n state => {\r\n state.userprofile.employmentHistory[idx] = item;\r\n return state;\r\n }\r\n );\r\n }\r\n updateSiteOptions = (siteOptions) => {\r\n this.setState({ siteOptions });\r\n }\r\n updatePublicAttributes = (ignore, profile) => {\r\n const userprofile = this.state.userprofile;\r\n userprofile.publicAttributes = profile.publicAttributes;\r\n this.setState({ userprofile });\r\n }\r\n\r\n //render funcs\r\n TabContainer = () => {\r\n return (\r\n \r\n this.props.dark ? \"#151515\" : theme.palette.secondary.main }} elevation={this.props.dark ? 0 : 8}>\r\n this.handleTabChange(e, newValue)} aria-label=\"profile tabs\">\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n {this.props.appIdentifier === 'LS' &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n }\r\n \r\n \r\n \r\n \r\n {this.profileBasic()}\r\n \r\n \r\n {this.profileContact()}\r\n \r\n {this.props.appIdentifier === 'LS' &&\r\n\r\n \r\n {this.profileResponsibilities()}\r\n \r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n \r\n {this.profileStrengths()}\r\n \r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n \r\n {this.profileInterests()}\r\n \r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n \r\n {this.profileLifeEvents()}\r\n \r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n \r\n {this.profileBucketList()}\r\n \r\n }\r\n {this.props.appIdentifier === 'LS' &&\r\n \r\n {this.userSiteOptions()}\r\n \r\n }\r\n \r\n \r\n )\r\n }\r\n profileBasic = () => {\r\n return (\r\n \r\n )\r\n }\r\n profileContact = () => {\r\n return (\r\n \r\n )\r\n }\r\n profileInterests = () => {\r\n return (\r\n \r\n )\r\n }\r\n profileBucketList = () => {\r\n return (\r\n \r\n )\r\n } \r\n profileStrengths = () => {\r\n return (\r\n \r\n )\r\n } \r\n profileResponsibilities = () => {\r\n return (\r\n \r\n )\r\n }\r\n profileLifeEvents = () => {\r\n return (\r\n \r\n )\r\n }\r\n userSiteOptions = () => {\r\n if (this.state.siteOptions) {\r\n return (\r\n \r\n )\r\n }\r\n return null;\r\n\r\n\r\n }\r\n content = () => {\r\n let contents = this.state.loading\r\n ? \r\n :\r\n this.profileBasic() \r\n\r\n return (\r\n \r\n {contents}\r\n \r\n )\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//material ui\r\nimport Typography from '@mui/material/Typography';\r\nimport Box from '@mui/material/Box';\r\nimport BottomNavigation from '@mui/material/BottomNavigation';\r\nimport BottomNavigationAction from '@mui/material/BottomNavigationAction';\r\nimport HomeIcon from '@mui/icons-material/Home';\r\nimport WidgetsIcon from '@mui/icons-material/Widgets';\r\nimport ChatBubbleIcon from '@mui/icons-material/ChatBubble';\r\nimport NotificationsIcon from '@mui/icons-material/Notifications';\r\nimport AccountCircleIcon from '@mui/icons-material/AccountCircle';\r\nimport Badge from '@mui/material/Badge';\r\n\r\nexport class BottomNav extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n //render funcs\r\n bottomNav = () => {\r\n return (\r\n \r\n { this.props.setIndex(newValue) }}\r\n sx={{ backgroundColor: theme => this.props.dark ? \"#000\" : \"#000\" }}\r\n >\r\n Chat} icon={} />\r\n Notifications} icon={} />\r\n Profile} icon={} />\r\n \r\n \r\n )\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.bottomNav();\r\n }\r\n}\r\n","\r\nexport async function getVerbiage(app) {\r\n \r\n if (!app) app = \"\";\r\n let url = 'constants/getverbiage?app=' + app;\r\n const response = await fetch(url);\r\n if(response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function setVerbiage(app, welcome, datausage, freespeech) {\r\n const req = { App: app, Welcome: welcome, DataUsage: datausage, FreeSpeech: freespeech };\r\n const response = await fetch('constants/setverbiage', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\n","\r\nexport async function getLists() {\r\n let url = 'list/getalllists';\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function moveItem(id, idx) {\r\n const req = { ItemID: id, Idx: idx };\r\n const response = await fetch('list/movelistitem', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\nexport async function checkOffItem(id) {\r\n const req = { ItemID: id };\r\n const response = await fetch('list/checkoffitem', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function uncheckOffItem(id) {\r\n const req = { ItemID: id };\r\n const response = await fetch('list/uncheckoffitem', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function newItem(id, item) {\r\n const req = { ListID: id, Item: item };\r\n const response = await fetch('list/addlistitem', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editItem(id, item) {\r\n const req = { Item: item, ItemId: id };\r\n const response = await fetch('list/editlistitem', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteItem(id) {\r\n const req = { ItemID: id };\r\n const response = await fetch('list/removelistitem', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newList(name, type) {\r\n const req = { Name: name, Type: type };\r\n const response = await fetch('list/createlist', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editList(id, name) {\r\n const req = { Name: name, ListId: id };\r\n const response = await fetch('list/editlist', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteList(id) {\r\n const req = {ListID: id };\r\n const response = await fetch(\"list/removelist\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\nexport async function shareList(id, ownerid, userid, isFolder, appid, canedit, hasexpiration, expiration) {\r\n const req = {\r\n ListID: id,\r\n OwnerID: ownerid,\r\n UserID: userid,\r\n IsFolder: isFolder,\r\n AppID: appid,\r\n CanEdit: canedit,\r\n HasExpiration: hasexpiration,\r\n Expiration: expiration\r\n };\r\n const response = await fetch(\"list/sharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function unShareList(id, ownerid, userid, appid) {\r\n const req = {\r\n ListID: id,\r\n OwnerID: ownerid,\r\n UserID: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"list/unsharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function hideSharedList(id, ownerid, userid, appid) {\r\n const req = {\r\n ListID: id,\r\n OwnerID: ownerid,\r\n UserID: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"list/hidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function unhideSharedList(id, ownerid, userid, appid) {\r\n const req = {\r\n ListID: id,\r\n OwnerID: ownerid,\r\n UserID: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"list/unhidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\n","\r\nexport async function getDailyNote(date) {\r\n\r\n const url = 'note/getdailynote?date=' + new Date(date).toLocaleDateString();\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function saveDailyNote(content, preview, date) {\r\n if (!date)\r\n date = new Date();\r\n date.setHours(0, 0, 0, 0);\r\n const req = { NoteContent: content, PreviewText: preview, NoteDate: date };\r\n const response = await fetch('note/editdailynote', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getNotebooks() {\r\n const url = 'note/getallnotebooks';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data.noteBooks;\r\n return null;\r\n}\r\n\r\nexport async function newNote(title = \"New Note\", notebookID) {\r\n const req = { NoteBookID: notebookID, Title: title };\r\n const response = await fetch('note/createusernote', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editNote(id, content, preview) {\r\n const req = { NoteContent: content, PreviewText: preview, NoteID: id };\r\n const response = await fetch('note/editnotecontent', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteNote(id) {\r\n const req = { NoteID: id };\r\n const response = await fetch('note/removenote', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\nexport async function moveNote(id, parentid) {\r\n const req = { NoteID: id, NoteBookID: parentid };\r\n const response = await fetch('note/movenote', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\nexport async function newNotebook(title) {\r\n const req = { Title: title };\r\n const response = await fetch('note/createnotebook', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n const nb = { id : id, title : title, createDate: new Date(), notes:[]}\r\n return nb;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editNotebook(id, title) {\r\n const req = { Title: title, NoteBookID: id };\r\n const response = await fetch('note/editnotebook', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteNotebook(id) {\r\n const req = { NoteBookID: id };\r\n const response = await fetch('note/removenotebook', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\nexport async function shareNote(id, ownerid, userid, isFolder, appid, canedit, hasexpiration, expiration) {\r\n const req = {\r\n NoteID: id,\r\n OwnerID: ownerid,\r\n UserID: userid,\r\n IsFolder: isFolder,\r\n AppID: appid,\r\n CanEdit: canedit,\r\n HasExpiration: hasexpiration,\r\n Expiration: expiration\r\n };\r\n const response = await fetch(\"note/sharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function unShareNote(id, ownerid, userid, appid) {\r\n const req = {\r\n NoteID: id,\r\n OwnerID: ownerid,\r\n UserID: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"note/unsharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function hideSharedNote(id, ownerid, userid, appid) {\r\n const req = {\r\n NoteID: id,\r\n OwnerID: ownerid,\r\n UserID: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"note/hidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}\r\nexport async function unhideSharedNote(id, ownerid, userid, appid) {\r\n const req = {\r\n NoteID: id,\r\n OwnerID: ownerid,\r\n UserID: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"note/unhidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const library = await response.json();\r\n return library;\r\n }\r\n return null;\r\n}","\r\nexport async function getLinkFolders(parentID, appid) {\r\n var url;\r\n if (parentID) {\r\n url = 'link/getfolders?parentid=' + parentID + '&appid=' + appid;\r\n }\r\n else {\r\n url = 'link/getfolders?appid=' + appid;\r\n }\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getLink(id){\r\n const response = await fetch('link/getlink?id=' + id);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\n\r\nexport async function createLink(href, title, parentid, appid = \"LS\"){\r\n\r\n const req = { Title: title, Href: href, ParentID: parentid, AppID: appid };\r\n const response = await fetch('link/createlink', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\n\r\nexport async function deleteLink(id) {\r\n const req = { ID: id };\r\n const response = await fetch(\"link/deletelink\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\n\r\nexport async function editLink(id, href, title ) {\r\n const req = { ID: id, Title: title, Href: href };\r\n const response = await fetch(\"link/editlink\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function moveLink(id, parentid) {\r\n const req = { ID: id, ParentID: parentid };\r\n const response = await fetch(\"link/movelink\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\nexport async function createFolder(name, parentID = \"\", appid = \"LS\") {\r\n const req = { Name: name, ParentID: parentID, AppID: appid };\r\n const response = await fetch(\"link/createfolder\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data) {\r\n const folder = { id: data, name: name, links: [] };\r\n return folder;\r\n }\r\n }\r\n return false;\r\n}\r\nexport async function newOwnerFolder(name, userid, parentID, appid) {\r\n const req = { Name: name, ParentID: parentID, AppID: appid, UserID: userid };\r\n const response = await fetch(\"link/createownerfolder\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data) {\r\n const folder = { id: data, name: name, links: [] };\r\n return folder;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nexport async function deleteFolder(id) {\r\n const req = { FolderID: id };\r\n const response = await fetch(\"link/deletefolder\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\n\r\nexport async function editFolder(id, name) {\r\n const req = { FolderID: id, Name: name };\r\n const response = await fetch(\"link/editfolder\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return false;\r\n}\r\n\r\nexport async function shareLink(id, ownerid, userid, isFolder, appid, canedit, hasexpiration, expiration) {\r\n const req = {\r\n ID: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n IsFolder: isFolder,\r\n AppID: appid,\r\n CanEdit: canedit,\r\n HasExpiration: hasexpiration,\r\n Expiration: expiration\r\n };\r\n const response = await fetch(\"link/sharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function unShareLink(id, ownerid, userid, appid) {\r\n const req = {\r\n ID: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"link/unsharecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function hideSharedLink(id, ownerid, userid, appid) {\r\n const req = {\r\n ID: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"link/hidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function unhideSharedLink(id, ownerid, userid, appid) {\r\n const req = {\r\n ID: id,\r\n OwnerID: ownerid,\r\n UserId: userid,\r\n AppID: appid\r\n };\r\n const response = await fetch(\"link/unhidesharedcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}","\r\nexport async function getInvitations() {\r\n\r\n const response = await fetch('org/getuserinvitations');\r\n\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nexport async function confirmInvitation(id) {\r\n const req = { InvitationID: id };\r\n const response = await fetch(\"org/confirmmember\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function declineInvitation(id) {\r\n const req = { InvitationID: id };\r\n const response = await fetch(\"org/declinemember\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\nexport async function removeInvitation(id) {\r\n const req = { InvitationID: id };\r\n const response = await fetch(\"org/removeinvitation\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom\r\nimport { ModalDialog } from '../Common/Utilities/ModalDialog';\r\nimport { SectionItem } from '../Common/Utilities/SectionItem';\r\nimport { ProfileImageUploader } from '../Common/Profile/ProfileImageUploader';\r\nimport { Spin } from '../Common/Utilities/Spin';\r\nimport { UserAvatar } from '../Common/Utilities/UserAvatar'\r\n\r\n//MUI\r\nimport Grid from '@mui/material/Grid';\r\nimport Stack from '@mui/material/Stack';\r\nimport Box from '@mui/material/Box';\r\nimport Button from '@mui/material/Button';\r\nimport Paper from '@mui/material/Paper';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Typography from '@mui/material/Typography';\r\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\r\nimport Checkbox from '@mui/material/Checkbox';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport InsertPhotoIcon from '@mui/icons-material/InsertPhoto';\r\nimport Switch from '@mui/material/Switch';\r\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport ThumbDownOffAltIcon from '@mui/icons-material/ThumbDownOffAlt';\r\nimport ThumbUpOffAltIcon from '@mui/icons-material/ThumbUpOffAlt';\r\n\r\n//Database Services\r\nimport { getVerbiage } from '../DataServices/ConstantsService'\r\nimport { newFolder } from '../DataServices/DocumentService'\r\nimport { newLibrary } from '../DataServices/PhotoService'\r\nimport { newList } from '../DataServices/ListService'\r\nimport { newNotebook } from '../DataServices/NoteService'\r\nimport { newLibrary as newVideoLibrary } from '../DataServices/VideoService'\r\nimport { createFolder } from '../DataServices/LinkService'\r\nimport { confirmInvitation, declineInvitation } from '../DataServices/OrganizationService'\r\n\r\nexport class Welcome extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showPhotoUploader: false,\r\n wizardPage: 0,\r\n policyAccepted: this.props.user.privacyPolicy,\r\n addFiles: true,\r\n addPhotos: true,\r\n welcome: [],\r\n dataUsage: [],\r\n freeSpeech: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getVerbiage();\r\n this.getInvitations();\r\n }\r\n\r\n //data fetchers\r\n getInvitations = async () => {\r\n const response = await fetch('org/getuserinvitations');\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n this.setState({ invitations: data });\r\n }\r\n }\r\n getVerbiage = async () => {\r\n const verbiage = await getVerbiage(\"st\");\r\n\r\n\r\n if (verbiage) {\r\n let du = \"\";\r\n let fs = \"\";\r\n if (verbiage.dataUsage) {\r\n for (var i = 0; i < verbiage.dataUsage.length; i++) {\r\n du += verbiage.dataUsage[i];\r\n }\r\n }\r\n if (verbiage.freeSpeech) {\r\n for (var j = 0; j < verbiage.freeSpeech.length; j++) {\r\n fs += verbiage.freeSpeech[j];\r\n }\r\n }\r\n\r\n this.setState({\r\n welcome: verbiage.welcome,\r\n dataUsage: du,\r\n freeSpeech: fs\r\n })\r\n }\r\n }\r\n\r\n //event handlers\r\n handleAcceptPrivacyPolicy = async (e) => {\r\n let userInfo = this.props.user;\r\n userInfo.privacyPolicy = e.target.checked;\r\n\r\n this.props.setUserInfo(userInfo);\r\n this.setState({ policyAccepted: true });\r\n\r\n const req = { Privacy: e.target.checked, AppID: this.props.appIdentifier };\r\n await fetch('home/toggleprivacypolicy', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n }\r\n handleComplete = async () => {\r\n this.setState({ wizardPage: 5, saving: true });\r\n\r\n const req = { Hide: true, AppID: this.props.appIdentifier };\r\n let name = \"User\";\r\n if (this.props.user && this.props.user.firstName) {\r\n name = this.props.user.firstName;\r\n }\r\n\r\n await fetch('home/togglehidewelcome', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n\r\n if (this.props.appIdentifier === \"LS\") {\r\n await newFolder(name + \"'s Documents\", this.props.user.userID, this.props.appIdentifier);\r\n await newLibrary(name + \"'s Photos\", this.props.user.userID, this.props.appIdentifier);\r\n await newList(name + \"'s List\", 0);\r\n await newNotebook(name + \"'s Notebook\", 0);\r\n await newVideoLibrary(name + \"'s Videos\", this.props.user.userID, this.props.appIdentifier);\r\n await createFolder(name + \"'s Links\", this.props.user.userID, this.props.appIdentifier);\r\n }\r\n \r\n let userInfo = this.props.user;\r\n userInfo.hideWelcome = true;\r\n this.props.setUserInfo(userInfo);\r\n this.setState({ saving: false });\r\n this.props.hide();\r\n }\r\n handleUpdateProfile = (b64) => {\r\n let user = this.props.user;\r\n user.avatar = b64;\r\n this.props.setUserInfo(user);\r\n this.setState({ showPhotoUploader: false });\r\n }\r\n handleAcceptInvite = async (id, index) => {\r\n const invitations = [...this.state.invitations];\r\n invitations.splice(index, 1);\r\n this.setState({ invitations });\r\n await confirmInvitation(id);\r\n }\r\n handleDeclineInvite = async (id, index) => {\r\n const invitations = [...this.state.invitations];\r\n invitations.splice(index, 1);\r\n this.setState({ invitations });\r\n await declineInvitation(id);\r\n }\r\n //render funcs\r\n profileImageUploader = () => {\r\n return (\r\n this.setState({ showPhotoUploader: false })}\r\n />\r\n )\r\n }\r\n profilePicture = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }}>\r\n Next, lets set your profile picture. Ideally, this is a \"headshot\" photo, but doesn't have to be. Take or choose a photo that will represent you by clicking in the box below...\r\n \r\n \r\n \r\n {this.props.user.avatar ?\r\n this.setState({ showPhotoUploader: true })}\r\n />\r\n :\r\n \r\n }\r\n \r\n \r\n \r\n )\r\n }\r\n preferences = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }}>\r\n Preferences (you can change these at any time in your profile settings)\r\n \r\n this.props.setDark(!this.props.dark)}\r\n inputProps={{ 'aria-label': 'controlled' }}\r\n />\r\n }\r\n label=\"Dark Mode\"\r\n />\r\n \r\n )\r\n } \r\n invitation = (item, index) => {\r\n return (\r\n \r\n \r\n {item.fromUser &&\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black} sx={{ padding: \"6px\", fontSize: \".9rem\" }}>\r\n {item.fromUser.firstName + \" \" + item.fromUser.lastName + \" invited you to join the \" + item.groupType.toLowerCase() + \" group \" + item.groupName + \" on \" + new Date(item.dateSent).toLocaleDateString()}\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n this.handleAcceptInvite(item.id, index)} size=\"small\">\r\n theme.palette.secondary.main }} />\r\n \r\n \r\n \r\n this.handleDeclineInvite(item.id, index)} size=\"small\">\r\n theme.palette.secondary.main }} />\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n invitations = () => {\r\n return (\r\n \r\n {this.state.invitations && this.state.invitations.length > 0 ?\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }}>\r\n It looks like other users have invited you to join existing groups. Please review the invitations and click 'thumbs up' to accept, 'thumbs down' to reject, or simply ignore for now.\r\n \r\n :\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }}>\r\n You don't have any pending invitations at this time.\r\n \r\n }\r\n\r\n \r\n \r\n {this.state.invitations && this.state.invitations.map((item, index) => {\r\n return this.invitation(item, index);\r\n })}\r\n \r\n \r\n )\r\n } \r\n privacyPolicy = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} className=\"prettyScroll\">\r\n \r\n First, please review and accept the our data usage and privacy policy. (Scroll down if necessary)\r\n \r\n
\r\n \r\n {this.state.dataUsage}\r\n \r\n
\r\n \r\n {this.state.freeSpeech}\r\n \r\n
\r\n }\r\n />\r\n
\r\n
\r\n )\r\n } \r\n welcomeMessage = () => {\r\n return (\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} className=\"prettyScroll\">\r\n {this.state.welcome && this.state.welcome.map((item) => {\r\n return (\r\n <>\r\n \r\n {item}\r\n \r\n
\r\n \r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n } \r\n backButton = () => {\r\n switch (this.state.wizardPage) {\r\n case 0:\r\n return null;\r\n case 1:\r\n return (\r\n }\r\n style={{ minWidth: \"85px\", marginTop: \"auto\", marginBottom: \"auto\", marginRight: \"32px\", paddingLeft: \"8px\", paddingRight: \"8px\" }}\r\n onClick={() => this.setState({ wizardPage: 0 })}>\r\n Back\r\n \r\n )\r\n case 2:\r\n return (\r\n }\r\n style={{ minWidth: \"85px\", marginTop: \"auto\", marginBottom: \"auto\", marginRight: \"32px\", paddingLeft: \"8px\", paddingRight: \"8px\" }}\r\n onClick={() => this.setState({ wizardPage: 1 })}>\r\n Back\r\n \r\n )\r\n case 3:\r\n return (\r\n }\r\n style={{ minWidth: \"85px\", marginTop: \"auto\", marginBottom: \"auto\", marginRight: \"32px\", paddingLeft: \"8px\", paddingRight: \"8px\" }}\r\n onClick={() => this.setState({ wizardPage: 2 })}>\r\n Back\r\n \r\n )\r\n case 4:\r\n return (\r\n }\r\n style={{ minWidth: \"85px\", marginTop: \"auto\", marginBottom: \"auto\", marginRight: \"32px\", paddingLeft: \"8px\", paddingRight: \"8px\" }}\r\n onClick={() => this.setState({ wizardPage: 3 })}>\r\n Back\r\n \r\n )\r\n default:\r\n return null;\r\n }\r\n }\r\n nextButton = () => {\r\n switch (this.state.wizardPage) {\r\n case 0:\r\n return (\r\n this.setState({ wizardPage: 1 })}\r\n >\r\n Get Started\r\n \r\n );\r\n\r\n case 1:\r\n if (this.state.policyAccepted) {\r\n return (\r\n }\r\n style={{ marginTop: \"auto\", marginBottom: \"auto\" }}\r\n onClick={() => this.setState({ wizardPage: 2 })}\r\n >\r\n Next\r\n \r\n );\r\n }\r\n else {\r\n return null;\r\n }\r\n\r\n case 2:\r\n return (\r\n }\r\n style={{ marginTop: \"auto\", marginBottom: \"auto\" }}\r\n onClick={() => this.setState({ wizardPage: 3 })}\r\n >\r\n Next\r\n \r\n )\r\n case 3:\r\n return (\r\n }\r\n style={{ marginTop: \"auto\", marginBottom: \"auto\" }}\r\n onClick={this.handleComplete}\r\n >\r\n Go To The Portal\r\n \r\n )\r\n case 4:\r\n return (\r\n \r\n Start Using LiveSphere\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n footer = () => {\r\n return (\r\n \r\n \r\n {this.backButton()}\r\n \r\n \r\n \r\n {this.nextButton()}\r\n \r\n \r\n )\r\n } \r\n setupWizard = () => {\r\n switch (this.state.wizardPage) {\r\n case 0:\r\n return this.welcomeMessage();\r\n case 1:\r\n return this.privacyPolicy();\r\n case 2:\r\n return this.profilePicture();\r\n case 3:\r\n return this.preferences();\r\n case 4:\r\n return this.invitations();\r\n default:\r\n return (<>);\r\n }\r\n }\r\n title = () => {\r\n switch (this.state.wizardPage) {\r\n case 0:\r\n return \"Welcome to the Stallings and Associates Client Portal!\";\r\n case 1:\r\n return \"Data Usage and Privacy Policy\";\r\n case 2:\r\n return \"Profile Picture\";\r\n case 3:\r\n return \"General Preferences\";\r\n case 4:\r\n return \"Prior Invitations\";\r\n case 5:\r\n return \"Setting Up Profile...\";\r\n default:\r\n return (<>);\r\n }\r\n }\r\n\r\n contents = () => {\r\n return (\r\n \r\n {this.state.saving ?\r\n \r\n :\r\n \r\n \r\n {this.setupWizard()}\r\n \r\n {this.footer()}\r\n \r\n }\r\n {this.profileImageUploader()}\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.contents()\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Menu from '@mui/material/Menu';\r\n\r\n\r\nexport class ContextMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n\r\n if (this.props.menuItems) {\r\n var items = this.props.menuItems.map((item, i) => {\r\n return (\r\n {item.label}\r\n )\r\n });\r\n }\r\n\r\n return (\r\n this.props.dark ? theme.palette.backgroundModal.dark : theme.palette.backgroundModal.light,\r\n color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimwhite\r\n }\r\n }}\r\n anchorPosition={\r\n this.props.contextMenu !== null\r\n ? { top: this.props.contextMenu.mouseY, left: this.props.contextMenu.mouseX }\r\n : undefined\r\n }\r\n MenuListProps={{ sx: { backgroundColor: (theme) => this.props.dark ? theme.palette.backgroundModal.dark : theme.palette.backgroundModal.light, color: this.props.dark ? \"#ccc\" : \"#444\" } }}\r\n >\r\n {items}\r\n \r\n\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport Dropzone from 'react-dropzone'\r\nimport InsertPhotoIcon from '@mui/icons-material/InsertPhoto';\r\nimport UploadFileIcon from '@mui/icons-material/UploadFile';\r\nimport VideocamIcon from '@mui/icons-material/Videocam';\r\nimport Box from '@mui/material/Box';\r\nimport Typography from '@mui/material/Typography';\r\nimport ReactPlayer from 'react-player'\r\n\r\n\r\nconst extensionList = (type) => {\r\n switch (type) {\r\n case \"photo\": return \".jpg, .jpeg, .png\";\r\n case \"file\": return \".pdf, .doc, .docx, .xls, .xlsx, .csv, .txt, .jpg, .jpeg, .png, .tiff\";\r\n default: return \"\";\r\n }\r\n}\r\n\r\nexport class DropUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { processing: false, badFileName: null };\r\n }\r\n\r\n handleDragOverDropZone = (e) => {\r\n e.currentTarget.classList.add(\"hoverdropzone\");\r\n }\r\n handleDragLeaveDropZone = (e) => {\r\n e.currentTarget.classList.remove(\"hoverdropzone\");\r\n }\r\n selectedVideo = () => {\r\n if (this.state.selectedVideo) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n handleDrop = async (files, type) => {\r\n var ele = document.getElementById(\"dropZone\" + type);\r\n if (ele) {\r\n ele.classList.remove(\"hoverdropzone\");\r\n ele.classList.add(\"hoverdropzoneBusy\");\r\n }\r\n\r\n this.props.toggleProcessing(true);\r\n if (files) {\r\n var numAllowed = 1;\r\n if (this.props.multi) {\r\n numAllowed = files.length;\r\n }\r\n for (var i = 0; i < numAllowed; i++) {\r\n var file = files[i];\r\n var extension = file.type;\r\n console.log(extension);\r\n if (this.props.fileType == \"photo\") {\r\n if (extension === \"image/jpeg\" || extension === \"image/jpg\" || extension === \"image/png\" || extension === \"image/bmp\") {\r\n await this.props.handleSave(file);\r\n }\r\n }\r\n if (this.props.fileType == \"video\") {\r\n if (extension.startsWith(\"video\")) {\r\n this.setState({ selectedVideo: file });\r\n await this.props.handleSave(file);\r\n }\r\n }\r\n if (this.props.fileType == \"file\") {\r\n if (\r\n extension === \"application/pdf\" ||\r\n extension === \"application/msword\" ||\r\n extension === \"text/csv\" ||\r\n extension === \"text/plain\" ||\r\n extension === \"application/vnd.ms-excel\" ||\r\n extension === \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" ||\r\n extension === \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" ||\r\n extension === \"image/jpeg\" ||\r\n extension === \"image/jpg\" ||\r\n extension === \"image/png\" ||\r\n extension === \"image/tiff\" ||\r\n extension === \"image/bmp\"\r\n ) {\r\n await this.props.handleSave(file);\r\n }\r\n else {\r\n this.props.setBadFiles();\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n //clean up iu from any progress indicators, etc.\r\n if (ele) {\r\n ele.classList.remove(\"hoverdropzone\");\r\n ele.classList.remove(\"hoverdropzoneBusy\");\r\n }\r\n this.props.toggleProcessing(false);\r\n }\r\n\r\n\r\n dropZoneInstructions = () => {\r\n return (\r\n <>\r\n {(this.props.fileType === \"photo\" && !this.props.photoB64) &&\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black, marginTop: \"auto\", marginBottom: \"auto\", fontWeight: 540 }}>\r\n Drag and Drop Photos\r\n \r\n theme.palette.secondary.main }} />\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black, marginTop: \"auto\", marginBottom: \"auto\", fontWeight: 540 }}>\r\n Tap or click to add photos\r\n \r\n theme.palette.secondary.main }} />\r\n \r\n \r\n }\r\n {this.props.fileType === \"file\" &&\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black, marginTop: \"auto\", marginBottom: \"auto\", fontWeight: 540 }}>\r\n Tap or click to upload a document\r\n \r\n theme.palette.secondary.main }} />\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black, marginTop: \"auto\", marginBottom: \"auto\", fontWeight: 540 }}>\r\n Tap or click to upload a document\r\n \r\n theme.palette.secondary.main }} />\r\n \r\n \r\n }\r\n {(this.props.fileType === \"video\" && this.state.selectedVideo) && this.selectedVideo()}\r\n {(this.props.fileType === \"video\" && !this.state.selectedVideo) &&\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black, marginTop: \"auto\", marginBottom: \"auto\", fontWeight: 540 }}>\r\n Drag and Drop Videos\r\n \r\n theme.palette.secondary.main }} />\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black, marginTop: \"auto\", marginBottom: \"auto\", fontWeight: 540 }}>\r\n Tap or click to add vides\r\n \r\n theme.palette.secondary.main }} />\r\n \r\n \r\n }\r\n \r\n )\r\n }\r\n uploadedPhotoPreview = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n content = () => {\r\n return (\r\n\r\n this.handleDrop(acceptedFiles, this.props.type)}\r\n onDragOver={this.handleDragOverDropZone}\r\n onDragLeave={this.handleDragLeaveDropZone}\r\n noDragEventsBubbling\r\n\r\n >\r\n {({ getRootProps, getInputProps }) => (\r\n \r\n < Box {...getRootProps()}\r\n id={\"dropZone\" + this.props.type}\r\n sx={{\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n minHeight: ((this.props.fileType === \"photo\" && this.props.photoB64) || (this.props.fileType === \"video\" && this.state.selectedVideo)) ? \"unset\" : 300,\r\n background: (theme) => this.props.dark ? theme.palette.backgroundInput.dark : theme.palette.backgroundInput.light,\r\n color: this.props.dark ? \"#999\" : \"#444\",\r\n textAlign: \"center\",\r\n borderRadius: { xs: 0, sm: 1 },\r\n cursor: \"pointer\",\r\n maxWidth: 400,\r\n mx: \"auto\",\r\n mt: this.props.dark ? 0 : 1,\r\n width: ((this.props.fileType === \"photo\" && this.props.photoB64) || (this.props.fileType === \"video\" && this.state.selectedVideo)) ? \"unset\" : \"100%\",\r\n //boxShadow: this.props.dark ? 0 : (((this.props.fileType === \"photo\" && this.props.photoB64) || (this.props.fileType === \"video\" && this.state.selectedVideo)) ? 0 : 8)\r\n }}>\r\n \r\n\r\n\r\n\r\n {(this.props.fileType === \"photo\" && this.props.photoB64) && this.uploadedPhotoPreview()}\r\n {(this.props.fileType === \"video\" && this.state.selectedVideo) && this.selectedVideo()}\r\n {this.dropZoneInstructions()}\r\n\r\n \r\n \r\n )}\r\n\r\n\r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n//accept = { extensionList(this.props.fileType) }","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from '../../Utilities/ModalDialog'\r\nimport { DropUploader } from '../../Utilities/DropUploader'\r\n\r\n//Material UI\r\nimport { Typography } from '@mui/material';\r\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Stack from '@mui/material/Stack';\r\nimport Box from '@mui/material/Box';\r\nimport { newDocument } from '../../../DataServices/DocumentService'\r\n\r\n\r\nexport class DocumentUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n itemCount: 0,\r\n processing: false,\r\n badFiles: []\r\n }\r\n }\r\n\r\n //handlers\r\n handleSaveDocument = async (file) => {\r\n //const doc = await newDocument(file, this.props.library.id, this.props.appIdentifier);\r\n if (file) {\r\n this.props.handleSave(file);\r\n this.setState({ itemCount: this.state.itemCount + 1 });\r\n }\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n currentUpload: \"\",\r\n itemCount: 0\r\n })\r\n this.props.handleClose();\r\n }\r\n toggleProcessing = (status) => {\r\n if (status != null) {\r\n this.setState({ processing: status });\r\n }\r\n else {\r\n this.setState({ processing: !this.state.processing });\r\n }\r\n if (status === false) {\r\n this.props.handleClose();\r\n }\r\n }\r\n\r\n //render\r\n summaryText = (count) => {\r\n if (count === 1) {\r\n return \"Uploaded 1 document\";\r\n }\r\n else {\r\n return \"Uploaded \" + count + \" documents\";\r\n }\r\n }\r\n uploadingMessage = () => {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack, mb: 2, fontWeight: 600 }}>\r\n Uploading\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n uploader = () => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n alerts = () => {\r\n return (\r\n 0 || this.state.processing ? 2 : 0,\r\n px: this.props.width < 600 ? 1 : 2,\r\n }}>\r\n \r\n \r\n {(!this.state.processing && this.state.itemCount > 0) &&\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {this.summaryText(this.state.itemCount)}\r\n }\r\n {(!this.state.processing && this.state.itemCount > 0) && }\r\n {this.state.processing &&\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n Uploading\r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.uploader()}\r\n {this.alerts()}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Font Awesome\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faFolder, faFolderOpen, faList, faShare } from '@fortawesome/free-solid-svg-icons';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nexport class FolderLabel extends Component {\r\n //'#fbc02d' - yellow\r\n render() {\r\n return (\r\n \r\n {!this.props.noIcon &&\r\n \r\n {this.props.isUserFolder ?\r\n\r\n ((this.props.isClosed || this.props.isList)\r\n ?\r\n \r\n :\r\n )\r\n :\r\n ((this.props.isClosed || this.props.isList)\r\n ?\r\n \r\n :\r\n )\r\n }\r\n \r\n }\r\n {this.props.sharedFolder && }\r\n \r\n {this.props.label}\r\n \r\n \r\n\r\n )\r\n }\r\n}\r\n","import React, { PureComponent } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { ContextMenu } from '../Utilities/ContextMenu'\r\nimport { TextInput } from '../Utilities/TextInput'\r\nimport { SelectList } from '../Utilities/SelectList'\r\nimport { DocumentViewer } from '../Content/Documents/DocumentViewer';\r\nimport { DocumentUploader } from '../Content/Documents/DocumentUploader';\r\nimport { Spin } from '../Utilities/Spin'\r\nimport { FolderLabel } from '../Utilities/FolderLabel' \r\n//Database Services\r\nimport { getDocument, newOwnerDocument, deleteDocument, renameDocument, newOwnerFolder, deleteFolder, renameFolder, getDocumentFolders, downloadDocument, setDocumentStatus } from '../../DataServices/DocumentService'\r\n\r\n\r\n//Font Awesome\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faFilePdf, faFileWord, faFileExcel, faImage, faFile } from '@fortawesome/free-solid-svg-icons'\r\n\r\n//Material UI\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\nimport Stack from '@mui/material/Stack';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport Box from '@mui/material/Box';\r\nimport Typography from '@mui/material/Typography';\r\nimport Grid from '@mui/material/Grid';\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport { CardActionArea } from '@mui/material';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\n\r\nconst docTypeList = () => {\r\n return [{ value: 0, label: Document },];\r\n}\r\nconst TabPanel = (props) => {\r\n const { children, value, index, ...other } = props;\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport class ClientDocuments extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showDocument: false,\r\n selectedDocument: null,\r\n showAddDocuments: false,\r\n contextMenuDocument: null,\r\n showConfirmDeleteDocument: false,\r\n contextMenuDocumentItems: [\r\n {\r\n callBack: this.handleShowRenameDocument,\r\n label: \"Rename\"\r\n },\r\n {\r\n callBack: this.handleShowConfirmDeleteDocument,\r\n label: \"Archive\"\r\n },\r\n ],\r\n showRenameDocument: false,\r\n documentFolders: [],\r\n folderMode: \"new\",\r\n newFolderName: \"\",\r\n showNewFolder: false,\r\n showRenameFolder: false,\r\n contextMenuFolder: null,\r\n showConfirmDeleteFolder: false,\r\n contextMenuFolderItems: [\r\n {\r\n callBack: this.handleShowRenameFolder,\r\n label: \"Rename\"\r\n },\r\n {\r\n callBack: this.handleShowConfirmDeleteFolder,\r\n label: \"Delete\"\r\n },\r\n ],\r\n tabValue: 0,\r\n loadingDocument: false,\r\n badFiles: false\r\n\r\n }\r\n }\r\n componentDidMount() {\r\n if (this.props.folders && this.props.folders.length > 0) {\r\n this.setState({ tabValue: 1 });\r\n }\r\n }\r\n\r\n\r\n //Event Handlers\r\n handleClickDocument = async (e, id, idx, name) => {\r\n //this.setState({loadingDocument: true})\r\n //let ele = e.target;\r\n //ele.style.cursor = 'wait';\r\n //document.body.style.cursor = 'wait';\r\n\r\n //const doc = await getDocument(id);\r\n //console.log(doc);\r\n //ele.style.cursor = 'default';\r\n //document.body.style.cursor = 'default';\r\n\r\n //if (doc && doc.eFiles && doc.eFiles.length > 0 && doc.eFiles[0].fileContent && doc.eFiles[0].extension === \".pdf\") {\r\n // this.setState({\r\n // selectedDocumentName: doc.documentName,\r\n // selectedDocumentContent: doc.eFiles[0].fileContent,\r\n // showDocument: true,\r\n // loadingDocument: false\r\n // });\r\n //}\r\n //else {\r\n // this.setState({\r\n // selectedDocumentName: doc.documentName,\r\n\r\n // loadingDocument: false\r\n // });\r\n //}\r\n\r\n\r\n const doc = await downloadDocument(id, name);\r\n \r\n }\r\n handleClickNewDocument = () => {\r\n this.setState({ showAddDocuments: true });\r\n }\r\n handleNewDocument = async (file) => {\r\n var name = file.name;\r\n //console.log(\"here\");\r\n if (this.props.folders && this.props.folders[this.state.tabValue - 1] && this.props.folders[this.state.tabValue - 1].documents && this.props.folders[this.state.tabValue - 1].documents.length > 0) {\r\n for (var i = 0; i < this.props.folders[this.state.tabValue - 1].documents.length; i++) {\r\n if (name == this.props.folders[this.state.tabValue - 1].documents[i].documentName) {\r\n name = name + \"(1)\";\r\n }\r\n }\r\n }\r\n const doc = await newOwnerDocument(file, this.props.user.userID, this.props.folders[this.state.tabValue - 1].id, this.props.appIdentifier, name);\r\n\r\n if (doc) {\r\n const documentFolders = [...this.props.folders];\r\n documentFolders[this.state.tabValue - 1].documents.push(doc);\r\n this.setState({ documentFolders });\r\n }\r\n\r\n this.setState({ showAddDocuments: false });\r\n\r\n document.body.style.cursor = 'wait';\r\n const newDoc = await getDocument(doc.documentID);\r\n\r\n\r\n document.body.style.cursor = 'default';\r\n }\r\n handleShowConfirmDeleteDocument = (id, idx) => {\r\n this.setState({\r\n\r\n showConfirmDeleteDocument: true,\r\n contextMenuDocument: null\r\n });\r\n }\r\n handleContextMenuDocument = (e, id, idx) => {\r\n if (this.props.isAdmin) {\r\n e.preventDefault();\r\n if (this.state.contextMenuDocument === null) {\r\n this.setState({\r\n contextMenuDocument: {\r\n mouseX: e.clientX - 2,\r\n mouseY: e.clientY - 4,\r\n },\r\n selectedDocument: this.props.folders[this.state.tabValue - 1].documents[idx],\r\n selectedDocumentID: id,\r\n selectedDocumentIDX: idx,\r\n })\r\n }\r\n else {\r\n this.setState({\r\n contextMenuDocument: null,\r\n });\r\n }\r\n }\r\n }\r\n handleDeleteDocument = async () => {\r\n const result = await setDocumentStatus(this.state.selectedDocumentID, 6);\r\n if (result) {\r\n const documentFolders = [...this.props.folders];\r\n const archivedDoc = documentFolders[this.state.tabValue - 1].documents[this.state.selectedDocumentIDX];\r\n documentFolders[this.state.tabValue - 1].documents.splice(this.state.selectedDocumentIDX, 1);\r\n const archiveFolderIDX = documentFolders.findIndex(x => x.name === \"Archive\");\r\n if (archiveFolderIDX && documentFolders[archiveFolderIDX] && documentFolders[archiveFolderIDX].documents) {\r\n documentFolders[archiveFolderIDX].documents.push(archivedDoc);\r\n }\r\n console.log(documentFolders);\r\n this.setState({ documentFolders });\r\n\r\n this.setState({ showConfirmDeleteDocument: false });\r\n\r\n }\r\n }\r\n handleShowRenameDocument = () => {\r\n this.setState({ showRenameDocument: true, contextMenuDocument: null });\r\n }\r\n handleRenameDocument = async () => {\r\n var ele = document.getElementById(\"newDocumentName\");\r\n if (ele) {\r\n const name = ele.value;\r\n if (name) {\r\n const result = await renameDocument(this.state.selectedDocumentID, name);\r\n if (result) {\r\n\r\n const documentFolders = [...this.props.folders];\r\n documentFolders[this.state.tabValue - 1].documents[this.state.selectedDocumentIDX].documentName = name;\r\n this.setState({ documentFolders, showRenameDocument: false });\r\n }\r\n }\r\n ele.value = \"\";\r\n }\r\n }\r\n handleShowNewFolder = () => {\r\n this.setState({\r\n showNewFolder: true,\r\n newFolderName: \"\",\r\n contextMenuFolder: null\r\n });\r\n }\r\n handleContextMenuFolder = (e, id, idx, name) => {\r\n if (this.props.isAdmin) {\r\n e.preventDefault();\r\n if (this.state.contextMenuFolder === null) {\r\n this.setState({\r\n contextMenuFolder: {\r\n mouseX: e.clientX - 2,\r\n mouseY: e.clientY - 4,\r\n },\r\n selectedFolder: this.props.folders[idx],\r\n selectedFolderID: id,\r\n selectedFolderIDX: idx,\r\n })\r\n this.setState({ tabValue: idx + 1 });\r\n }\r\n else {\r\n this.setState({\r\n contextMenuFolder: null,\r\n });\r\n }\r\n }\r\n\r\n }\r\n handleNewFolder = async () => {\r\n const parentID = this.props.clientID;\r\n if (parentID) { \r\n var ele = document.getElementById(\"newfolder\");\r\n if (ele) {\r\n this.setState({ showNewFolder: false });\r\n const name = ele.value;\r\n if (name) {\r\n const folder = await newOwnerFolder(name, this.props.user.userID, parentID, this.props.appIdentifier);\r\n if (folder) {\r\n\r\n const documentFolders = [...this.props.folders];\r\n documentFolders.push(folder);\r\n this.props.updateFolders(documentFolders);\r\n }\r\n }\r\n ele.value = \"\";\r\n }\r\n }\r\n }\r\n handleShowConfirmDeleteFolder = () => {\r\n this.setState({\r\n showConfirmDeleteFolder: true,\r\n contextMenuFolder: null\r\n });\r\n }\r\n handleDeleteFolder = async () => {\r\n this.setState({ showConfirmDeleteFolder: false });\r\n const documentFolders = [...this.props.folders];\r\n documentFolders.splice(this.state.tabValue - 1, 1);\r\n this.props.updateFolders(documentFolders);\r\n\r\n await deleteFolder(this.state.selectedFolderID);\r\n }\r\n handleShowRenameFolder = () => {\r\n this.setState({\r\n showRenameFolder: true,\r\n newFolderName: this.state.selectedFolder.name,\r\n contextMenuFolder: null\r\n });\r\n }\r\n handleRenameFolder = async () => {\r\n var ele = document.getElementById(\"editfolder\");\r\n if (ele) {\r\n this.setState({ showRenameFolder: false });\r\n const name = ele.value;\r\n if (name) {\r\n const result = await renameFolder(this.state.selectedFolderID, name);\r\n if (result) {\r\n const documentFolders = [...this.props.folders];\r\n documentFolders[this.state.tabValue - 1].name = name;\r\n this.props.updateFolders(documentFolders);\r\n }\r\n }\r\n ele.value = \"\";\r\n }\r\n }\r\n handleShowComposer = async (e, doc) => {\r\n this.setState({\r\n selectedDocument: doc,\r\n showPostComposer: true\r\n })\r\n }\r\n\r\n //Render functions\r\n folderLabel = (label, closed) => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {label}\r\n \r\n \r\n\r\n )\r\n }\r\n Documents = () => {\r\n return (\r\n this.props.dark ? \"#050505\" : theme.palette.component3.light, }} className=\"prettyScroll\">\r\n this.setState({ tabValue: newValue })}\r\n aria-label=\"content tabs\"\r\n orientation=\"vertical\"\r\n variant=\"scrollable\"\r\n sx={{ minWidth: \"175px\", width: \"25%\", borderRight: 1, borderColor: 'divider', background: this.props.dark ? \"unset\" : \"#f5f5f5\", height: \"calc(100vh - 105px)\" }}\r\n >\r\n {(this.props.folders && this.props.folders.length > 0) &&\r\n \r\n\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Folders\r\n \r\n \r\n this.setState({ showNewFolder: true })} sx={{ boxShadow: this.props.dark && \"none\", }}>\r\n \r\n \r\n\r\n \r\n }\r\n {(this.props.folders && this.props.folders.length > 0) &&\r\n this.props.folders.map((item, index) => {\r\n\r\n return (\r\n this.handleContextMenuFolder(e, item.id, index, item.name) : undefined }\r\n key={item.id}\r\n label={ }\r\n sx={{ fontSize: \".8rem\", color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}\r\n />\r\n )\r\n\r\n return null;\r\n })\r\n }\r\n \r\n {(this.props.folders && this.props.folders.length > 0) &&\r\n this.props.folders.map((item, index) => {\r\n\r\n return (\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.black }}>\r\n Current Folder: {this.props.clientName} \\ {item.name}\r\n \r\n \r\n {((item.name === \"Uploads\" | this.props.isAdmin) && item.name !== \"Archive\") ?\r\n \r\n Upload\r\n \r\n :\r\n <>\r\n }\r\n \r\n \r\n {item.documents && item.documents.map((item2, index2) => {\r\n return (\r\n this.props.dark ? theme.palette.common.dimblack : \"#ccc\"\r\n }}>\r\n {this.docCard(item2, index2)}\r\n \r\n )\r\n })}\r\n \r\n \r\n\r\n \r\n )\r\n \r\n return null;\r\n })}\r\n \r\n )\r\n\r\n }\r\n setIcon = (doc) => {\r\n var fileExt = doc.split('.').pop();\r\n switch (fileExt) {\r\n case \"pdf\":\r\n return faFilePdf;\r\n case \"doc\":\r\n case \"docx\":\r\n return faFileWord;\r\n case \"xls\":\r\n case \"xlsx\":\r\n return faFileExcel;\r\n case \"tiff\":\r\n case \"jpg\":\r\n case \"jpeg\":\r\n case \"png\":\r\n case \"bmp\": \r\n return faImage;\r\n default:\r\n return faFile;\r\n\r\n }\r\n\r\n }\r\n docCard = (doc, index) => {\r\n return (\r\n \r\n this.handleClickDocument(e, doc.documentID, index, doc.documentName)} onContextMenu={(e) => this.handleContextMenuDocument(e, doc.documentID, index)}>\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack } }>\r\n \r\n \r\n {doc.documentName ? doc.documentName : \"Document\"}\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n Uploaded on {new Date(doc.createDate).toLocaleDateString()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n docUploader = () => {\r\n if (this.props.folders) {\r\n return (\r\n this.setState({ showAddDocuments: false })}\r\n handleSave={this.handleNewDocument}\r\n library={this.props.folders[this.state.tabValue - 1]}\r\n setBadFiles={()=> this.setState({ badFiles: true })}\r\n />\r\n )\r\n }\r\n return null;\r\n }\r\n\r\n docPreview = () => {\r\n if (this.state.selectedDocumentContent && this.state.showDocument) {\r\n return (\r\n this.setState({ showDocument: false })}\r\n fullWidth={true}\r\n disableButtons\r\n hideScroll={true}\r\n draggable={true}\r\n noUpperClose\r\n maxWidth=\"xl\"\r\n fullScreen={false}\r\n closeLabel=\"Close\"\r\n noBodyPad\r\n \r\n >\r\n this.setState({ showDocument: false })}\r\n fullHeight\r\n />\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n documentDeleteConfirmation = () => {\r\n return (\r\n this.setState({ showConfirmDeleteDocument: false })}\r\n handleDelete={this.handleDeleteDocument}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n deleteLabel=\"Archive\"\r\n />\r\n )\r\n }\r\n documentContextMenu = () => {\r\n return (\r\n this.setState({ contextMenuDocument: null })}\r\n contextMenu={this.state.contextMenuDocument}\r\n menuItems={this.state.contextMenuDocumentItems}\r\n id=\"Documentctx\" />\r\n )\r\n }\r\n documentEditor = () => {\r\n if (this.state.selectedDocument) {\r\n return (\r\n this.setState({ showRenameDocument: false })}\r\n handleSave={this.handleRenameDocument}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n folderCreator = () => {\r\n return (\r\n this.setState({ showNewFolder: false })}\r\n handleSave={this.handleNewFolder}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n folderEditor = () => {\r\n return (\r\n this.setState({ showRenameFolder: false })}\r\n handleSave={this.handleRenameFolder}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n {(this.state.folderMode === \"edit\" && this.props.entities && this.props.entities.length > 0) &&\r\n this.setState({ defaultEntity: e.target.value })}\r\n listItems={docTypeList()}\r\n />\r\n }\r\n \r\n \r\n )\r\n }\r\n closeAlert = () => {\r\n this.setState({ badFiles: null })\r\n }\r\n folderDeleter = () => {\r\n return (\r\n this.setState({ showConfirmDeleteFolder: false })}\r\n handleDelete={this.handleDeleteFolder}\r\n fullWidth={false}\r\n maxWidth=\"sm\" />\r\n )\r\n }\r\n folderContextMenu = () => {\r\n return (\r\n this.setState({ contextMenuFolder: null })}\r\n contextMenu={this.state.contextMenuFolder}\r\n menuItems={this.state.contextMenuFolderItems}\r\n id=\"Folderctx\" />\r\n )\r\n }\r\n badFileAlert = () => {\r\n if (this.state.badFiles === true) {\r\n return (\r\n this.setState({ badFiles: null })}\r\n fullWidth={false}\r\n />\r\n\r\n )\r\n }\r\n\r\n return null;\r\n\r\n }\r\n content = () => {\r\n if (this.state.loadingDocument) {\r\n return (\r\n \r\n )\r\n }\r\n return (\r\n \r\n {this.Documents()}\r\n {this.state.selectedDocumentContent && this.docPreview()}\r\n {this.docUploader()}\r\n {this.documentDeleteConfirmation()}\r\n {this.documentContextMenu()}\r\n {this.documentEditor()}\r\n {this.folderCreator()}\r\n {this.folderDeleter()}\r\n {this.folderContextMenu()}\r\n {this.folderEditor()}\r\n {this.badFileAlert()}\r\n \r\n ) \r\n }\r\n\r\n\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { styled } from '@mui/material/styles';\r\nimport { Typography } from '@mui/material';\r\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\r\nimport InsertPhotoIcon from '@mui/icons-material/InsertPhoto';\r\nimport Dropzone from 'react-dropzone'\r\nimport AvatarEditor from 'react-avatar-editor'\r\nimport ZoomInIcon from '@mui/icons-material/ZoomIn';\r\nimport ZoomOutIcon from '@mui/icons-material/ZoomOut';\r\nimport RotateRightIcon from '@mui/icons-material/RotateRight';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Box from '@mui/material/Box';\r\n\r\nexport class SiteImageUploader extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n processing: false,\r\n selectedFile: null,\r\n imgScale: 1.0,\r\n imgRotation: 0,\r\n\r\n }\r\n }\r\n setEditorRef = (editor) => (this.editor = editor);\r\n handleSavePhoto = async () => {\r\n\r\n // Select your input type file and store it in a variable\r\n //const input = document.getElementById('filepic');\r\n //const formData = new FormData();\r\n const canvas = await this.editor.getImage().toDataURL();\r\n const b64 = await fetch(canvas);\r\n const file = await b64.blob();\r\n this.props.handleSave(file, this.props.type ?? 0, b64.url.split(',')[1]);\r\n\r\n //formData.append('file', file);\r\n\r\n //fetch('home/uploadprofileimage', {\r\n // method: 'POST',\r\n // body: formData\r\n //}).then(\r\n // response => response.json()\r\n //).then(\r\n // success => { }\r\n //).catch(\r\n // error => console.log(error)\r\n //);\r\n\r\n\r\n //var reader = new FileReader();\r\n\r\n //reader.onload = e => {\r\n // const { result } = e.target;\r\n // var base64result = result.split(',')[1];\r\n // //base64 = base64result;\r\n // this.props.handleSave(base64result);\r\n //}\r\n\r\n //reader.readAsDataURL(file);\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n updateStateForNewPhoto = (base64result) => {\r\n //Update State to display new photo\r\n const itemCount = this.state.itemCount + 1;\r\n this.setState({\r\n currentUpload: base64result,\r\n itemCount: itemCount\r\n });\r\n }\r\n\r\n handleClose = () => {\r\n this.setState({\r\n currentUpload: \"\",\r\n itemCount: 0\r\n })\r\n this.props.handleClose();\r\n }\r\n\r\n toggleProcessing = (status) => {\r\n if (status != null) {\r\n this.setState({ processing: status });\r\n }\r\n else {\r\n this.setState({ processing: !this.state.processing });\r\n } \r\n }\r\n handleDragOverDropZone = (e) => {\r\n e.currentTarget.classList.add(\"hoverdropzone\");\r\n }\r\n handleDragLeaveDropZone = (e) => {\r\n e.currentTarget.classList.remove(\"hoverdropzone\");\r\n }\r\n handleRotateImage = () => {\r\n var rot = parseInt(this.state.imgRotation) + 90;\r\n if (rot === 450) {\r\n rot = 0;\r\n }\r\n this.setState({ imgRotation: rot });\r\n }\r\n handleScaleUpImage = () => {\r\n var scale = parseFloat(this.state.imgScale);\r\n scale = scale + .1;\r\n this.setState({ imgScale: scale });\r\n }\r\n handleScaleDownImage = () => {\r\n var scale = parseFloat(this.state.imgScale);\r\n if (scale > .2) {\r\n scale = scale - .1;\r\n }\r\n this.setState({ imgScale: scale });\r\n }\r\n handleDrop = async (files) => {\r\n this.toggleProcessing(true);\r\n if (files) {\r\n var numAllowed = 1;\r\n for (var i = 0; i < numAllowed; i++) {\r\n var file = files[i];\r\n var extension = file.type;\r\n if (extension === \"image/jpeg\" || extension === \"image/jpg\" || extension === \"image/png\" || extension === \"image/bmp\") {\r\n this.setState({ selectedFile: file });\r\n }\r\n }\r\n }\r\n\r\n //clean up iu from any progress indicators, etc.\r\n var ele = document.getElementById(\"dropZone\");\r\n if (ele) ele.classList.remove(\"hoverdropzone\");\r\n this.toggleProcessing(false);\r\n }\r\n\r\n render() {\r\n const inst = () => {\r\n if (this.state.selectedFile) {\r\n return \"Edit selected photo...\";\r\n }\r\n else {\r\n return \"Drag photos below, or click for file browser...\";\r\n }\r\n }\r\n\r\n return (\r\n \r\n <>\r\n {this.state.selectedFile ?\r\n <>\r\n \r\n \r\n \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.handleDrop(acceptedFiles)}\r\n onDragOver={this.handleDragOverDropZone}\r\n onDragLeave={this.handleDragLeaveDropZone}\r\n >\r\n {({ getRootProps, getInputProps }) => (\r\n
\r\n \r\n
\r\n theme.palette.secondary.main }} />\r\n
\r\n
\r\n )}\r\n \r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\nimport { TextInput } from '../Utilities/TextInput';\r\n\r\nimport Button from '@mui/material/Button';\r\nimport Stack from '@mui/material/Stack';\r\nimport Chip from '@mui/material/Chip';\r\nimport Box from '@mui/material/Box';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n//Database Services\r\nimport { createNotification } from '../../DataServices/NotificationService'\r\nimport { sendEmail } from '../../DataServices/EmailService'\r\nexport class Invitation extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n searchResults: [],\r\n newMessageRecipients: [],\r\n newEmailRecipients: [],\r\n emailError: \"\",\r\n customMessage: \"You have been invited to join this group\"\r\n }; \r\n } \r\n\r\n deleteNewEmailRecipientHandler = (idx) => {\r\n this.setState(state => {\r\n const newEmailRecipients = state.newEmailRecipients.filter((item, j) => idx !== j);\r\n return { newEmailRecipients, };\r\n });\r\n }\r\n\r\n deleteNewRecipientHandler = (idx) => {\r\n this.setState(state => {\r\n const newMessageRecipients = state.newMessageRecipients.filter((item, j) => idx !== j);\r\n return { newMessageRecipients, };\r\n });\r\n }\r\n\r\n handleSelectMessageRecipient = async (idx) => {\r\n const user = this.state.searchResults[idx];\r\n this.addExistingUser(user);\r\n }\r\n\r\n handleSelectEmailRecipient = async (email) => {\r\n this.setState(\r\n state => {\r\n const newEmailRecipients = state.newEmailRecipients.concat(email);;\r\n return { newEmailRecipients };\r\n }\r\n );\r\n document.getElementById(\"newThreadMember\").value = \"\";\r\n document.getElementById(\"newThreadMember\").focus();\r\n }\r\n\r\n addExistingUser = (user) => {\r\n this.setState(\r\n state => {\r\n const newMessageRecipients = state.newMessageRecipients.concat(user);\r\n return { newMessageRecipients, searchResults: [] };\r\n }\r\n );\r\n document.getElementById(\"newThreadMember\").value = \"\";\r\n document.getElementById(\"newThreadMember\").focus();\r\n }\r\n\r\n handleKeyPress = async (event) => {\r\n if (event.keyCode === 9) {\r\n event.preventDefault();\r\n }\r\n if (event.key === 'Enter' || event.keyCode === 9) {\r\n const name = event.target.value;\r\n if (this.validateEmail(name)) {\r\n const user = await this.checkIfUserExists(name);\r\n if (user) {\r\n this.addExistingUser(user);\r\n }\r\n else {\r\n this.handleSelectEmailRecipient(name);\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n validateEmail = (email) => {\r\n const reg = /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/;\r\n if (!email || reg.test(email) === false) {\r\n this.setState({ emailError: \"Invalid email\" });\r\n return false;\r\n }\r\n this.setState({ emailError: \"\" });\r\n return true;\r\n }\r\n\r\n validateMember = async (name) => {\r\n console.log(name)\r\n if (!this.state.validating) {\r\n this.setState({ validating: true });\r\n if (name) {\r\n const response = await fetch('messenger/searchusersbyname?name=' + name)\r\n const searchResults = await response.json();\r\n if (searchResults && searchResults.length > 0) {\r\n this.setState({ searchResults });\r\n //for (var i = 0; i < searchResults.length; i++) {\r\n // let avatar = await this.getUserInfo(searchResults[i].userID);\r\n // if (avatar) {\r\n // searchResults[i].avatarB64 = avatar;\r\n // this.setState({ searchResults });\r\n // }\r\n\r\n //}\r\n }\r\n else {\r\n this.setState({ searchResults: [] });\r\n }\r\n }\r\n else {\r\n this.setState({ searchResults: [] });\r\n }\r\n this.setState({ validating: false });\r\n }\r\n\r\n }\r\n\r\n checkIfUserExists = async (email) => {\r\n if (email) {\r\n const response = await fetch('messenger/getuserinfobyemail?email=' + email);\r\n return await response.json();\r\n }\r\n }\r\n\r\n getUserInfo = async (id) => {\r\n if (id) {\r\n const response = await fetch('home/getuseravatar?userid=' + id);\r\n const userinfo = await response.json();\r\n if (userinfo) {\r\n return userinfo.avatarB64;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n handleSaveInvitation = async () => {\r\n switch (this.props.inviteType) {\r\n case \"share\":\r\n break;\r\n default:\r\n let groupid = this.props.groupID;\r\n let groupName = this.props.groupName;\r\n let groupType;\r\n switch (this.props.groupType) {\r\n case \"Family\":\r\n groupType = 1;\r\n break;\r\n case \"Client\":\r\n groupType = 3;\r\n break;\r\n case \"Team\":\r\n groupType = 2;\r\n break;\r\n case \"Employee\":\r\n groupType = 4;\r\n break;\r\n case \"Attendee\":\r\n groupType = 5;\r\n break;\r\n case \"Admin\":\r\n groupType = 6;\r\n break;\r\n default:\r\n groupType = 0;\r\n break;\r\n }\r\n\r\n var message = this.props.inviteMessage ?? \"You have been invited to join the \" + this.props.groupName;\r\n \r\n const users = [];\r\n if (this.state.newMessageRecipients && this.state.newMessageRecipients.length > 0) {\r\n for (var i = 0; i < this.state.newMessageRecipients.length; i++) {\r\n const req = { GroupID: groupid, GroupType: groupType, GroupName: groupName, NewMemberUserID: this.state.newMessageRecipients[i].userID, CustomMessage: message };\r\n const responseUID = await fetch('org/addmember', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (responseUID.status === 200) {\r\n const usr = await responseUID.json()\r\n users.push(usr);\r\n }\r\n\r\n\r\n //if family, go ahead and add the user.\r\n if (this.props.groupType === \"Family\") {\r\n const req2 = { FamilyID: groupid, UserID: this.state.newMessageRecipients[i].userID, Role: 1, IsAdmin: false, IsPrimary: false };\r\n await fetch('family/createfamilymember', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req2)\r\n });\r\n }\r\n //if client user, go ahead and add the user.\r\n if (this.props.groupType === \"Client\" && this.props.businessID) {\r\n const req3 = { ClientID: groupid, BusinessID: this.props.businessID, UserID: this.state.newMessageRecipients[i].userID, Role: 1, IsAdmin: false, IsPrimary: false };\r\n const invite = await fetch('business/createclientuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req3)\r\n });\r\n let message = this.props.parentName + \" has invited you to their client portal as a user for \" + this.props.groupName;\r\n this.sendNotification(this.state.newMessageRecipients[i].userID, message, invite.id);\r\n }\r\n //if admin user, go ahead and add the user.\r\n if (this.props.groupType === \"Admin\" && this.props.businessID) {\r\n const req5 = { BusinessID: this.props.businessID, UserID: this.state.newMessageRecipients[i].userID };\r\n const invite = await fetch('business/createadminuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req5)\r\n });\r\n let message = (this.props.user.displayName ? this.props.user.displayName : \"A user\") + \" has invited you to join the \" + this.props.groupName + \" group as an admin user\";\r\n this.sendNotification(this.state.newMessageRecipients[i].userID, message, invite.id);\r\n }\r\n\r\n }\r\n }\r\n if (this.state.newEmailRecipients && this.state.newEmailRecipients.length > 0) {\r\n\r\n for (var i = 0; i < this.state.newEmailRecipients.length; i++) {\r\n\r\n const req = { GroupID: groupid, NewMemberEmail: this.state.newEmailRecipients[i], CustomMessage: message, GroupName: groupName, GroupType: groupType };\r\n const responseEmail = await fetch('org/addmember', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (responseEmail.status === 200) {\r\n const eml = await responseEmail.json();\r\n users.push(eml);\r\n }\r\n\r\n //if client user, go ahead and add the user.\r\n if (this.props.groupType === \"Client\" && this.props.businessID) {\r\n const req4 = { ClientID: groupid, BusinessID: this.props.businessID, UserID: this.state.newEmailRecipients[i], Role: 1, IsAdmin: false, IsPrimary: false };\r\n const invite2 = await fetch('business/createclientuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req4)\r\n });\r\n }\r\n\r\n sendEmail(this.state.newEmailRecipients[i], this.state.newEmailRecipients[i], \"Stallings Portal Invitation\", \"test\", null, \"LS\", \"DONOTREPLY@stallingsandassociates.com\");\r\n\r\n //if admin user, go ahead and add the user.\r\n if (this.props.groupType === \"Admin\" && this.props.businessID) {\r\n const req7 = { BusinessID: this.props.businessID, UserID: this.state.newEmailRecipients[i] };\r\n const invite = await fetch('business/createadminuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req7)\r\n });\r\n }\r\n }\r\n }\r\n console.log(users);\r\n if (this.props.updateInviteList) this.props.updateInviteList(users);\r\n\r\n this.setState({\r\n newMessageRecipients: [],\r\n newEmailRecipients: []\r\n })\r\n\r\n break;\r\n\r\n }\r\n this.props.handleCancel();\r\n }\r\n\r\n sendNotification = async (user, message, refID) => {\r\n \r\n await createNotification(user, 7, refID, this.props.user.userID, message, this.props.appIdentifier);\r\n }\r\n\r\n render() {\r\n\r\n const searchResults = ( \r\n <>\r\n {(this.state.searchResults && this.state.searchResults.length > 0) &&\r\n this.props.dark ? theme.palette.component.dark : theme.palette.component.light,\r\n color: (theme) => this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n padding: \"6px, 16px\",\r\n maxHeight: \"300px\"\r\n }}\r\n className=\"prettyScroll\" >\r\n \r\n {this.state.searchResults.map((user, index) => {\r\n return (\r\n \r\n this.handleSelectMessageRecipient(index)} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n }\r\n \r\n )\r\n\r\n const invitee = (user, idx) => {\r\n return (\r\n this.deleteNewRecipientHandler(idx)}\r\n avatar={\r\n \r\n }\r\n />\r\n )\r\n }\r\n\r\n const emailInvitee = (email, idx) => {\r\n return (\r\n this.deleteNewEmailRecipientHandler(idx)}\r\n />\r\n )\r\n }\r\n\r\n const inviteeList = ( \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black} sx={{ padding: \"6px\", fontSize: \".9rem\" }}>\r\n Invite by Livesphere Accout\r\n \r\n \r\n {this.state.newMessageRecipients.map((user, index) => {\r\n return invitee(user, index)\r\n })}\r\n \r\n )\r\n\r\n const emailInviteeList = ( \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black} sx={{ padding: \"6px\", fontSize: \".9rem\" }}>\r\n Invite by email\r\n \r\n \r\n {this.state.newEmailRecipients.map((email, index) => {\r\n return emailInvitee(email, index)\r\n })}\r\n \r\n )\r\n\r\n const input = ( )\r\n\r\n const cancelButton = ( this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n >\r\n Cancel\r\n )\r\n\r\n const sendButton = (\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black }}\r\n onClick={this.handleSaveInvitation}\r\n >\r\n Save\r\n )\r\n\r\n return (\r\n \r\n \r\n {input}\r\n {this.state.searchResults && searchResults}\r\n \r\n\r\n {(this.state.newMessageRecipients && this.state.newMessageRecipients.length > 0) && inviteeList}\r\n {(this.state.newEmailRecipients && this.state.newEmailRecipients.length > 0) && emailInviteeList}\r\n\r\n \r\n \r\n {cancelButton}\r\n {((this.state.newMessageRecipients && this.state.newMessageRecipients.length > 0) || (this.state.newEmailRecipients && this.state.newEmailRecipients.length > 0)) && sendButton }\r\n \r\n \r\n \r\n\r\n );\r\n }\r\n}\r\n","\r\nexport async function getBusinesses() {\r\n let url = 'business/getuserbusinesses';\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return null;\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function isAdminUser(userid, businessid) {\r\n let url = 'business/isadmin?userid=' + userid + \"&businessid=\" + businessid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return false;\r\n const data = await response.json();\r\n console.log(data);\r\n if (data)\r\n return data;\r\n return false;\r\n}\r\nexport async function getBusinessesByAdminUser() {\r\n let url = 'business/getbusinessesbyadminuser';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return null;\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getBusinessTypes() {\r\n let url = 'business/getbusinesstypelist';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getClientUserData() {\r\n let url = 'business/getclientuserdata?';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getStateList() {\r\n let url = 'business/getstatelist';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function newBusiness(name, desc, type, street, city, state, zip, phone, website) {\r\n const req = {\r\n Name: name,\r\n Desc: desc,\r\n Type: type,\r\n Street: street,\r\n City: city,\r\n State: state,\r\n Zip: zip,\r\n Phone: phone,\r\n Website: website\r\n };\r\n const response = await fetch('business/createbusiness', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const newBiz = await response.json();\r\n return newBiz;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editBusiness(id, name, desc, type, street, city, state, zip, phone, website) {\r\n const req = {\r\n BusinessID: id,\r\n Name: name,\r\n Desc: desc,\r\n Type: type,\r\n Street: street,\r\n City: city,\r\n State: state,\r\n Zip: zip,\r\n Phone: phone,\r\n Website: website\r\n };\r\n const response = await fetch('business/editbusiness', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteBusiness(id) {\r\n const req = {\r\n BusinessID: id,\r\n };\r\n const response = await fetch('business/deletebusiness', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getBusiness(id) {\r\n let url = 'business/getbusiness?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getClients(id) {\r\n let url = 'business/getclients?businessid=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getClientDocs(id) {\r\n let url = 'business/getclientdocuments?clientid=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getClientUsers(id) {\r\n let url = 'business/getclientusers?clientid=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return null;\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getAllClientDocuments(businessid,appid) {\r\n let url = 'business/getallclientdocuments?businessid=' + businessid + '&appid=' + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return null;\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getClientUserInvites(id) {\r\n let url = 'org/getgroupinvitedmembers?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return null;\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function newClient(id, name, altid) {\r\n const req = { Name: name, BusinessID: id, AltID: altid };\r\n const response = await fetch('business/createclient', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const newData = await response.json();\r\n return newData;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editClient(id, name, altid) {\r\n const req = { Name: name, ClientID: id, AltID: altid, Status: 2 };\r\n const response = await fetch('business/editclient', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteClient(id) {\r\n const req = { ClientID: id };\r\n const response = await fetch('business/deleteclient', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getUserAffiliations() {\r\n let url = 'business/getuseraffiliations'\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getAdminUsers(id) {\r\n let url = 'business/getadminusers?businessid=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return null;\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getAdminUserInvites(id) {\r\n let url = 'org/getgroupinvitedmembers?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return null;\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function deleteAdminUser(id) {\r\n const req = { ID: id };\r\n const response = await fetch('business/deleteadminuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function newClientUser(businessID, clientID, first, last, email, password) {\r\n const req = {\r\n BusinessID: businessID,\r\n ClientID: clientID,\r\n FirstName: first, \r\n LastName: last,\r\n Email: email,\r\n Password: password\r\n };\r\n const response = await fetch('business/createclientuser', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const newBiz = await response.json();\r\n return newBiz;\r\n }\r\n return null;\r\n}","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ClientDocuments } from './ClientDocuments';\r\nimport { SiteImageUploader } from '../Families/SiteImageUploader';\r\nimport { Spin } from '../Utilities/Spin'\r\nimport { Section } from '../Utilities/Section';\r\nimport { SectionItem } from '../Utilities/SectionItem';\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\nimport { Invitation } from '../Invitations/Invitation';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { SelectList } from '../Utilities/SelectList';\r\nimport { DocumentViewer } from '../Content/Documents/DocumentViewer';\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\n\r\n\r\n//MaterialUI\r\nimport Alert from '@mui/material/Alert';\r\nimport Stack from '@mui/material/Stack';\r\nimport Paper from '@mui/material/Paper';\r\nimport Box from '@mui/material/Box';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\r\nimport Typography from '@mui/material/Typography';\r\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport { DataGrid, GridToolbar, GridToolbarContainer } from '@mui/x-data-grid';\r\n\r\n//Database Services\r\nimport { getBusiness, editBusiness, getClients, getClientUsers, getClientUserInvites, getAdminUserInvites, newClient, editClient, deleteClient, getAllClientDocuments, getAdminUsers, deleteAdminUser } from '../../DataServices/BusinessService'\r\nimport { formatPhoneNumberInline, handleNumbersOnly, isValidURL } from '../../DataServices/Utility'\r\nimport { removeInvitation } from '../../DataServices/OrganizationService'\r\nimport { getDocument } from '../../DataServices/DocumentService'\r\n\r\n//Helper functions\r\nconst a11yProps = (index, id) => {\r\n return {\r\n id: `simple-tab-${index}-${id}`,\r\n 'aria-controls': `simple-tabpanel-${index}`,\r\n };\r\n}\r\nconst TabPanel = (props) => {\r\n const { children, value, index, ...other } = props;\r\n return (\r\n
\r\n );\r\n}\r\nfunction remove(item, array) {\r\n var new_array = [];\r\n new_array = array.filter((ar) => ar != item);\r\n return new_array;\r\n}\r\n\r\nexport class BusinessEditor extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n anchorEl: null,\r\n businessID: this.props.businessID,\r\n business: null,\r\n showNewClient: false,\r\n showInvitation: false,\r\n showEditProps: false,\r\n loading: true,\r\n loadingMessage: this.props.businessName ? `Loading data for ${this.props.businessName}. This make take a moment...` : \"Loading Business Data. This may take a moment...\",\r\n showProfileImageUploader: false,\r\n showCoverImageUploader: false,\r\n showConfirmDeleteMember: false,\r\n showConfirmDeleteInvited: false,\r\n showBusinessMenu: false,\r\n selectedClient: null,\r\n showClientUserInvitation: false,\r\n tabValue: 0,\r\n tabValueClient: 0,\r\n tabPanelState: { docs: 1 },\r\n showDocument: false,\r\n showConfirmDeleteClient: false,\r\n selectedDocument: null,\r\n clientDocs: [],\r\n showAdminUserInvitation: false,\r\n showConfirmDeleteAdminUser: false,\r\n showConfirmDeleteInvitedAdminUser: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getData();\r\n this.getAdminUsers();\r\n this.updateAdminUserInviteList();\r\n }\r\n\r\n getData = async () => {\r\n const data = await getBusiness(this.props.businessID);\r\n if (data && data.business) {\r\n if (!data.business.clients) {\r\n data.business.clients = [];\r\n }\r\n\r\n this.setState({\r\n business: data.business,\r\n typeValue: data.business.businessTypeID,\r\n stateValue: data.business.state && this.props.dropDownLists.states.find((x) => x.label === data.business.state).value,\r\n });\r\n\r\n this.getClients();\r\n await this.getClientDocs(data.business.appID);\r\n\r\n this.props.editorLoaded();\r\n }\r\n else {\r\n this.setState({\r\n business: null,\r\n loading: false,\r\n typeValue: null,\r\n stateValue: null\r\n });\r\n }\r\n\r\n\r\n }\r\n getClients = async () => {\r\n const clients = await getClients(this.props.businessID);\r\n if (clients) {\r\n this.setState(\r\n state => {\r\n let business = state.business;\r\n const clts = business.clients.concat(clients);\r\n business.clients = clts;\r\n return {\r\n business,\r\n };\r\n }\r\n );\r\n }\r\n }\r\n getClientDocs = async (appID) => {\r\n\r\n const clientDocs = await getAllClientDocuments(this.props.businessID, appID);\r\n if (clientDocs) {\r\n this.setState({ clientDocs });\r\n\r\n }\r\n this.setState({ loading: false });\r\n }\r\n getAdminUsers = async () => {\r\n const adminUsers = await getAdminUsers(this.props.businessID);\r\n if (adminUsers) {\r\n this.setState({ adminUsers });\r\n }\r\n }\r\n\r\n //Event Handlers-----------------\r\n handleTabChange = (event, newValue) => {\r\n this.setState({ tabValue: newValue })\r\n }\r\n handleTabChangeClient = (event, newValue) => {\r\n this.setState({ tabValueClient: newValue })\r\n }\r\n handleShowInvitation = () => {\r\n this.setState({ showInvitation: true });\r\n }\r\n handleSaveEditProperties = async (business) => { }\r\n handleEditMember = () => { }\r\n handleShowConfirmDeleteMember = (id, idx) => {\r\n this.setState({\r\n selectedMemberID: id,\r\n selectedMemberIDX: idx,\r\n showConfirmDeleteMember: true\r\n });\r\n }\r\n handleEditInvitedMember = () => { }\r\n handleShowConfirmDeleteInvitedMember = (id, idx) => {\r\n this.setState({\r\n selectedInvitedID: id,\r\n selectedInvitedIDX: idx,\r\n showConfirmDeleteInvited: true\r\n });\r\n }\r\n handleUpdateProfileImage = () => { }\r\n handleUpdateCoverImage = () => { }\r\n\r\n //Business Edit\r\n handleNameBlur = (e) => {\r\n const val = e.target.value;\r\n let business = this.state.business;\r\n business.businessName = val;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n handleDescBlur = (e) => {\r\n const val = e.target.value;\r\n let business = this.state.business;\r\n business.description = val;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n handleTypeChange = (e) => {\r\n let business = this.state.business;\r\n business.businessTypeID = e.target.value;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n handleWebsiteBlur = (e) => {\r\n const val = e.target.value;\r\n if (val) {\r\n if (!isValidURL(val)) {\r\n this.setState({ InputURLError: true });\r\n }\r\n else {\r\n this.setState({ InputURLError: false });\r\n let business = this.state.business;\r\n business.website = val;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n }\r\n else {\r\n this.setState({ InputURLError: false });\r\n let business = this.state.business;\r\n business.website = val;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n }\r\n handlePhoneChange = (e) => {\r\n const formattedVal = formatPhoneNumberInline(e.target.value);\r\n e.target.value = formattedVal;\r\n this.setState(\r\n state => {\r\n let business = state.business;\r\n business.mainPhone = formattedVal.replace(/\\D/g, '');;\r\n return {\r\n business,\r\n };\r\n }\r\n );\r\n }\r\n handlePhoneBlur = (e) => {\r\n this.handleEditBusiness(this.state.business);\r\n }\r\n handleStreetBlur = (e) => {\r\n const val = e.target.value;\r\n let business = this.state.business;\r\n business.streetAddress = val;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n handleCityBlur = (e) => {\r\n const val = e.target.value;\r\n let business = this.state.business;\r\n business.city = val;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n handleStateChange = (e) => {\r\n const item = this.props.dropDownLists.states.find((x) => x.value === e.target.value);\r\n if (item) {\r\n const st = item.label;\r\n let business = this.state.business;\r\n business.state = st;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n }\r\n handleZipBlur = (e) => {\r\n const val = e.target.value;\r\n let business = this.state.business;\r\n business.zip = val;\r\n this.setState({ business });\r\n this.handleEditBusiness(business);\r\n }\r\n handleEditBusiness = async (biz) => {\r\n if(!biz)\r\n biz = this.state.business;\r\n console.log(biz);\r\n\r\n await editBusiness(\r\n biz.id,\r\n biz.businessName,\r\n biz.description,\r\n biz.businessTypeID,\r\n biz.streetAddress,\r\n biz.city,\r\n biz.state,\r\n biz.zip,\r\n biz.mainPhone,\r\n biz.website\r\n );\r\n }\r\n handleShowEditClient = () => {\r\n const id = this.state.selectedClientID;\r\n\r\n this.setState({\r\n anchorEl: null,\r\n showNewClient: true,\r\n mode: \"edit\",\r\n nameValue: this.state.business.clients.find((x) => x.id === id).name,\r\n altIdValue: this.state.business.clients.find((x) => x.id === id).clientAltID,\r\n });\r\n }\r\n handleShowNewClient = () => {\r\n this.setState({ showNewClient: true, mode: \"new\" });\r\n\r\n }\r\n handleSaveNewClient = async () => {\r\n const ele = document.getElementById(\"fldClientName\");\r\n if (!ele)\r\n return;\r\n const name = ele.value;\r\n ele.value = \"\";\r\n const ele2 = document.getElementById(\"fldClientAltID\");\r\n if (!ele2)\r\n return;\r\n const altid = ele2.value;\r\n ele2.value = \"\";\r\n\r\n const newClt = await newClient(this.state.business.id, name, altid);\r\n if (newClt) {\r\n this.setState(\r\n state => {\r\n let business = state.business;\r\n const clients = business.clients.concat(newClt);\r\n business.clients = clients;\r\n\r\n return {\r\n business,\r\n showNewClient: false\r\n };\r\n }\r\n );\r\n }\r\n }\r\n handleSaveEditClient = async () => {\r\n const ele = document.getElementById(\"fldClientName\");\r\n if (!ele)\r\n return;\r\n const name = ele.value;\r\n ele.value = \"\";\r\n const ele2 = document.getElementById(\"fldClientAltID\");\r\n if (!ele2)\r\n return;\r\n const altid = ele2.value;\r\n ele2.value = \"\";\r\n\r\n const newClt = await editClient(this.state.selectedClientID, name, altid);\r\n if (newClt) {\r\n this.setState(\r\n state => {\r\n let business = state.business;\r\n business.clients.find((x) => x.id === this.state.selectedClientID).name = name;\r\n business.clients.find((x) => x.id === this.state.selectedClientID).clientAltID = altid;\r\n return {\r\n business,\r\n showNewClient: false\r\n };\r\n }\r\n );\r\n }\r\n }\r\n handleDeleteClient = async () => {\r\n const id = this.state.selectedClientID;\r\n this.setState({ showConfirmDeleteClient: false });\r\n await deleteClient(id);\r\n this.setState(\r\n state => {\r\n let business = state.business;\r\n let clients = business.clients;\r\n const client = clients.find((x) => x.id === this.state.selectedClientID);\r\n clients = remove(client, clients);\r\n business.clients = clients;\r\n\r\n return {\r\n business,\r\n };\r\n }\r\n );\r\n\r\n }\r\n handleSelection = (selection) => {\r\n\r\n this.setState({\r\n activeSection: selection,\r\n showBusinessMenu: false\r\n });\r\n\r\n }\r\n handleEditClientUser = (id) => {\r\n\r\n }\r\n handleShowNewClientContact = () => {\r\n this.setState({ showClientUserInvitation: true });\r\n }\r\n handleShowConfirmDeleteClientUser = (id, idx) => {\r\n\r\n }\r\n updateClientUserInviteList = async () => {\r\n this.setState({ showClientUserInvitation: false });\r\n const inv = await getClientUserInvites(this.state.selectedClient.id);\r\n this.setState(state => {\r\n let selectedClient = state.selectedClient;\r\n selectedClient.invitations = inv;\r\n return { selectedClient };\r\n\r\n })\r\n\r\n }\r\n handleClientUsers = async (item, idx) => {\r\n\r\n this.setState({\r\n selectedClient: item,\r\n selectedClientIDX: idx,\r\n selectedClientItem: \"users\"\r\n });\r\n\r\n const inv = await getClientUserInvites(item.id);\r\n\r\n this.setState(state => {\r\n let selectedClient = state.selectedClient;\r\n selectedClient.invitations = inv;\r\n return { selectedClient };\r\n\r\n })\r\n\r\n const usrs = await getClientUsers(item.id);\r\n this.setState(state => {\r\n let selectedClient = state.selectedClient;\r\n selectedClient.users = usrs;\r\n return { selectedClient };\r\n\r\n })\r\n }\r\n handleClientFiles = (item, idx) => {\r\n this.setState({\r\n selectedClient: item,\r\n selectedClientIDX: idx,\r\n selectedClientItem: \"files\"\r\n })\r\n }\r\n handleClientNotes = (item, idx) => {\r\n this.setState({\r\n selectedClient: item,\r\n selectedClientIDX: idx,\r\n selectedClientItem: \"notes\"\r\n })\r\n }\r\n handleClientChat = (item, idx) => {\r\n this.setState({\r\n selectedClient: item,\r\n selectedClientIDX: idx,\r\n selectedClientItem: \"chat\"\r\n })\r\n }\r\n handleSelectClient = async (e) => {\r\n console.log(e);\r\n const inv = await getClientUserInvites(e.id);\r\n const usrs = await getClientUsers(e.id);\r\n const client = this.state.business.clients.find((x) => x.id === e.id);\r\n setTimeout(\r\n this.setState(state => {\r\n let selectedClient = client;\r\n selectedClient.invitations = inv;\r\n selectedClient.users = usrs;\r\n return { selectedClient };\r\n }), 100);\r\n }\r\n handleBackToClientList = () => {\r\n this.setState({ selectedClient: null });\r\n }\r\n handleShowConfirmDeleteClientUser = (id, idx) => {\r\n\r\n }\r\n handleEditInvitedClientUser = () => {\r\n\r\n }\r\n handleSelectClientDoc = async (e) => {\r\n this.setState({ loading: true, loadingMessage: e.row.documentName ? \"Loading \" + e.row.documentName : \"Loading Document...\" });\r\n const doc = await getDocument(e.id);\r\n if (doc && doc.eFiles && doc.eFiles.length > 0 && doc.eFiles[0].fileContent) {\r\n this.setState({\r\n selectedDocumentName: doc.documentName,\r\n selectedDocumentContent: doc.eFiles[0].fileContent,\r\n showDocument: true,\r\n loading: false\r\n });\r\n }\r\n }\r\n handleShowConfirmDeleteClient = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.setState({ anchorEl: null, showConfirmDeleteClient: true });\r\n }\r\n handleShowClientMenu = (e, params) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.setState({ selectedClientID: params.id, anchorEl: e.currentTarget });\r\n }\r\n handleCloseClientMenu = (e) => {\r\n this.setState({ anchorEl: null });\r\n }\r\n handleShowNewAdminUser = () => {\r\n this.setState({ showAdminUserInvitation: true });\r\n }\r\n handleShowConfirmDeleteAdminUser = (id, index) => {\r\n this.setState({\r\n selectedAdminUserID: id,\r\n selectedAdminUserIDX: index,\r\n showConfirmDeleteAdminUser: true\r\n })\r\n }\r\n handleDeleteAdminUser = async () => {\r\n const adminUsers = [...this.state.adminUsers];\r\n adminUsers.splice(this.state.selectedAdminUserIDX, 1);\r\n this.setState({ adminUsers, showConfirmDeleteAdminUser: false });\r\n\r\n await deleteAdminUser(this.state.selectedAdminUserID);\r\n }\r\n handleDeleteInvitedAdminUser = async () => {\r\n const invitedAdminUsers = [...this.state.invitedAdminUsers];\r\n invitedAdminUsers.splice(this.state.selectedInvitedAdminUserIDX, 1);\r\n this.setState({ invitedAdminUsers, showConfirmDeleteInvitedAdminUser: false });\r\n\r\n await removeInvitation(this.state.selectedInvitedAdminUserID);\r\n }\r\n handleShowConfirmDeleteInvitedAdminUser = (id, index) => {\r\n this.setState({\r\n selectedInvitedAdminUserID: id,\r\n selectedInvitedAdminUserIDX: index,\r\n showConfirmDeleteInvitedAdminUser: true\r\n })\r\n }\r\n updateAdminUserInviteList = async () => {\r\n this.setState({ showAdminUserInvitation: false });\r\n const invitedAdminUsers = await getAdminUserInvites(this.props.businessID);\r\n if (invitedAdminUsers) {\r\n this.setState({ invitedAdminUsers });\r\n }\r\n }\r\n\r\n //Render Funcs\r\n CustomToolbarClientList(ctx) {\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 CustomToolbarClientDocList() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n TabContainer = () => {\r\n return (\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n {/* this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />*/}\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n \r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>Use larger device to manage clients\r\n \r\n \r\n {this.state.selectedClient ? this.clientManager() : this.clientList()}\r\n \r\n\r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>Use larger device to manage client documents\r\n \r\n \r\n {this.clientDocList()}\r\n \r\n \r\n {/**/}\r\n\r\n {/**/}\r\n \r\n {this.mainSettings()}\r\n {this.secondarySettings()}\r\n \r\n \r\n {this.adminUsers()}\r\n \r\n \r\n )\r\n }\r\n mainSettings = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.InputURLError &&\r\n Not a valid web address\r\n }\r\n \r\n \r\n \r\n )\r\n }\r\n secondarySettings = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n x.label === this.state.business.state) ? this.props.dropDownLists.states.find((x) => x.label === this.state.business.state).value : -1 }\r\n onChange={this.handleStateChange}\r\n listItems={this.props.dropDownLists.states}\r\n />\r\n \r\n \r\n\r\n )\r\n }\r\n clientRow = (item, idx) => {\r\n return { id: item.id, clientName: item.name, status: item.status, altID: item.clientAltID }\r\n }\r\n clientList = () => {\r\n const columns = [\r\n { field: 'id', headerName: 'ID', width: 0, hide: true },\r\n { field: 'clientName', headerName: 'Client Name', width: 200, flex: 2 },\r\n { field: 'altID', headerName: 'Alt ID', width: 200, flex: 2 },\r\n { field: 'status', headerName: 'Status', width: 130, flex: 1 },\r\n { field: 'actions', headerName: '', renderCell: (params) => (\r\n <>\r\n this.handleShowClientMenu(e, params)}>\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n \r\n this.props.dark ? theme.palette.backgroundModal.dark : theme.palette.backgroundModal.light, color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack } }}\r\n MenuListProps={{ sx: { backgroundColor: (theme) => this.props.dark ? theme.palette.backgroundModal.dark : theme.palette.backgroundModal.light, color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack } }}\r\n >\r\n Edit\r\n Delete\r\n \r\n \r\n ),\r\n },\r\n ];\r\n if (this.state.business && this.state.business.clients && !this.state.loading) {\r\n const rows = this.state.business.clients.map((item, index) => {\r\n return this.clientRow(item, index)\r\n })\r\n\r\n return (\r\n \r\n this.CustomToolbarClientList(this) }}\r\n />\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n clientManager = () => {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n \r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black} sx={{ marginTop: \"auto\", marginBottom: \"auto\", padding: \"6px\", fontSize: \".9rem\" }}>\r\n {this.state.selectedClient.name}\r\n \r\n \r\n\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n \r\n \r\n {this.clientUsers()}\r\n \r\n \r\n {this.docs()}\r\n \r\n \r\n \r\n\r\n )\r\n }\r\n clientUser = (item, index) => {\r\n return (\r\n this.handleShowConfirmDeleteClientUser(item.id, index)}\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n clientUsers = () => {\r\n if (this.state.selectedClient) {\r\n return (\r\n \r\n \r\n {(this.state.selectedClient.invitations && this.state.selectedClient.invitations.length > 0 && this.state.selectedClient.invitations !== \"error\") && this.state.selectedClient.invitations.map((item, index) => {\r\n return this.invitedClientUser(item, index)\r\n })}\r\n {(this.state.selectedClient && this.state.selectedClient.users) && this.state.selectedClient.users.map((item, index) => {\r\n return this.clientUser(item, index)\r\n })}\r\n \r\n \r\n )\r\n }\r\n return null\r\n }\r\n invitedClientUser = (item, index) => {\r\n return (\r\n this.handleShowConfirmDeleteInvitedClientUser(item.id, index)}\r\n >\r\n \r\n \r\n \r\n {\"Invited on \" + new Date(item.dateSent).toLocaleDateString()}\r\n \r\n \r\n \r\n )\r\n }\r\n clientUserInvitation = () => {\r\n if (this.state.showClientUserInvitation) {\r\n return (\r\n \r\n this.setState({ showClientUserInvitation: false })}\r\n />\r\n )\r\n }\r\n return null;\r\n } \r\n adminUsers = () => {\r\n return (\r\n
\r\n \r\n {(this.state.adminUsers && this.state.adminUsers.length > 0) && this.state.adminUsers.map((item, index) => {\r\n return this.adminUser(item, index)\r\n })}\r\n {(this.state.invitedAdminUsers && this.state.invitedAdminUsers.length > 0) && this.state.invitedAdminUsers.map((item, index) => {\r\n return this.invitedAdminUser(item, index)\r\n })}\r\n \r\n
\r\n )\r\n }\r\n adminUser = (item, index) => {\r\n return (\r\n this.handleShowConfirmDeleteAdminUser(item.id, index)}\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n invitedAdminUser = (item, index) => {\r\n return (\r\n this.handleShowConfirmDeleteInvitedAdminUser(item.id, index)}\r\n >\r\n \r\n \r\n \r\n {\"Invited on \" + new Date(item.dateSent).toLocaleDateString()}\r\n \r\n \r\n \r\n )\r\n }\r\n adminUserInvitation = () => {\r\n if (this.state.showAdminUserInvitation) {\r\n return (\r\n \r\n this.setState({ showAdminUserInvitation: false })}\r\n />\r\n )\r\n }\r\n return null;\r\n } \r\n docs = () => {\r\n if (this.state.selectedClient) {\r\n return (\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n clientDocRow = (item, idx) => {\r\n return { id: item.documentID, clientName: item.clientName, altID: item.clientAltID, documentName: item.documentName, folderName: item.folderName, ext: item.extension, createDate: new Date(item.createDate).toLocaleDateString() + \" \" + new Date(item.createDate).toLocaleTimeString() }\r\n }\r\n clientDocList = () => {\r\n const columns = [\r\n { field: 'id', headerName: 'ID', width: 0, hide: true },\r\n { field: 'clientName', headerName: 'Client Name', width: 200, flex: 1 },\r\n { field: 'altID', headerName: 'Client ID', width: 130, flex: 1 },\r\n { field: 'folderName', headerName: 'Folder', width: 130, flex: 1 },\r\n { field: 'documentName', headerName: 'Document Name', width: 200, flex: 1 },\r\n { field: 'ext', headerName: 'Type', width: 130, flex: 1 },\r\n { field: 'createDate', headerName: 'Create Date', width: 130, flex: 1 },\r\n ];\r\n if (this.state.clientDocs && this.state.clientDocs.length > 0 && this.state.clientDocs !== \"error\") {\r\n const rows = this.state.clientDocs.map((item, index) => {\r\n return this.clientDocRow(item, index)\r\n })\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n docPreview = () => {\r\n if (this.state.selectedDocumentContent && this.state.showDocument) {\r\n return (\r\n this.setState({ showDocument: false })}\r\n fullWidth={true}\r\n disableButtons\r\n hideScroll={true}\r\n draggable={true}\r\n noUpperClose\r\n maxWidth=\"xl\"\r\n fullScreen={false}\r\n closeLabel=\"Close\"\r\n noBodyPad\r\n fullHeight\r\n >\r\n this.setState({ showDocument: false })}\r\n fullHeight={true}\r\n />\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n profilePic = () => {\r\n return (\r\n
this.setState({ showProfileImageUploader: true })}>\r\n {(this.state.business && this.state.business.profilePhoto && this.state.business.profilePhoto.fullPhoto) &&\r\n \r\n }\r\n
\r\n )\r\n }\r\n coverPic = () => {\r\n return (\r\n
this.setState({ showCoverImageUploader: true })}>\r\n {(this.state.business && this.state.business.coverPhoto && this.state.businessy.coverPhoto.fullPhoto) &&\r\n \r\n }\r\n
\r\n )\r\n } \r\n profileImageUploader = () => {\r\n return (\r\n this.setState({ showProfileImageUploader: false })}\r\n title=\"Upload Site Primary Image/Logo\"\r\n type={0} />\r\n )\r\n }\r\n coverImageUploader = () => {\r\n return (\r\n this.setState({ showCoverImageUploader: false })}\r\n title=\"Upload Site Cover Image\"\r\n type={1} />\r\n )\r\n }\r\n clientAdder = () => {\r\n return (\r\n this.setState({ showNewClient: false })}\r\n handleSave={this.state.mode === \"new\" ? this.handleSaveNewClient : this.handleSaveEditClient}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n closeLabel=\"Close\"\r\n\r\n >\r\n \r\n \r\n \r\n )\r\n } \r\n clientDeleter = () => {\r\n return (\r\n x.id === this.state.selectedClientID).name} and all associated data and documents will be deleted. Proceed?` : \"Client and all associated data and documents will be deleted. Proceed?\"}\r\n handleClose={() => this.setState({ showConfirmDeleteClient: false })}\r\n handleDelete={this.handleDeleteClient}\r\n fullWidth={false}\r\n maxWidth=\"sm\" />\r\n )\r\n }\r\n adminUserDeleter = () => {\r\n return (\r\n this.setState({ showConfirmDeleteAdminUser: false })}\r\n handleDelete={this.handleDeleteAdminUser}\r\n fullWidth={false}\r\n maxWidth=\"sm\" />\r\n )\r\n }\r\n invitedAdminUserDeleter = () => {\r\n return (\r\n this.setState({ showConfirmDeleteInvitedAdminUser: false })}\r\n handleDelete={this.handleDeleteInvitedAdminUser}\r\n fullWidth={false}\r\n maxWidth=\"sm\" />\r\n )\r\n }\r\n content = () => {\r\n return (\r\n this.props.dark ? theme.palette.backgroundSecondaryAlt.dark : theme.palette.backgroundSecondary.light, height: { xs: \"calc(100vh - 112px)\", lg:\"calc(100vh - 48px)\" }, }}\r\n className=\"prettyScroll\"\r\n >\r\n {this.state.loading\r\n ?\r\n \r\n \r\n \r\n\r\n :\r\n this.TabContainer()\r\n }\r\n {this.profileImageUploader()}\r\n {this.coverImageUploader()}\r\n {this.clientAdder()}\r\n {this.clientUserInvitation()}\r\n {this.adminUserInvitation()}\r\n {this.docPreview()}\r\n {this.state.showConfirmDeleteClient && this.clientDeleter()}\r\n {this.state.showConfirmDeleteAdminUser && this.adminUserDeleter()}\r\n {this.state.showConfirmDeleteInvitedAdminUser && this.invitedAdminUserDeleter()}\r\n
\r\n );\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.content();\r\n }\r\n}","export async function getGroups() {\r\n let url = 'org/getusergroups';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getGroupMembers(id) {\r\n let url = 'org/getgroupmembers?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getGroupInvitedMembers(id) {\r\n let url = 'org/getgroupinvitedmembers?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport function getGroupTypes() {\r\n return [{ value: 0, label: \"Private Group\" }, { value: 1, label: \"Public Group\" }];\r\n}\r\n\r\nexport async function newGroup(name, type) {\r\n const req = { GroupName: name, GroupType: type };\r\n const response = await fetch('org/creategroup', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editGroup(id, name) {\r\n const req = { GroupName: name, GroupID: id };\r\n const response = await fetch('org/editgroup', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteGroup(id) {\r\n const req = { GroupID: id };\r\n const response = await fetch(\"org/deletegroup\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\nexport async function removeMember(id) {\r\n const req = { GroupMemberID: id };\r\n const response = await fetch(\"org/removemember\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\nexport async function removeInvitation(id) {\r\n const req = { InvitationID: id };\r\n const response = await fetch(\"org/removeinvitation\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\nimport { Section } from '../Utilities/Section';\r\nimport { Invitation } from '../Invitations/Invitation';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\n\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\nimport Box from '@mui/material/Box';\r\nimport Typography from '@mui/material/Typography';\r\nimport Chip from '@mui/material/Chip';\r\n\r\n//Database Services\r\nimport { getGroupMembers, getGroupInvitedMembers, removeInvitation, removeMember } from '../../DataServices/GroupService'\r\n\r\nexport class Group extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showInvitation: false,\r\n showDeleteInvitation: false\r\n };\r\n } \r\n\r\n componentDidMount() {\r\n this.getGroupMembers();\r\n this.getGroupInvitedMembers();\r\n }\r\n\r\n //Get Data----------------------\r\n getGroupMembers = async () => {\r\n const members = await getGroupMembers(this.props.group.id);\r\n if (members) {\r\n this.props.updateGroupMembers(members, this.props.idx);\r\n }\r\n }\r\n getGroupInvitedMembers = async () => {\r\n const members = await getGroupInvitedMembers(this.props.group.id);\r\n if (members) {\r\n this.props.updateGroupInvitedMembers(members, this.props.idx);\r\n }\r\n }\r\n\r\n //Event Handlers-----------------\r\n handleAddNewMember = () => {\r\n this.setState({ showInvitation: true });\r\n }\r\n handleEditGroup = (e) => {\r\n\r\n }\r\n updateGroupInviteList = (users) => {\r\n console.log(users);\r\n\r\n if (users && users.length > 0) {\r\n const members = [...this.props.group.invitedMembers, ...users];\r\n this.props.updateGroupInvitedMembers(members, this.props.idx);\r\n }\r\n }\r\n handleShowDeleteMember = (user, idx) => {\r\n let type;\r\n let index;\r\n if (idx <= this.props.group.groupMembers.length - 1) {\r\n type = \"member\";\r\n index = idx;\r\n }\r\n else {\r\n type = \"invite\";\r\n index = idx - this.props.group.groupMembers.length;\r\n }\r\n if (type === \"member\") {\r\n\r\n this.setState({ selectedMember: this.props.group.groupMembers[index], selectedMemberType: \"member\", selectedMemberIDX: index, showDeleteInvitation: true });\r\n }\r\n else {\r\n this.setState({ selectedMember: this.props.group.invitedMembers[index], selectedMemberType: \"invite\", selectedMemberIDX: index, showDeleteInvitation: true });\r\n }\r\n\r\n }\r\n handleDeleteMember = async () => {\r\n this.setState({ showDeleteInvitation: false });\r\n\r\n if (this.state.selectedMemberType === \"member\") {\r\n const members = [...this.props.group.groupMembers];\r\n members.splice(this.state.selectedMemberIDX, 1);\r\n this.props.updateGroupMembers(members, this.props.idx);\r\n await removeMember(this.state.selectedMember.id);\r\n }\r\n else {\r\n const invited = [...this.props.group.invitedMembers];\r\n invited.splice(this.state.selectedMemberIDX, 1);\r\n this.props.updateGroupInvitedMembers(invited, this.props.idx);\r\n await removeInvitation(this.state.selectedMember.id);\r\n }\r\n }\r\n\r\n //Render Funcs\r\n userAvatar = (user, invited, idx) => {\r\n let name = user.firstName;\r\n if (user.lastName && user.lastName !== null && user.lastName !== \"null\" && user.lastName.length > 0) {\r\n name += \" \" + user.lastName; \r\n }\r\n let invitedText = \"Invited\";\r\n if (user.userID === null || !user.userID) {\r\n invitedText += \" by Email\";\r\n }\r\n let creator = user.userID === this.props.group.ownerID;\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n creator ? (this.props.dark ? theme.palette.common.white : theme.palette.common.black) : (this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack) }}>\r\n {name}\r\n \r\n {invited &&\r\n theme.palette.green.light}}>\r\n {invitedText}\r\n \r\n }\r\n {creator &&\r\n theme.palette.secondary.light }}>\r\n Group Creator\r\n \r\n }\r\n {(!creator && !invited) &&\r\n theme.palette.secondary.main }}>\r\n Active Member\r\n \r\n }\r\n \r\n )\r\n }\r\n groupInfo = () => {\r\n if (this.props.group) {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n )\r\n }\r\n return null;\r\n }\r\n member = (member, index) => {\r\n if (member && member.user && member.user.firstName) {\r\n return (\r\n \r\n {this.userAvatar(member.user, false, index)}\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n invitedMember = (member, index) => {\r\n if (member && member.user && member.user.firstName) {\r\n const idx = index + this.props.group.groupMembers.length;\r\n return (\r\n \r\n {this.userAvatar(member.user, true, idx)}\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n groupMembers = () => {\r\n return (\r\n \r\n \r\n {(this.props.group.groupMembers && this.props.group.groupMembers.length > 0) &&\r\n this.props.group.groupMembers.map((item, index) => {\r\n return this.member(item, index);\r\n })\r\n }\r\n {(this.props.group.invitedMembers && this.props.group.invitedMembers.length > 0) &&\r\n this.props.group.invitedMembers.map((item, index) => {\r\n return this.invitedMember(item, index);\r\n })\r\n }\r\n \r\n \r\n\r\n )\r\n }\r\n invitation = () => {\r\n if (this.state.showInvitation) {\r\n return (\r\n \r\n this.setState({ showInvitation: false })}\r\n inviteMessage={\"You have been invited to join the group \" + this.props.group.name}\r\n />\r\n )\r\n }\r\n return null;\r\n } \r\n memberDeleter = () => {\r\n return (\r\n this.setState({ showDeleteInvitation: false })}\r\n handleDelete={this.handleDeleteMember}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n />\r\n )\r\n }\r\n group = () => {\r\n return (\r\n \r\n {this.groupInfo()}\r\n {this.groupMembers()}\r\n {this.state.showInvitation && this.invitation()}\r\n {this.state.showDeleteInvitation && this.memberDeleter()}\r\n \r\n )\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.group(); \r\n }\r\n}\r\n","\r\nexport async function getFamilies() {\r\n let url = 'family/getallfamilies';\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function newFamily(name) {\r\n const req = { Name: name };\r\n const response = await fetch('family/createfamily', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editFamily(id, name) {\r\n const req = { Name: name, FamilyID: id };\r\n const response = await fetch('family/editfamily', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function deleteFamily(id) {\r\n const req = { FamilyID: id };\r\n const response = await fetch(\"family/deletefamily\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const success = await response.json();\r\n return success;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { ContextMenu } from '../Utilities/ContextMenu'\r\nimport { TextInput } from '../Utilities/TextInput'\r\nimport { SelectList } from '../Utilities/SelectList'\r\nimport { BusinessEditor } from '../Business/BusinessEditor'\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\nimport { Group } from './Group'\r\n\r\n//Database Services\r\nimport { getFamilies, newFamily, editFamily, deleteFamily } from '../../DataServices/FamilyService'\r\nimport { getGroups, newGroup, editGroup, deleteGroup, getGroupTypes } from '../../DataServices/GroupService'\r\nimport { getBusinesses, getBusinessTypes, getStateList, getUserAffiliations, newBusiness, getBusinessesByAdminUser } from '../../DataServices/BusinessService'\r\nimport { formatPhoneNumberInline, isValidURL } from '../../DataServices/Utility'\r\n\r\n//Material UI\r\nimport Alert from '@mui/material/Alert';\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\nimport Stack from '@mui/material/Stack';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Box from '@mui/material/Box';\r\nimport Typography from '@mui/material/Typography';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport { CardActionArea } from '@mui/material';\r\nimport AddIcon from '@mui/icons-material/Add';\r\n\r\n//Helper Functions\r\nconst a11yProps = (index, id) => {\r\n return {\r\n id: `simple-tab-${index}-${id}`,\r\n 'aria-controls': `simple-tabpanel-${index}`,\r\n };\r\n}\r\nconst TabPanel = (props) => {\r\n const { children, value, index, ...other } = props;\r\n return (\r\n
\r\n );\r\n}\r\n\r\n\r\nexport class Affiliations extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n dropDownLists: { businessTypes: [], states: [] },\r\n tabValue: 0,\r\n tabValueFamily: 0,\r\n showConfirmDeleteFamily: false,\r\n showConfirmDeleteFamilyMember: false,\r\n showEditFamily: false,\r\n showNewFamily: false,\r\n contextMenuFamily: null,\r\n contextMenuFamilyItems: [\r\n {\r\n callBack: this.handleShowEditFamily,\r\n label: \"Edit\"\r\n },\r\n {\r\n callBack: this.handleShowConfirmDeleteFamily,\r\n label: \"Delete\"\r\n },\r\n ],\r\n contextMenuFamily: null,\r\n tabValueFamily: 0,\r\n showNewFamily: false,\r\n showEditFamily: false,\r\n showConfirmDeleteFamily: false,\r\n contextMenuFamilyItems: [\r\n {\r\n callBack: this.handleShowEditFamily,\r\n label: \"Edit\"\r\n },\r\n {\r\n callBack: this.handleShowConfirmDeleteFamily,\r\n label: \"Delete\"\r\n },\r\n ],\r\n tabValueGroup: 0,\r\n selectedGroup: null,\r\n showNewGroup: false,\r\n contextMenuGroup: null,\r\n showConfirmDeleteGroup: false,\r\n contextMenuGroupItems: [\r\n {\r\n callBack: this.handleShowEditGroup,\r\n label: \"Rename\"\r\n },\r\n {\r\n callBack: this.handleShowConfirmDeleteGroup,\r\n label: \"Delete\"\r\n },\r\n ],\r\n showEditGroup: false,\r\n newGroupName: \"\",\r\n groupTypeID: 0,\r\n showNewBusiness: false,\r\n showBusinessEditor: false,\r\n typeValue: null,\r\n stateValue: null,\r\n followingLoaded: false,\r\n showGroup: false,\r\n selectedGroup: null,\r\n selectedGroupIDX: -1,\r\n businesses: []\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getFamilies();\r\n this.getGroups();\r\n this.getLists();\r\n this.getBusinesses();\r\n this.getAffiliations();\r\n }\r\n\r\n //Get Data----------------------\r\n getFamilies = async () => {\r\n const data = await getFamilies();\r\n if (data === 'error') {\r\n this.props.setToken('');\r\n return;\r\n }\r\n if (data) {\r\n this.setState({\r\n families: data\r\n });\r\n }\r\n }\r\n getGroups = async () => {\r\n const data = await getGroups();\r\n if (data === 'error') {\r\n this.props.setToken('');\r\n return;\r\n }\r\n if (data) {\r\n this.setState({\r\n groups: data\r\n });\r\n }\r\n }\r\n getMyBusinesses = async () => {\r\n const data = await getBusinesses();\r\n if (data) {\r\n this.setState({ businesses: data })\r\n }\r\n }\r\n getMyAdminBusinesses = async () => {\r\n const data = await getBusinessesByAdminUser();\r\n if (data) {\r\n const businesses = this.state.businesses;\r\n if (data.length > 0) {\r\n for (var i = 0; i < data.length; i++) {\r\n if (!businesses.find(x => x.id === data[i].id)) {\r\n businesses.push(data[i]);\r\n }\r\n }\r\n }\r\n this.setState({ businesses });\r\n }\r\n }\r\n getBusinesses = async () => {\r\n await this.getMyBusinesses();\r\n await this.getMyAdminBusinesses();\r\n this.setState({ loading: false });\r\n\r\n }\r\n getAffiliations = async () => {\r\n const data = await getUserAffiliations();\r\n if (data && data !== 'error') {\r\n this.setState({\r\n affiliations: data,\r\n });\r\n }\r\n else {\r\n this.props.setToken('');\r\n }\r\n }\r\n getLists = async () => {\r\n const typeList = await getBusinessTypes();\r\n if (typeList) {\r\n this.setState(state => {\r\n const dropDownLists = state.dropDownLists;\r\n dropDownLists.businessTypes = typeList;\r\n return { dropDownLists };\r\n });\r\n }\r\n const states = await getStateList();\r\n if (states) {\r\n this.setState(state => {\r\n const dropDownLists = state.dropDownLists;\r\n dropDownLists.states = states;\r\n return { dropDownLists };\r\n });\r\n }\r\n }\r\n\r\n //Event Handlers-----------------\r\n //Global\r\n handleTabChange = (event, newValue) => {\r\n this.setState({ tabValue: newValue });\r\n }\r\n\r\n //Family\r\n handleTabChangeFamily = (event, newValue) => {\r\n this.setState({\r\n tabValueFamily: newValue,\r\n selectedFamily: this.state.families[newValue]\r\n });\r\n }\r\n handleShowNewFamily = () => {\r\n this.setState({\r\n showNewFamily: true,\r\n newFamilyName: \"\",\r\n contextMenuFamily: null\r\n });\r\n }\r\n handleShowEditFamily = () => {\r\n this.setState({\r\n showEditFamily: true,\r\n contextMenuFamily: null\r\n });\r\n }\r\n handleShowConfirmDeleteFamily = () => {\r\n this.setState({\r\n showConfirmDeleteFamily: true,\r\n contextMenuFamily: null\r\n });\r\n }\r\n handleContextMenuFamily= (e, id, idx) => {\r\n e.preventDefault();\r\n if (this.state.contextMenuFamily === null) {\r\n this.setState({\r\n contextMenuFamily: {\r\n mouseX: e.clientX - 2,\r\n mouseY: e.clientY - 4,\r\n },\r\n selectedFamilyID: id,\r\n tabValueFamily: idx\r\n })\r\n }\r\n else {\r\n this.setState({\r\n contextMenuFamily: null,\r\n listName: \"\"\r\n });\r\n }\r\n\r\n }\r\n handleNewFamily = async () => {\r\n var ele = document.getElementById(\"newfamily\");\r\n if (ele) {\r\n const name = ele.value;\r\n if (name) {\r\n const meUser = this.props.user;\r\n meUser.avatarB64 = meUser.avatar;\r\n const id = await newFamily(name);\r\n var newitem = { id: id, familyName: name, members: [{ admin: true, user: meUser }] };\r\n this.setState(\r\n state => {\r\n state.groups.push(newitem);\r\n return state;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n handleEditFamily = async (id, item) => {\r\n var ele = document.getElementById(\"editfamily\");\r\n if (ele) {\r\n const name = ele.value;\r\n if (name) {\r\n const success = await editFamily(this.state.families[this.state.tabValueFamily].id, name);\r\n if (success) {\r\n this.setState(\r\n state => {\r\n state.families[this.state.tabValueFamily].name = name;\r\n state.showEdit = false;\r\n return state;\r\n }\r\n );\r\n }\r\n }\r\n ele.value = \"\";\r\n }\r\n }\r\n handleDeleteFamily = async () => {\r\n const idx = this.state.tabValueFamily;\r\n const id = this.state.families[this.state.tabValueFamily].id;\r\n\r\n this.setState(\r\n state => {\r\n state.families.splice(idx, 1);\r\n state.showConfirmDeleteFamily = false;\r\n this.state.families.length > 0 ? state.tabValueFamily = 0 : state.tabValueFamily = null;\r\n return state;\r\n }\r\n );\r\n await deleteFamily(id);\r\n }\r\n handleClickFamily = (id, idx) => {\r\n\r\n }\r\n\r\n //Groups\r\n handleTabChangeGroup = (event, newValue) => {\r\n this.setState({\r\n tabValueGroup: newValue,\r\n selectedGroup: this.state.groups[newValue]\r\n });\r\n }\r\n handleShowNewGroup = () => {\r\n this.setState({\r\n showNewGroup: true,\r\n newGroupName: \"\",\r\n contextMenuGroup: null\r\n });\r\n }\r\n handleShowEditGroup = () => {\r\n this.setState({\r\n showEditGroup: true,\r\n contextMenuGroup: null\r\n });\r\n }\r\n handleShowConfirmDeleteGroup = () => {\r\n this.setState({\r\n showConfirmDeleteGroup: true,\r\n contextMenuGroup: null\r\n });\r\n }\r\n handleContextMenuGroup = (e, id, idx) => {\r\n e.preventDefault();\r\n if (this.state.contextMenuGroup === null) {\r\n this.setState({\r\n contextMenuGroup: {\r\n mouseX: e.clientX - 2,\r\n mouseY: e.clientY - 4,\r\n },\r\n selectedGroupID: id,\r\n tabValueGroup: idx\r\n })\r\n }\r\n else {\r\n this.setState({\r\n contextMenuGroup: null,\r\n listName: \"\"\r\n });\r\n }\r\n\r\n }\r\n handleNewGroup = async () => {\r\n var name = document.getElementById(\"newgroup\").value;\r\n if (name) {\r\n const type = this.state.groupTypeID ?? 0;\r\n const meUser = this.props.user;\r\n meUser.avatarB64 = meUser.avatar;\r\n const id = await newGroup(name, type);\r\n var newitem = { id: id, name: name, members: [{ admin: true, user: meUser }] };\r\n this.setState(\r\n state => {\r\n state.showNewGroup = false;\r\n state.groups.push(newitem);\r\n return state;\r\n }\r\n );\r\n }\r\n\r\n }\r\n handleEditGroup = async (id, item) => {\r\n var ele = document.getElementById(\"editgroup\");\r\n if (ele) {\r\n const name = ele.value;\r\n if (name) {\r\n const success = await editGroup(this.state.groups[this.state.tabValueGroup].id, name);\r\n if (success) {\r\n this.setState(\r\n state => {\r\n state.groups[this.state.tabValueGroup].name = name;\r\n state.showEdit = false;\r\n return state;\r\n }\r\n );\r\n }\r\n }\r\n ele.value = \"\";\r\n }\r\n }\r\n handleDeleteGroup = async () => {\r\n const idx = this.state.tabValueGroup;\r\n const id = this.state.groups[this.state.tabValueGroup].id;\r\n await deleteGroup(id);\r\n\r\n\r\n this.setState(\r\n state => {\r\n state.groups.splice(idx, 1);\r\n state.showConfirmDeleteGroup = false;\r\n this.state.groups.length > 0 ? state.tabValueGroup = 0 : state.tabValueGroup = null;\r\n return state;\r\n }\r\n );\r\n\r\n }\r\n handleClickGroup = (group, idx) => {\r\n this.setState({ selectedGroup: group, selectedGroupIDX: idx,showGroup: true });\r\n }\r\n //business\r\n handleClickBusiness = (id, idx, name) => {\r\n this.setState({\r\n selectedBusinessID: id,\r\n selectedBusinessIDX: idx,\r\n selectedBusinessName: name,\r\n showBusinessEditor: true\r\n })\r\n }\r\n handleDeleteBusiness = (id, idx) => {\r\n\r\n }\r\n handleSaveNewBusiness = async () => {\r\n\r\n const name = document.getElementById(\"fldName\").value;\r\n const desc = document.getElementById(\"fldDesc\").value;\r\n const type = this.state.typeValue;\r\n const website = document.getElementById(\"fldWebsite\").value;\r\n let phone = document.getElementById(\"fldPhone\").value;\r\n if (phone) phone = phone.replace(/\\D/g, '');\r\n const street = document.getElementById(\"fldStreet\").value;\r\n const city = document.getElementById(\"fldCity\").value;\r\n const state = this.state.stateValue && this.state.dropDownLists.states.find((x) => x.value === this.state.stateValue).label;\r\n const zip = document.getElementById(\"fldZip\").value;\r\n const newBiz = await newBusiness(name, desc, type, street, city, state, zip, phone, website);\r\n this.setState(\r\n state => {\r\n const businesses = state.businesses.concat(newBiz);\r\n return {\r\n businesses,\r\n showNewBusiness: false,\r\n typeValue: null,\r\n stateValue: null\r\n };\r\n }\r\n );\r\n this.resetFormFields();\r\n }\r\n updateGroupMembers = (members, idx) => {\r\n let groups = this.state.groups;\r\n groups[idx].groupMembers = members;\r\n this.setState({ groups });\r\n this.forceUpdate();\r\n }\r\n updateGroupInvitedMembers = (members, idx) => {\r\n let groups = this.state.groups;\r\n groups[idx].invitedMembers = members;\r\n this.setState({ groups });\r\n this.forceUpdate();\r\n }\r\n handleStateChange = (e) => {\r\n this.setState({ stateValue: e.target.value });\r\n }\r\n handleTypeChange = (e) => {\r\n this.setState({ typeValue: e.target.value });\r\n }\r\n handlePhoneChange = (e) => {\r\n const formattedVal = formatPhoneNumberInline(e.target.value);\r\n e.target.value = formattedVal;\r\n }\r\n handleWebsiteBlur = (e) => {\r\n const val = e.target.value;\r\n if (val) {\r\n if (!isValidURL(val)) {\r\n this.setState({ InputURLError: true });\r\n }\r\n else {\r\n this.setState({ InputURLError: false });\r\n }\r\n }\r\n else {\r\n this.setState({ InputURLError: false });\r\n }\r\n\r\n }\r\n resetFormFields = () => {\r\n document.getElementById(\"fldName\").value = \"\";\r\n document.getElementById(\"fldDesc\").value = \"\";\r\n document.getElementById(\"fldWebsite\").value = \"\";\r\n document.getElementById(\"fldPhone\").value = \"\";\r\n document.getElementById(\"fldStreet\").value = \"\";\r\n document.getElementById(\"fldCity\").value = \"\";\r\n document.getElementById(\"fldZip\").value = \"\";\r\n this.setState({\r\n typeValue: 0,\r\n stateValue: 0,\r\n nameValue: null,\r\n descValue: null,\r\n websiteValue: null,\r\n phoneValue: null,\r\n streetValue: null,\r\n cityValue: null,\r\n zipValue: null,\r\n });\r\n }\r\n\r\n //Render Funcs\r\n userAvatar = (user, hideName) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n tabContainer = () => {\r\n return (\r\n \r\n this.props.dark ? \"#151515\" : theme.palette.secondary.main, boxShadow: this.props.dark ? 0 : 8 }} elevation={this.props.dark ? 0 : 8}>\r\n this.setState({ tabValue: newValue })} aria-label=\"content tabs\">\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n \r\n \r\n \r\n {this.families()}\r\n \r\n \r\n {this.groups()}\r\n \r\n \r\n {this.businesses()}\r\n \r\n \r\n {this.other()}\r\n \r\n \r\n )\r\n }\r\n sectionTitle = (title, tooltip,onClickAdd, noAction) => {\r\n return (\r\n \r\n {!noAction && }\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }}>\r\n {title}\r\n \r\n \r\n {!noAction &&\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.dimblack }}>\r\n \r\n \r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n //business\r\n businesses = () => {\r\n if (this.state.businesses) {\r\n return (\r\n \r\n {this.sectionTitle(\"Businesses\", \"New Business\", () => this.setState({ showNewBusiness: true }))}\r\n \r\n {this.state.businesses.map((item, index) => {\r\n return this.businessCard(item, index);\r\n })}\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n businessEditor = () => {\r\n if (this.state.selectedBusinessID) {\r\n return (\r\n this.setState({ showBusinessEditor: false })}\r\n fullWidth={true}\r\n fullScreen={true}\r\n solid={true}\r\n hideScroll={true}\r\n fullHeight\r\n disableButtons\r\n maxWidth=\"xl\"\r\n noPad\r\n >\r\n < BusinessEditor\r\n dark={this.props.dark}\r\n businessID={this.state.selectedBusinessID}\r\n businessName={this.state.selectedBusinessName}\r\n dropDownLists={this.state.dropDownLists}\r\n handleClose={() => this.setState({ showBusinessEditor: false })}\r\n editorLoaded={() => this.setState({ editorLoaded: true })}\r\n appIdentifier={this.props.appIdentifier}\r\n user={this.props.user}\r\n />\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n businessAdder = () => {\r\n return (\r\n this.setState({ showNewBusiness: false })}\r\n handleSave={this.handleSaveNewBusiness}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n closeLabel=\"Close\"\r\n\r\n >\r\n \r\n \r\n \r\n \r\n\r\n \r\n {this.state.InputURLError &&\r\n Not a valid web address\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n )\r\n }\r\n businessCard = (item, index) => {\r\n return (\r\n this.props.dark && theme.palette.card.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }} raised elevation={this.props.dark ? 1 : 8}>\r\n this.handleClickBusiness(item.id, index, item.businessName)} sx={{ p: 1}}>\r\n \r\n \r\n {item.businessName}\r\n \r\n \r\n {item.description}\r\n \r\n \r\n {item.website.replace('http://', '').replace('https://','')}\r\n \r\n \r\n {item.streetAddress}\r\n \r\n \r\n {`${item.city}, ${item.state} ${item.zip}`}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n //groups\r\n groupCreator = () => {\r\n if (this.state.showNewGroup) {\r\n return (\r\n this.setState({ showNewGroup: false })}\r\n handleSave={this.handleNewGroup}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n this.setState({ groupTypeID: e.target.value })}\r\n listItems={getGroupTypes()}\r\n />\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n groupCard = (item, index) => {\r\n return (\r\n this.props.dark && theme.palette.card.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }} raised elevation={this.props.dark ? 1 : 8}>\r\n this.handleClickGroup(item, index)} onContextMenu={(e) => this.handleContextMenuGroup(e, item.id, index)} sx={{ p: 1 }}>\r\n \r\n \r\n {item.name}\r\n \r\n \r\n {item.type}\r\n \r\n \r\n {(item.groupMembers && item.groupMembers.length > 0) ? item.groupMembers.length + (item.groupMembers.length == 1 ? \" member\" : \" members\") : \"No members\"}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n groups = () => {\r\n if (this.state.groups) {\r\n return (\r\n \r\n {this.sectionTitle(\"My Groups\", \"New Group\", () => this.setState({ showNewGroup: true })) }\r\n \r\n {this.state.groups.map((item, index) => {\r\n return this.groupCard(item, index);\r\n }) }\r\n \r\n {this.state.selectedGroup && this.groupManager()}\r\n \r\n )\r\n }\r\n return null;\r\n }\r\n groupDeleteConfirmation = () => {\r\n return (\r\n this.setState({ showConfirmDeleteGroup: false })}\r\n handleDelete={this.handleDeleteGroup}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n />\r\n )\r\n\r\n }\r\n groupContextMenu = () => {\r\n return (\r\n this.setState({ contextMenuGroup: null })}\r\n contextMenu={this.state.contextMenuGroup}\r\n menuItems={this.state.contextMenuGroupItems}\r\n id=\"Groupctx\" />\r\n )\r\n }\r\n groupEditor = () => {\r\n if (this.state.showEditGroup) {\r\n return (\r\n this.setState({ showEditGroup: false })}\r\n handleSave={this.handleEditGroup}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n groupManager = () => {\r\n if (this.state.showGroup && this.state.selectedGroup) {\r\n return (\r\n this.setState({ showGroup: false })}\r\n fullWidth={true}\r\n fullScreen={false}\r\n hideScroll={true}\r\n fullHeight\r\n disableButtons\r\n maxWidth=\"lg\"\r\n noPad\r\n >\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n\r\n //family\r\n families = () => {\r\n if (this.state.families) {\r\n return (\r\n \r\n {this.sectionTitle(\"My Families\", \"New Family\", () => this.setState({ showNewFamily: true }))}\r\n \r\n {this.state.families.map((item, index) => {\r\n return this.familyCard(item, index);\r\n })}\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n familyDeleteConfirmation = () => {\r\n return (\r\n this.setState({ showConfirmDeleteFamily: false })}\r\n handleDelete={this.handleDeleteFamily}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n />\r\n )\r\n\r\n }\r\n familyContextMenu = () => {\r\n return (\r\n this.setState({ contextMenuFamily: null })}\r\n contextMenu={this.state.contextMenuFamily}\r\n menuItems={this.state.contextMenuFamilyItems}\r\n id=\"Familyctx\" />\r\n )\r\n }\r\n familyEditor = () => {\r\n if (this.state.showEditFamily) {\r\n return (\r\n this.setState({ showEditFamily: false })}\r\n handleSave={this.handleEditFamily}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n familyCreator = () => {\r\n return (\r\n this.setState({ showNewFamily: false })}\r\n handleSave={this.handleAddFamily}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n familyCard = (item, index) => {\r\n return (\r\n this.props.dark && theme.palette.card.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }} raised elevation={this.props.dark ? 1 : 8}>\r\n this.handleClickFamily(item.id, index)} onContextMenu={(e) => this.handleContextMenuFamily(e, item.id, index)} sx={{ p: 1 }}>\r\n \r\n \r\n {item.familyName}\r\n \r\n \r\n {(item.members && item.members.length > 0) ? item.members.length + (item.members.length == 1 ? \" member\" : \" members\") : \"No members\"}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n //other affiliations\r\n other = () => {\r\n if (this.state.affiliations) {\r\n return (\r\n \r\n {this.sectionTitle((this.state.affiliations && this.state.affiliations.length > 0) ? \"My Affiliations to Other Businesses\" : \"No Current Affilations to Other Businesses\", \"\", null, true)}\r\n \r\n {this.state.affiliations.map((item, index) => {\r\n return this.otherCard(item, index);\r\n })}\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n otherCard = (item, index) => {\r\n return (\r\n this.props.dark && theme.palette.card.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }} raised elevation={this.props.dark ? 1 : 8}>\r\n \r\n \r\n \r\n {item.targetName}\r\n \r\n \r\n {item.desc}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n //main component render\r\n render() {\r\n return (\r\n <>\r\n {this.tabContainer()}\r\n {this.familyDeleteConfirmation()}\r\n {this.familyContextMenu()}\r\n {this.familyEditor()}\r\n {this.familyCreator()}\r\n {this.groupDeleteConfirmation()}\r\n {this.groupContextMenu()}\r\n {this.groupEditor()}\r\n {this.groupCreator()}\r\n {this.businessEditor()}\r\n {this.businessAdder()}\r\n \r\n )\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\n\r\n//Database Services\r\nimport { getUserFollowers, getUsersFollowing } from '../../DataServices/UserService'\r\nimport { getMentionsByUser } from '../../DataServices/MentionsService'\r\nimport { getMyReactions } from '../../DataServices/ReactionService'\r\nimport { getMyComments } from '../../DataServices/CommentService'\r\n\r\n//Material UI\r\nimport Tabs from '@mui/material/Tabs';\r\nimport Tab from '@mui/material/Tab';\r\nimport Box from '@mui/material/Box';\r\nimport Typography from '@mui/material/Typography';\r\nimport Card from '@mui/material/Card';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport { CardActionArea } from '@mui/material';\r\n\r\n//Helper Functions\r\nconst a11yProps = (index, id) => {\r\n return {\r\n id: `simple-tab-${index}-${id}`,\r\n 'aria-controls': `simple-tabpanel-${index}`,\r\n };\r\n}\r\nconst TabPanel = (props) => {\r\n const { children, value, index, ...other } = props;\r\n return (\r\n
\r\n );\r\n}\r\n\r\nexport class Activity extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tabValue: 0,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getFollowers();\r\n this.getFollowing();\r\n this.getMentions();\r\n this.getReactions();\r\n this.getComments();\r\n }\r\n\r\n //Get Data----------------------\r\n getFollowers = async () => {\r\n const data = await getUserFollowers();\r\n if (data && data !== 'error') {\r\n this.setState({ followers: data });\r\n }\r\n }\r\n getFollowing = async () => {\r\n const data = await getUsersFollowing();\r\n if (data && data !== 'error') {\r\n this.setState({\r\n following: data,\r\n followingLoaded: true\r\n });\r\n }\r\n }\r\n getMentions = async () => {\r\n const data = await getMentionsByUser(this.props.user.userID);\r\n if (data && data !== 'error') {\r\n this.setState({ mentions: data });\r\n }\r\n }\r\n getReactions = async () => {\r\n const data = await getMyReactions();\r\n if (data && data !== 'error') {\r\n this.setState({ reactions: data });\r\n }\r\n }\r\n getComments = async () => {\r\n const data = await getMyComments(0, 20);\r\n if (data && data !== 'error') {\r\n this.setState({ comments: data });\r\n }\r\n }\r\n\r\n //Event Handlers-----------------\r\n //Global\r\n handleTabChange = (event, newValue) => {\r\n this.setState({ tabValue: newValue });\r\n }\r\n\r\n //Render Funcs\r\n userAvatar = (user, hideName) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n tabContainer = () => {\r\n return (\r\n \r\n this.props.dark ? \"#151515\" : theme.palette.secondary.main, boxShadow: this.props.dark ? 0 : 8 }} elevation={this.props.dark ? 0 : 8}>\r\n this.setState({ tabValue: newValue })} aria-label=\"content tabs\">\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white }} />\r\n \r\n \r\n \r\n {this.following()}\r\n \r\n \r\n {this.followers()}\r\n \r\n \r\n {this.mentions()}\r\n \r\n \r\n {this.reactions()}\r\n \r\n \r\n {this.comments()}\r\n \r\n \r\n )\r\n }\r\n\r\n following = () => {\r\n if (this.state.following && this.state.following.length > 0) {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n Users I am following\r\n \r\n \r\n {this.state.following.map((item, index) => {\r\n return this.userAvatar(item.user, false);\r\n })}\r\n \r\n )\r\n }\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n You are not following any users..\r\n \r\n \r\n\r\n )\r\n }\r\n followers = () => {\r\n if (this.state.followers && this.state.followers.length > 0) {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n Users following me\r\n \r\n \r\n {this.state.followers.map((item, index) => {\r\n return this.userAvatar(item.user, false);\r\n })}\r\n \r\n )\r\n }\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n You have no followers.\r\n \r\n \r\n\r\n )\r\n }\r\n mentions = () => {\r\n if (this.state.mentions && this.state.mentions.length > 0) {\r\n return (\r\n\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n Where I have been mentioned\r\n \r\n \r\n {this.state.mentions.map((item, index) => {\r\n return (\r\n \r\n {this.userAvatar(item.mentioningUser, true)}\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n {item.mentioningUser.firstName + \" \" + item.mentioningUser.lastName + \" mentioned you on \" + new Date(item.createDate).toLocaleDateString()}\r\n \r\n \r\n\r\n )\r\n })}\r\n \r\n )\r\n }\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n You have no mentions.\r\n \r\n \r\n )\r\n }\r\n reactions = () => {\r\n if (this.state.reactions && this.state.reactions.length > 0) {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n Reactions I have left\r\n \r\n \r\n {this.state.reactions.map((item, index) => {\r\n let r = \"liked\";\r\n if (item.reactionTypeID === 1)\r\n r = \"loved\";\r\n return (\r\n \r\n this.props.dark && theme.palette.card.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }} raised elevation={this.props.dark ? 1 : 4}>\r\n \r\n \r\n \r\n {\"You \" + r + \" a \" + item.targetTypeDesc}\r\n \r\n \r\n {new Date(item.reactionDate).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 return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n You have not left any reactions.\r\n \r\n \r\n )\r\n }\r\n comments = () => {\r\n if (this.state.comments && this.state.comments.length > 0) {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n Comments I have left\r\n \r\n \r\n {this.state.comments.map((item, index) => {\r\n return (\r\n \r\n this.props.dark && theme.palette.card.dark, color: (theme) => this.props.dark && theme.palette.common.dimwhite }} raised elevation={this.props.dark ? 1 : 4}>\r\n \r\n \r\n \r\n {item.commentText}\r\n \r\n \r\n {new Date(item.commentDate).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 return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n You have not posted any comments.\r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.tabContainer(); \r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\n\r\n//Material UI\r\nimport Grid from '@mui/material/Grid';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport Paper from '@mui/material/Paper';\r\nimport Box from '@mui/material/Box';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nexport class Message extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n anchorEl: null,\r\n };\r\n }\r\n\r\n //event handlers\r\n handleClose = () => {\r\n this.setState({ anchorEl: null });\r\n };\r\n handleDelete = (id, idx) => {\r\n this.handleClose();\r\n this.props.handleDelete(id, idx);\r\n }\r\n handleEdit = (id, idx) => {\r\n this.handleClose();\r\n this.props.handleEdit(id, idx);\r\n }\r\n userAvatar = (me) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n msgMenu = () => {\r\n return (\r\n this.setState({ anchorEl: null })}\r\n PaperProps={{ style: { backgroundColor: this.props.dark ? \"#333\" : \"#e0e0e0\", color: this.props.dark ? \"#ccc\" : \"#444\" } }}\r\n MenuListProps={{ style: { backgroundColor: this.props.dark ? \"#333\" : \"#e0e0e0\", color: this.props.dark ? \"#ccc\" : \"#444\" } }}\r\n >\r\n this.handleEdit(this.props.message.id, this.props.index)}>Edit\r\n this.handleDelete(this.props.message.id, this.props.index)}>Delete\r\n \r\n )\r\n }\r\n editButton = () => {\r\n return (\r\n \r\n this.setState({ anchorEl: e.currentTarget })}>\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }} />\r\n \r\n \r\n )\r\n }\r\n composingContents = () => {\r\n return (\r\n <>\r\n {this.props.message.fromMe && }\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n )\r\n }\r\n messageContents = () => {\r\n return (\r\n\r\n \r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black, fontSize: { xs: \"1rem\" , sm: \".9rem\"} }}>\r\n {this.props.message.content}\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack, fontSize: \".7rem\" }}>\r\n {this.props.message.whenPosted ?? new Date(this.props.message.postDate).toLocaleDateString()}\r\n \r\n \r\n\r\n )\r\n }\r\n contents = () => {\r\n return (\r\n \r\n {!this.props.message.fromMe && this.userAvatar(false)}\r\n this.props.message.fromMe && this.setState({ anchorEl: e.currentTarget })} >\r\n this.props.dark ? (this.props.message.fromMe ? theme.palette.comment.dark : theme.palette.reply.dark) : (this.props.message.fromMe ? theme.palette.comment.light : theme.palette.reply.light),\r\n }}>\r\n \r\n {this.props.message.status === \"Composing\"\r\n ?\r\n this.composingContents()\r\n :\r\n this.messageContents()\r\n }\r\n \r\n \r\n\r\n \r\n {this.props.message.fromMe && this.userAvatar(true)}\r\n {this.msgMenu()}\r\n \r\n )\r\n }\r\n render() {\r\n return this.contents();\r\n }\r\n}\r\n\r\n //{this.props.message.fromMe && this.editButton()}\r\n // {this.props.message.fromMe && }","import React, { Component } from 'react';\r\n\r\n//Custom components\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { Message } from './Message'\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { Spin } from '../Utilities/Spin';\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport List from '@mui/material/List';\r\n\r\nlet composing = false;\r\n\r\nexport class Chat extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n refreshSeconds: 15,\r\n loading: true,\r\n messages: [],\r\n anchorEl: null,\r\n showEmojiPicker: false,\r\n avatars: [],\r\n refreshing: false,\r\n composing: false,\r\n lastLoadedMessageID: \"\",\r\n messageToEdit: \"\",\r\n showEditMessage: false\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevProps.threadID !== this.props.threadID) {\r\n this.setState({ messages: [] });\r\n this.getThread();\r\n }\r\n }\r\n componentDidMount() {\r\n this.initialize();\r\n setTimeout(\r\n this.interval = setInterval(() => {\r\n this.getNewMessages();\r\n }, this.state.refreshSeconds * 1000),\r\n 30000);\r\n }\r\n componentWillUnmount() {\r\n clearInterval(this.interval);\r\n if (this.state.newMessageID && this.state.composing) {\r\n this.handleDeleteMessage(this.state.newMessageID);\r\n }\r\n }\r\n initialize = async () => {\r\n const me = { userID: this.props.user.userID, avatarB64: this.props.user.avatar, firstName: this.props.user.firstName, lastName: this.props.user.lastName };\r\n this.setState({ me: me });\r\n await this.getThread();\r\n setTimeout(this.scrollToBottom,100);\r\n }\r\n refresh = () => { this.initialize(); }\r\n cleanseThread = async (messages) => {\r\n if (this.state.messages && this.state.messages.length > 0) {\r\n for (var i = 0; i < messages.length - 1; i++) {\r\n if (messages[i].status === \"Composing\") {\r\n this.handleDeleteMessage(messages[i].id);\r\n }\r\n }\r\n\r\n if (!this.state.composing && messages[messages.length - 1].fromMe && messages[messages.length - 1].status === \"Composing\") {\r\n this.handleDeleteMessage(messages[messages.length - 1].id);\r\n }\r\n }\r\n }\r\n getThread = async () => {\r\n if (!this.state.refreshing) {\r\n this.setState({ refreshing: true });\r\n const response = await fetch('messenger/getthread?id=' + this.props.threadID);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data.id === this.props.threadID) {\r\n await this.cleanseThread(data.messages);\r\n if (data.members && data.members.length > 0) {\r\n for (var i = 0; i < data.messages.length; i++) {\r\n let localAvatar = data.members.find((item) => item.userID === data.messages[i]?.user.userID);\r\n if (localAvatar) {\r\n data.messages[i].user.avatarB64 = localAvatar.avatarB64;\r\n }\r\n }\r\n }\r\n\r\n this.setState(\r\n state => {\r\n state.messages = data.messages;\r\n state.users = data.members;\r\n state.refreshing = false;\r\n state.loading = false;\r\n state.lastLoadedMessageID = (data.messages && data.messages.length > 0) && data.messages[data.messages.length - 1].id;\r\n return state;\r\n }\r\n );\r\n this.forceUpdate();\r\n this.scrollToBottom();\r\n }\r\n else {\r\n this.setState({ refreshing: false, loading: false, lastUpdate: new Date().toUTCString() });\r\n }\r\n this.scrollToBottom();\r\n }\r\n else {\r\n this.setState({ refreshing: false, loading: false, lastUpdate: new Date().toUTCString() });\r\n }\r\n }\r\n }\r\n getNewMessages = async () => {\r\n\r\n if (!this.state.loading && !this.state.refreshing) {\r\n const response = await fetch('messenger/getnewmessages?threadid=' + this.props.threadID + \"&lastmessageid=\" + this.state.lastLoadedMessageID);\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n if (data && data.length > 0) {\r\n await this.cleanseThread(data);\r\n if (this.state.users && this.state.users.length > 0) {\r\n for (var i = 0; i < data.length; i++) {\r\n let localAvatar = this.state.users.find((item) => item.userID === data[i].user.userID);\r\n if (localAvatar) {\r\n data[i].user.avatarB64 = localAvatar.avatarB64;\r\n }\r\n }\r\n }\r\n\r\n this.setState(\r\n state => {\r\n for (var i = 0; i < data.length; i++) {\r\n state.messages.push(data[i]);\r\n }\r\n \r\n state.refreshing = false;\r\n state.loading = false;\r\n state.lastLoadedMessageID = data[data.length - 1].id;\r\n return state;\r\n }\r\n );\r\n\r\n }\r\n }\r\n }\r\n }\r\n setAvatars = async () => {\r\n if (this.state.messages && this.state.messages.length > 0) {\r\n let avatars = [];\r\n for (var i = 0; i < this.state.messages.length; i++) {\r\n let user = this.state.messages[i].user;\r\n let localAvatar = this.state.avatars.find((x) => x.id === user.userID);\r\n if (!localAvatar) {\r\n let avatar = await this.getAvatar(user);\r\n if (avatar) {\r\n avatars.push(avatar);\r\n }\r\n \r\n }\r\n }\r\n this.setState({ avatars: avatars });\r\n }\r\n }\r\n getAvatar = async (user) => {\r\n const response = await fetch('home/getuseravatar?userid=' + user.userID);\r\n const userinfo = await response.json();\r\n if (userinfo && userinfo.avatarB64) {\r\n const avatar = { id: user.userID, avatar: userinfo.avatarB64 };\r\n return avatar;\r\n }\r\n return null;\r\n }\r\n scrollToBottom = () => {\r\n if (this.messagesEnd) {\r\n this.messagesEnd.scrollIntoView({ behavior: \"smooth\" });\r\n //{ behavior: \"smooth\" }\r\n }\r\n }\r\n handleKeyPress = (event) => {\r\n if (event.key === 'Enter') {\r\n this.handlePostMessage();\r\n }\r\n }\r\n startMessage = async () => {\r\n const response = await fetch('messenger/startmessage?threadid=' + this.state.threadID, {\r\n method: 'POST'\r\n })\r\n const messageID = await response.json();\r\n return messageID;\r\n }\r\n handlePostMessage = async () => {\r\n\r\n const msg = document.getElementById(\"fldNewMessage\").value;\r\n document.getElementById(\"fldNewMessage\").value = \"\";\r\n\r\n const post = {\r\n id: \"newposttempid\",\r\n content: msg,\r\n postDate: new Date(),\r\n whenPosted: \"just now\",\r\n fromMe: true,\r\n user: this.state.me\r\n };\r\n\r\n this.setState(\r\n state => {\r\n state.messages.push(post);\r\n state.newMessageID = null;\r\n return state;\r\n }\r\n );\r\n\r\n const req = { ThreadID: this.props.threadID, Content: msg };\r\n const response = await fetch('messenger/postmessage', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n this.setState(\r\n state => {\r\n state.messages.find((x) => x.id === \"newposttempid\").id = data;\r\n state.lastLoadedMessageID = data;\r\n return state;\r\n }\r\n );\r\n\r\n }\r\n\r\n this.scrollToBottom();\r\n }\r\n handleStartMessage = async () => {\r\n if (!composing) {\r\n composing = true;\r\n\r\n const response = await fetch('messenger/startmessage?threadid=' + this.state.threadID, {\r\n method: 'POST'\r\n })\r\n const messageID = await response.json();\r\n\r\n const post = {\r\n id: messageID,\r\n content: \"Typing...\",\r\n postDate: new Date(),\r\n whenPosted: \"just now\",\r\n fromMe: true,\r\n status: \"Composing\",\r\n user: this.state.me ?? { firstName: \"Me\", lastName: \"\" }\r\n };\r\n\r\n this.setState(\r\n state => {\r\n state.messages.unshift(post);\r\n state.newMessageID = messageID;\r\n return state;\r\n }\r\n );\r\n }\r\n else {\r\n if (document.getElementById(\"fldNewMessage\").value === \"\" && this.state.newMessageID) {\r\n this.handleDeleteMessage(this.state.newMessageID);\r\n this.setState({ newMessageID: null });\r\n }\r\n }\r\n }\r\n handleEditMessage = async (id, idx) => {\r\n\r\n const msg = this.state.messages[idx].content;\r\n this.setState({\r\n messageToEdit: msg,\r\n showEditMessage: true,\r\n selectedMessageIDX: idx,\r\n selectedMessageID: id\r\n })\r\n\r\n }\r\n handleSaveEditMessage = async () => {\r\n const ele = document.getElementById(\"editmessage\");\r\n if (ele) {\r\n const msg = ele.value;\r\n const id = this.state.selectedMessageID;\r\n\r\n this.setState(\r\n state => {\r\n state.messages[this.state.selectedMessageIDX].content = msg;\r\n state.showEditMessage = false;\r\n state.selectedMessageID = null;\r\n state.selectedMessageIDX = null;\r\n return state;\r\n }\r\n );\r\n\r\n ele.value = \"\";\r\n const req = { MessageID: id, Content: msg };\r\n await fetch('messenger/editmessage', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n }\r\n }\r\n handleDeleteMessage = async (id, idx) => {\r\n this.setState(\r\n state => {\r\n state.messages.splice(idx, 1);\r\n return state;\r\n }\r\n );\r\n const req = { MessageID: id };\r\n await fetch('messenger/deletemessage', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n\r\n }\r\n handleSelectEmoji = (emoji) => {\r\n\r\n const ele = document.getElementById(\"fldNewMessage\");\r\n ele.value = ele.value + emoji.emoji;\r\n ele.click();\r\n ele.focus();\r\n }\r\n\r\n //render funcs\r\n composer = () => {\r\n return (\r\n this.props.dark ? \"#191919\" : \"#f2f3f7\", borderTop: this.props.dark ? \"solid 1px #222\" : \"solid 1px #ddd\", p:1}} >\r\n \r\n \r\n )\r\n }\r\n messages = () => {\r\n return (\r\n this.props.dark ? \"transparent\" : \"transparent\",\r\n maxHeight: { xs: \"calc(100vh - 230px)\", sm: \"calc(100vh - 238px)\", lg: \"calc(100vh - 182px)\" },\r\n\r\n p: 1,\r\n maxWidth: \"1200px\",\r\n height: \"100%\"\r\n }}\r\n >\r\n\r\n \r\n {(this.state.messages && this.state.messages.length > 0) &&\r\n this.state.messages.map((msg, index) => (\r\n \r\n ))\r\n }\r\n
{ this.messagesEnd = el; }}>\r\n
\r\n
\r\n\r\n
\r\n )\r\n }\r\n messageEditor = () => {\r\n return (\r\n this.setState({ showEditMessage: false })}\r\n handleSave={this.handleSaveEditMessage}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n contents = () => {\r\n let contents = this.state.loading\r\n ?\r\n \r\n :\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n backgroundColor: \"transparent\",\r\n borderTop: this.props.dark ? \"1px solid #222\" : \"none\"\r\n }}\r\n key=\"chatitemexplorer\"\r\n >\r\n {this.messages()}\r\n {this.composer()}\r\n {this.state.showEditMessage && this.messageEditor()}\r\n
\r\n return contents;\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.contents();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom compoonents\r\nimport { Chat } from './Chat';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { UserAvatar } from '../Utilities/UserAvatar';\r\n\r\n//Material UI\r\nimport Drawer from '@mui/material/Drawer';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport Box from '@mui/material/Box';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@mui/material/Button';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Paper from '@mui/material/Paper';\r\nimport Chip from '@mui/material/Chip';\r\nimport AvatarGroup from '@mui/material/AvatarGroup';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport ListItemAvatar from '@mui/material/ListItemAvatar'\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\nimport PeopleIcon from '@mui/icons-material/People';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport Badge from '@mui/material/Badge';\r\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\r\n\r\nconst arrayToList = (array) => {\r\n return array\r\n .join(\", \")\r\n .replace(/, ((?:.(?!, ))+)$/, ' and $1');\r\n}\r\n\r\nexport class ChatDrawer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n threads : [],\r\n avatars: [],\r\n loading: true,\r\n title: this.props.title ?? \"Conversations\",\r\n selectedThread: null,\r\n showConfirmDeleteThread: false,\r\n searchResults: [],\r\n newMessageRecipients: []\r\n } \r\n }\r\n\r\n componentDidMount() {\r\n this.getThreads();\r\n }\r\n getThreads = async () => {\r\n const response = await fetch('messenger/getuserthreads');\r\n if (response.status !== 200) {\r\n this.props.setToken('');\r\n this.setState({ threads: [], loading: false });\r\n }\r\n else {\r\n const data = await response.json();\r\n this.setState({ threads: data, loading: false });\r\n }\r\n }\r\n\r\n //event handlers\r\n handleDeleteThread = (item, idx) => {\r\n this.setState({\r\n selectedThreadID: item.id,\r\n selectedThreadIDX: idx,\r\n showConfirmDeleteThread: true\r\n })\r\n }\r\n handleConfirmDeleteThread = async () => {\r\n\r\n this.setState(\r\n state => {\r\n state.threads.splice(this.state.selectedThreadIDX, 1);\r\n return state;\r\n }\r\n );\r\n\r\n this.setState({\r\n selectedThreadID: null,\r\n selectedThreadIDX: null,\r\n showConfirmDeleteThread: false\r\n });\r\n\r\n const req = { ThreadID: this.state.selectedThreadID };\r\n await fetch('messenger/removethread', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n\r\n\r\n }\r\n handleSelectThread = (item, names) => {\r\n this.setState({\r\n selectedThread: item.id,\r\n title: \"Chat with \" + names\r\n });\r\n }\r\n handleUnSelectThread = () => {\r\n this.setState({\r\n selectedThread: null,\r\n title: \"Conversations\"\r\n });\r\n }\r\n validateMember = async (name) => {\r\n if (!this.state.validating) {\r\n this.setState({ validating: true });\r\n if (name) {\r\n const response = await fetch('messenger/searchusersbyname?name=' + name)\r\n const searchResults = await response.json();\r\n if (searchResults && searchResults.length > 0) {\r\n this.setState({ searchResults: searchResults });\r\n for (var i = 0; i < searchResults.length; i++) {\r\n let avatar = await this.getUserInfo(searchResults[i].userID);\r\n if (avatar) {\r\n try {\r\n //this.setState(\r\n // state => {\r\n // state.searchResults[i].avatarB64 = avatar;\r\n // return state;\r\n // }\r\n //);\r\n }\r\n catch {\r\n console.log(\"error setting avatar image\");\r\n }\r\n }\r\n\r\n }\r\n }\r\n else {\r\n this.setState({ searchResults: [] });\r\n }\r\n }\r\n else {\r\n this.setState({ searchResults: [] });\r\n }\r\n this.setState({ validating: false });\r\n }\r\n\r\n }\r\n handleKeyPress2 = async (event) => {\r\n if (event.keyCode === 9) {\r\n event.preventDefault();\r\n }\r\n if (event.key === 'Enter' || event.keyCode === 9) {\r\n const name = event.target.value;\r\n if (this.validateEmail(name)) {\r\n const user = await this.checkIfUserExists(name);\r\n if (user) {\r\n this.addExistingUser(user);\r\n }\r\n\r\n }\r\n }\r\n }\r\n addExistingUser = (user) => {\r\n this.setState(\r\n state => {\r\n const newMessageRecipients = state.newMessageRecipients.concat(user);\r\n return { newMessageRecipients, searchResults: [] };\r\n }\r\n );\r\n document.getElementById(\"newThreadMember\").value = \"\";\r\n document.getElementById(\"newThreadMember\").focus();\r\n }\r\n deleteNewRecipientHandler = (idx) => {\r\n this.setState(state => {\r\n const newMessageRecipients = state.newMessageRecipients.filter((item, j) => idx !== j);\r\n return { newMessageRecipients, };\r\n });\r\n }\r\n getUserInfo = async (id) => {\r\n if (id) {\r\n const response = await fetch('home/getuseravatar?userid=' + id);\r\n const userinfo = await response.json();\r\n if (userinfo) {\r\n return userinfo.avatarB64;\r\n }\r\n }\r\n return null;\r\n }\r\n handleSelectMessageRecipient = async (idx) => {\r\n const user = this.state.searchResults[idx];\r\n this.addExistingUser(user);\r\n }\r\n handleStartThread = async () => {\r\n const req = { Title: \"New Conversation\" };\r\n const response = await fetch('messenger/startthread', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n });\r\n if (response.status === 200) {\r\n const threadID = await response.json();\r\n const newThread = { id: threadID, createDate: new Date(), lastMessageDate: \"Just now\", members: this.state.newMessageRecipients, messages: [] };\r\n this.setState(\r\n state => {\r\n state.threads.unshift(newThread);\r\n return state;\r\n }\r\n );\r\n\r\n\r\n\r\n let members = [];\r\n if (this.state.newMessageRecipients && this.state.newMessageRecipients.length > 0) {\r\n for (var i = 0; i < this.state.newMessageRecipients.length; i++) {\r\n members.push(this.state.newMessageRecipients[i].userID);\r\n }\r\n const req2 = { ThreadID: threadID, Users: members };\r\n const response2 = await fetch('messenger/addthreadusers', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req2)\r\n });\r\n if (response2.status === 200) {\r\n this.setState({\r\n newMessageRecipients: [],\r\n selectedThread: threadID,\r\n title: \"New Conversation\"\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n //render funcs\r\n title = () => {\r\n return (\r\n this.props.dark ? \"#0a0a0a\" : theme.palette.secondary.main}}>\r\n {this.state.selectedThread &&\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimwhite, margin: \"0px\" }} aria-label=\"back\" onClick={this.handleUnSelectThread} >\r\n \r\n \r\n \r\n }\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white,\r\n display: \"inline-block\"\r\n }}>{this.state.title}\r\n \r\n \r\n\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.white, margin: \"0px\" }} aria-label=\"back\" onClick={this.props.toggleOpen} >\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n avatar = (user, itemid, idx) => {\r\n return (\r\n /* */\r\n \r\n )\r\n }\r\n thread = (item, index) => {\r\n let nameArray = [];\r\n for (var i = 0; i < item.members.length; i++) {\r\n nameArray.push(item.members[i].firstName);\r\n }\r\n const names = arrayToList(nameArray);\r\n\r\n return (\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack,\r\n mr:1\r\n }}\r\n aria-label=\"delete\"\r\n onClick={() => this.handleDeleteThread(item, index)}\r\n >\r\n \r\n \r\n \r\n }\r\n >\r\n this.handleSelectThread(item, names)}>\r\n \r\n \r\n \r\n {item.members && item.members.map((user, index) => { return this.avatar(user, item.id, index) })}\r\n \r\n \r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}\r\n component=\"span\"\r\n variant=\"body2\"\r\n >\r\n {item.lastMessageDate ? item.lastMessageDate : new Date(item.createDate).toLocaleDateString()}\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}\r\n component=\"span\"\r\n variant=\"body2\"\r\n >\r\n {(item.snippet !== \"null\" && item.snippet !== null) ? item.snippet : \"...\"}\r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n )\r\n }\r\n threads = () => {\r\n if (this.state.loading) {\r\n return (\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack,\r\n }}>Loading Conversations...\r\n \r\n )\r\n }\r\n else {\r\n if (this.state.threads && this.state.threads.length > 0) {\r\n return (\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n backgroundColor: \"transparent\",\r\n height: this.props.scrollHeight ?? { xs: \"calc(100vh - 241px)\", sm: \"calc(100vh - 249px)\", lg: \"calc(100vh - 193px)\" },\r\n width: { xs: \"100%\", md: \"400px\", lg: \"500px\" },\r\n }}\r\n >\r\n \r\n {this.state.threads.map((item, index) => { return this.thread(item, index) })}\r\n \r\n
\r\n )\r\n }\r\n return null;\r\n }\r\n }\r\n chatWindow = () => {\r\n return (\r\n\r\n \r\n )\r\n }\r\n threadDeleteConfirmation = () => {\r\n return (\r\n this.setState({ showConfirmDeleteThread: false })}\r\n handleSave={this.handleConfirmDeleteThread}\r\n fullWidth={false}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\"\r\n />\r\n )\r\n }\r\n invitee = (user, idx) => {\r\n return (\r\n \r\n \r\n <>\r\n \r\n this.deleteNewRecipientHandler(idx)}\r\n avatar={\r\n \r\n }\r\n />\r\n \r\n \r\n this.deleteNewRecipientHandler(idx)}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n )\r\n }\r\n inviteeList = () => {\r\n return (\r\n \r\n \r\n {this.state.newMessageRecipients.map((user, index) => {\r\n return this.invitee(user, index)\r\n })}\r\n \r\n \r\n {(this.state.newMessageRecipients && this.state.newMessageRecipients.length > 0) &&\r\n \r\n }\r\n \r\n )\r\n }\r\n recipientSelector = () => {\r\n return (\r\n this.props.dark ? theme.palette.component.dark : theme.palette.component.light, p:1, width: { xs: \"100%\", md: \"500px\", lg: \"600px\" }, borderBottom: this.props.dark ? \"solid 1px #333\" : \"solid 1px #bbb\", }}\r\n >\r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack, marginRight: \"16px\" }} />\r\n this.validateMember(e.target.value)}\r\n onKeyPress={this.handleKeyPress2}\r\n />\r\n \r\n {(this.state.newMessageRecipients && this.state.newMessageRecipients.length > 0) && this.inviteeList()}\r\n )\r\n }\r\n searchResults = () => {\r\n if (this.state.searchResults && this.state.searchResults.length > 0) {\r\n return (\r\n this.props.dark ? theme.palette.component.dark : theme.palette.component.light,\r\n color: (theme) => this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n padding: \"6px, 16px\",\r\n maxHeight: \"400px\",\r\n borderBottom: !this.props.dark && \"1px solid #ccc\",\r\n boxShadow: !this.props.dark && 8\r\n }}\r\n className=\"prettyScroll\" >\r\n \r\n {this.state.searchResults.map((user, index) => {\r\n return (\r\n \r\n this.handleSelectMessageRecipient(index)} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n )\r\n }\r\n return null;\r\n }\r\n content = () => {\r\n return (\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black, overflowX: \"hidden\",\r\n border: \"none\"\r\n },\r\n \r\n }}\r\n\r\n\r\n >\r\n \r\n {this.title()}\r\n {!this.state.selectedThread\r\n ?\r\n <>\r\n {this.recipientSelector()}\r\n {this.searchResults()}\r\n {this.threads()}\r\n \r\n\r\n :\r\n this.chatWindow()\r\n }\r\n {this.threadDeleteConfirmation()}\r\n \r\n );\r\n }\r\n\r\n //main compontent render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { Post } from '../Posts/Post'\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Typography from '@mui/material/Typography';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport ThumbUpIcon from '@mui/icons-material/ThumbUp';\r\nimport ThumbDownIcon from '@mui/icons-material/ThumbDown';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport Divider from '@mui/material/Divider';\r\n//Data Services\r\nimport { getPost } from '../../DataServices/PostService'\r\nimport { getPhotoThumb } from '../../DataServices/PhotoService'\r\n\r\nexport class Notifications extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n selectedPost: null,\r\n showPost: false\r\n\r\n };\r\n }\r\n handleClick = async (id) => {\r\n const post = await getPost(id);\r\n\r\n if (post) {\r\n this.setState({\r\n selectedPost: post,\r\n showPost: true\r\n })\r\n }\r\n\r\n }\r\n handleDismiss = (event, item, index) => {\r\n event.stopPropagation();\r\n this.props.handleCancel(item, index);\r\n }\r\n //updatePostContent = async (idx, contentIdx, content) => {\r\n // if (content && content) {\r\n // if (content.type === 4) {\r\n // content = await this.loadBlogSpecificContent(content);\r\n // }\r\n\r\n // const post = this.state.selectedPost;\r\n // if (post && post.content)\r\n // post.content[contentIdx] = content;\r\n // this.setState({ selectedPost: post });\r\n \r\n\r\n // }\r\n //}\r\n updatePostContent = async (idx, contentIdx, content) => {\r\n\r\n if (content && content) {\r\n if (content.type == 4) {\r\n content = await this.loadBlogSpecificContent(content);\r\n }\r\n if (content.type == 8) {\r\n content = await this.loadEventSpecificContent(content);\r\n }\r\n if (content.type == 12) {\r\n content = await this.loadMarketSpecificContent(content);\r\n }\r\n\r\n const post = this.state.selectedPost;\r\n if (post && post.content)\r\n post.content[contentIdx] = content;\r\n this.setState({ selectedPost: post });\r\n\r\n }\r\n \r\n }\r\n\r\n updateRepostContent = async (postIdx, postContentIdx, contentIdx, content) => {\r\n if (this.state.topic === \"posts\") {\r\n if (content && content) {\r\n if (content.type == 4) {\r\n content = await this.loadBlogSpecificContent(content);\r\n }\r\n if (content.type == 8) {\r\n content = await this.loadEventSpecificContent(content);\r\n }\r\n if (content.type == 12) {\r\n content = await this.loadMarketSpecificContent(content);\r\n }\r\n const post = this.state.selectedPost;\r\n if (post && post.content)\r\n post.content[postContentIdx].post.content[contentIdx] = content;\r\n this.setState({ selectedPost: post });\r\n\r\n\r\n }\r\n }\r\n }\r\n loadBlogSpecificContent = async (content) => {\r\n //get header image\r\n if (content.blog && content.blog.header && content.blog.header.headerImage && content.blog.header.headerImage.photoID) {\r\n const hthumb = await getPhotoThumb(content.blog.header.headerImage.photoID);\r\n if (hthumb) {\r\n content.blog.header.headerImage.thumb = hthumb;\r\n }\r\n }\r\n //get cover image\r\n if (content.blog && content.blog.header && content.blog.header.coverImage && content.blog.header.coverImage.photoID) {\r\n const cthumb = await getPhotoThumb(content.blog.header.coverImage.photoID);\r\n if (cthumb) {\r\n content.blog.header.coverImage.thumb = cthumb;\r\n }\r\n }\r\n //get author image\r\n if (content.blog && content.blog.header && content.blog.header.authorImage && content.blog.header.authorImage.photoID) {\r\n const athumb = await getPhotoThumb(content.blog.header.authorImage.photoID);\r\n if (athumb) {\r\n content.blog.header.authorImage.thumb = athumb;\r\n }\r\n }\r\n //load other content\r\n if (content.blog && content.blog.bodyRows && content.blog.bodyRows.length > 0) {\r\n for (var i = 0; i < content.blog.bodyRows.length; i++) {\r\n let row = content.blog.bodyRows[i];\r\n if (row.rowContent && row.rowContent.length > 0) {\r\n for (var j = 0; j < row.rowContent.length; j++) {\r\n let rcontent = row.rowContent[j];\r\n if (rcontent.contentType == 1 && rcontent.photo && rcontent.photo.photoID) {\r\n const contentThumb = await getPhotoThumb(rcontent.photo.photoID);\r\n if (contentThumb) {\r\n content.blog.bodyRows[i].rowContent[j].photo.thumb = contentThumb;\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return content;\r\n }\r\n loadEventSpecificContent = async (content) => {\r\n //get header image\r\n if (content.event && content.event.coverPhoto && content.event.coverPhoto.photoID) {\r\n const hthumb = await getPhotoThumb(content.event.coverPhoto.photoID);\r\n if (hthumb) {\r\n content.event.coverPhoto.thumb = hthumb;\r\n }\r\n }\r\n\r\n //load other content\r\n if (content.event && content.event.bodyRows && content.event.bodyRows.length > 0) {\r\n for (var i = 0; i < content.event.bodyRows.length; i++) {\r\n let row = content.event.bodyRows[i];\r\n if (row.rowContent && row.rowContent.length > 0) {\r\n for (var j = 0; j < row.rowContent.length; j++) {\r\n let rcontent = row.rowContent[j];\r\n if (rcontent.contentType == 1 && rcontent.photo && rcontent.photo.photoID) {\r\n const contentThumb = await getPhotoThumb(rcontent.photo.photoID);\r\n if (contentThumb) {\r\n content.event.bodyRows[i].rowContent[j].photo.thumb = contentThumb;\r\n }\r\n\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return content;\r\n }\r\n loadMarketSpecificContent = async (content) => {\r\n //get header image\r\n if (content.marketItem && content.marketItem.primaryPhoto && content.marketItem.primaryPhoto.photoID) {\r\n const hthumb = await getPhotoThumb(content.marketItem.primaryPhoto.photoID);\r\n if (hthumb) {\r\n content.marketItem.primaryPhoto.thumb = hthumb;\r\n }\r\n }\r\n\r\n //load other content\r\n if (content.marketItem && content.marketItem.photos && content.marketItem.photos.length > 0) {\r\n for (var i = 0; i < content.marketItem.photos.length; i++) {\r\n if (content.marketItem.photos[i].photo && content.marketItem.photos[i].photo.photoID) {\r\n const contentThumb = await getPhotoThumb(content.marketItem.photos[i].photo.photoID);\r\n if (contentThumb) {\r\n content.marketItem.photos[i].photo.thumb = contentThumb;\r\n }\r\n }\r\n }\r\n }\r\n return content;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n notification = (item, index) => {\r\n return (\r\n <>\r\n this.handleClick(item.referencedID)} sx={{ mb: 1 }}>\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n {item.message}\r\n \r\n \r\n \r\n {item.type === 0 &&\r\n <>\r\n \r\n this.props.handleAccept(item, index)}\r\n size=\"small\"\r\n sx={{ margin: \"0px 4px\", color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}\r\n >\r\n \r\n \r\n \r\n \r\n this.handleDecline(item, index)} size=\"small\" sx={{ margin: \"0px 4px\", color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n \r\n \r\n \r\n \r\n }\r\n \r\n this.handleDismiss(e, item, index)} size=\"small\" sx={{ margin: \"0px 4px\", color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n contents = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.item.dark : theme.palette.item.light, borderRadius: this.props.fullScreen ? 0 : \"8px\", minHeight: \"300px\", maxHeight: this.props.fullScreen ? \"calc(100vh - 108px)\" : \"500px\" }} className=\"prettyScroll\">\r\n {this.props.notifications.length > 0\r\n ?\r\n \r\n {this.props.notifications.map((item, index) => {\r\n return this.notification(item, index);\r\n })}\r\n \r\n :\r\n No Notifications\r\n }\r\n \r\n {(this.state.selectedPost && this.state.showPost) && this.post()}\r\n \r\n )\r\n }\r\n\r\n post = () => {\r\n return (\r\n this.setState({ showPost: false })}\r\n fullWidth={true}\r\n maxWidth=\"lg\"\r\n hideScroll={true}\r\n closeLabel=\"Close\"\r\n dark={this.props.dark}\r\n >\r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.contents();\r\n };\r\n\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\n\r\n\r\n//Material UI\r\nimport Box from '@mui/material/Box';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport Typography from '@mui/material/Typography';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport ThumbUpIcon from '@mui/icons-material/ThumbUp';\r\nimport ThumbDownIcon from '@mui/icons-material/ThumbDown';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\n\r\nexport class Invitations extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n };\r\n }\r\n handleClick = async (id) => {\r\n\r\n }\r\n handleAccept = (event, item, index) => {\r\n event.stopPropagation();\r\n this.props.handleAccept(item, index);\r\n }\r\n handleDecline = (event, item, index) => {\r\n event.stopPropagation();\r\n this.props.handleDecline(item, index);\r\n }\r\n handleDismiss = (event, item, index) => {\r\n event.stopPropagation();\r\n this.props.handleCancel(item, index);\r\n }\r\n\r\n invitation = (item, index) => {\r\n return (\r\n this.handleClick(item.groupID)}>\r\n \r\n \r\n \r\n */}\r\n //{/* {new Date(item.dateSent).toLocaleDateString() ?? \"\"}*/}\r\n // {/*}*/}\r\n primary={\r\n \r\n \r\n {item.message}\r\n \r\n \r\n \r\n \r\n this.handleAccept(e, item, index)}\r\n size=\"small\"\r\n sx={{ margin: \"0px 4px\", color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}\r\n >\r\n \r\n \r\n \r\n \r\n this.handleDecline(e, item, index)} size=\"small\" sx={{ margin: \"0px 4px\", color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n \r\n \r\n \r\n \r\n this.handleDismiss(e, item, index)} size=\"small\" sx={{ margin: \"0px 4px\", color: (theme) => this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack }}>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n )\r\n }\r\n\r\n contents = () => {\r\n return (\r\n \r\n this.props.dark ? theme.palette.item.dark : theme.palette.item.light, borderRadius: \"8px\", minHeight: \"300px\", maxHeight: \"500px\" }} className=\"prettyScroll\">\r\n {this.props.invitations.length > 0\r\n ?\r\n \r\n {this.props.invitations.map((item, index) => {\r\n return this.invitation(item, index);\r\n })}\r\n \r\n :\r\n \r\n No Invitations\r\n \r\n }\r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.contents();\r\n };\r\n\r\n\r\n\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { SectionFieldGroup } from '../Utilities/SectionFieldGroup';\r\n//Material UI\r\nimport Button from '@mui/material/Button';\r\nimport Stack from '@mui/material/Stack';\r\nimport Alert from '@mui/material/Alert';\r\n\r\n//Data Services\r\nimport { setPassword, disableAccount, deleteAccount } from '../../DataServices/UserService'\r\n\r\nexport class Account extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n showPasswordReset: false,\r\n showBlankOldError: false,\r\n showBlankNewError: false,\r\n showSavePasswordError: false,\r\n showConfirmDisableAccount: false,\r\n showConfirmDeleteAccount: false\r\n };\r\n }\r\n\r\n handleSetPassword = () => {\r\n this.setState({ showPasswordReset: !this.state.showPasswordReset });\r\n }\r\n handleSavePassword = async () => {\r\n const oldP = document.getElementById(\"oldPassword\").value;\r\n const newP = document.getElementById(\"newPassword\").value;\r\n if (!oldP) {\r\n this.setState({ showBlankOldError: true });\r\n }\r\n if (!newP) {\r\n this.setState({ showBlankNewError: true });\r\n }\r\n\r\n if (oldP && newP) {\r\n const res = await setPassword(oldP, newP);\r\n console.log(res);\r\n if (res !== true) {\r\n this.setState({ showSavePasswordError: true });\r\n }\r\n \r\n this.setState({ showPasswordReset: false });\r\n }\r\n }\r\n handleShowDisableAccount = () => {\r\n this.setState({ showConfirmDisableAccount: true });\r\n }\r\n handleShowDeleteAccount = () => {\r\n this.setState({ showConfirmDeleteAccount: true });\r\n }\r\n handleDisableAccount = async () => {\r\n await disableAccount(this.props.user.userID);\r\n this.props.setToken('');\r\n }\r\n handleDeleteAccount = async () => {\r\n await deleteAccount(this.props.user.userID);\r\n this.props.setToken('');\r\n }\r\n handleOldChange = (e) => {\r\n this.setState({ showBlankOldError: false });\r\n }\r\n handleNewChange = (e) => {\r\n this.setState({ showBlankNewError: false });\r\n }\r\n passwordReset = () => {\r\n\r\n return (\r\n this.setState({ showPasswordReset: false })}\r\n handleSave={this.handleSavePassword}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n >\r\n \r\n \r\n {this.state.showBlankOldError && Old password can not be blank.}\r\n \r\n {this.state.showBlankNewError && New password can not be blank.}\r\n {this.state.showSavePasswordError && Error saving password.}\r\n \r\n \r\n )\r\n } \r\n deleteConfirm = () => {\r\n\r\n return (\r\n this.setState({ showConfirmDeleteAccount: false })}\r\n handleSave={this.handleDeleteAccount}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Delete\"\r\n />\r\n\r\n )\r\n }\r\n disableConfirm = () => {\r\n\r\n return (\r\n this.setState({ showConfirmDisableAccount: false })}\r\n handleSave={this.handleDisableAccount}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n saveLabel=\"Disable\"\r\n />\r\n\r\n )\r\n }\r\n contents = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n {/**/}\r\n {/**/}\r\n \r\n\r\n {this.state.showPasswordReset && this.passwordReset()}\r\n {this.state.showConfirmDeleteAccount && this.deleteConfirm()}\r\n {this.state.showConfirmDisableAccount && this.disableConfirm()}\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return this.contents();\r\n };\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport TopAppBar from '../../../components/SiteSpecific/TopAppBar';\r\nimport { Profile } from '../Profile/Profile';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { BottomNav } from '../Utilities/BottomNav';\r\nimport { Welcome } from '../../../components/SiteSpecific/Welcome';\r\nimport { Affiliations } from '../Groups/Affiliations'\r\nimport { Activity } from '../Groups/Activity'\r\nimport { ChatDrawer } from '../Messenger/ChatDrawer';\r\nimport { Notifications } from '../Notifications/Notifications'\r\nimport { Invitations } from '../Invitations/Invitations'\r\nimport { Account } from '../Account/Account'\r\n\r\n//Database Services\r\nimport { getNotifications, updateNotification } from '../../DataServices/NotificationService'\r\nimport { getInvitations, confirmInvitation, declineInvitation, removeInvitation } from '../../DataServices/OrganizationService'\r\n\r\nexport class Layout extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showMenu: false,\r\n showPhotoUploader: false,\r\n showSearchResults: false,\r\n showProfileManager: false,\r\n showAffiliations: false,\r\n showNotifications: false,\r\n showInvitations: false,\r\n showAccount: false,\r\n showChat: false,\r\n notifications: [],\r\n invitations: [],\r\n fetchNewPostsInterval: 30000,\r\n autoFetchNew: true,\r\n navIndex: 0,\r\n lastNavIndex: 0,\r\n width: 0,\r\n height:0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.user && this.props.user.accessToken && !this.props.user.hideWelcome) {\r\n this.setState({ showWelcome: true });\r\n }\r\n this.getInvitations();\r\n this.getNotifications();\r\n //wait 1 minute then set auto-fetcher for new posts\r\n if (this.state.autoFetchNew) {\r\n setTimeout(\r\n this.interval = setInterval(() => {\r\n this.getNewInvitations();\r\n this.getNewNotifications();\r\n }, this.state.fetchNewPostsInterval),\r\n 60000);\r\n }\r\n this.updateWindowDimensions();\r\n window.addEventListener('resize', this.updateWindowDimensions);\r\n }\r\n componentWillUnmount() {\r\n //clear autofetch interval if it exists\r\n if (this.interval)\r\n clearInterval(this.interval);\r\n\r\n window.removeEventListener('resize', this.updateWindowDimensions);\r\n }\r\n updateWindowDimensions = () => {\r\n this.setState({ width: window.innerWidth, height: window.innerHeight });\r\n }\r\n getNotifications = async () => {\r\n\r\n const data = await getNotifications(true, this.props.appIdentifier);\r\n const notifications = [];\r\n if (data) {\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].referencedUser) {\r\n notifications.push(data[i]);\r\n }\r\n }\r\n this.setState({\r\n notifications: notifications,\r\n loading: false\r\n });\r\n }\r\n\r\n }\r\n getNewNotifications = async () => {\r\n\r\n const data = await getNotifications(true, this.props.appIdentifier);\r\n const notifications = [];\r\n if (data) {\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].referencedUser) {\r\n notifications.push(data[i]);\r\n }\r\n }\r\n if (notifications.length === this.state.notifications.length) {\r\n if (notifications.length === 0) {\r\n return;\r\n }\r\n else {\r\n if (notifications[0].id === this.state.notifications[0].id && notifications[notifications.length - 1].id === this.state.notifications[this.state.notifications.length - 1].id) {\r\n return;\r\n }\r\n }\r\n }\r\n else {\r\n this.setState({\r\n notifications: notifications,\r\n loading: false\r\n });\r\n }\r\n }\r\n\r\n }\r\n getInvitations = async () => {\r\n\r\n const data = await getInvitations();\r\n const invitations = [];\r\n if (data) {\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].fromUser) {\r\n invitations.push(data[i]);\r\n }\r\n }\r\n this.setState({ invitations });;\r\n }\r\n\r\n }\r\n getNewInvitations = async () => {\r\n\r\n const data = await getInvitations();\r\n const invitations = [];\r\n if (data) {\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].fromUser) {\r\n invitations.push(data[i]);\r\n }\r\n }\r\n if (invitations.length === this.state.invitations.length) {\r\n if (invitations.length === 0) {\r\n return;\r\n }\r\n else {\r\n if (invitations[0].id === this.state.invitations[0].id && invitations[invitations.length - 1].id === this.state.invitations[this.state.invitations.length - 1].id) {\r\n return;\r\n }\r\n }\r\n }\r\n else {\r\n this.setState({ invitations });\r\n }\r\n }\r\n\r\n }\r\n handleCancel = async (item, index) => {\r\n\r\n this.setState(state => {\r\n const notifications = state.notifications.filter((item, j) => index !== j);\r\n return { notifications, };\r\n });\r\n\r\n let user = this.props.user;\r\n user.notificationCount--;\r\n this.props.setUserInfo(user);\r\n\r\n await updateNotification(item.id, 3);\r\n\r\n }\r\n handleAccept = async (item, index) => {\r\n\r\n this.setState(state => {\r\n const notifications = state.notifications.filter((item, j) => index !== j);\r\n return { notifications, };\r\n });\r\n\r\n let user = this.props.user;\r\n user.notificationCount--;\r\n this.props.setUserInfo(user);\r\n await updateNotification(item.id, 3);\r\n\r\n }\r\n handleAcceptInvitation = async (item, index) => {\r\n const invitations = [...this.state.invitations];\r\n invitations.splice(index, 1);\r\n this.setState({ invitations });\r\n await confirmInvitation(item.id);\r\n }\r\n handleDeclineInvitation = async (item, index) => {\r\n const invitations = [...this.state.invitations];\r\n invitations.splice(index, 1);\r\n this.setState({ invitations });\r\n await declineInvitation(item.id);\r\n }\r\n handleDismissInvitation = async (item, index) => {\r\n const invitations = [...this.state.invitations];\r\n invitations.splice(index, 1);\r\n this.setState({ invitations });\r\n await removeInvitation(item.id);\r\n }\r\n handleSearch = async (term) => {\r\n if (term && term.length > 0) {\r\n this.props.setSearchTerm(term);\r\n this.handleNavIndex(0);\r\n }\r\n }\r\n handleUpdateProfile = (b64) => {\r\n this.setState({ showPhotoUploader: false });\r\n let user = this.props.user;\r\n user.avatar = b64;\r\n this.props.setUserInfo(user);\r\n }\r\n handleUpdatePrivacy = (privacy) => {\r\n\r\n }\r\n handleNavIndex = (value) => {\r\n this.setState({ navIndex: value });\r\n switch (value) {\r\n\r\n case 0:\r\n this.setState({ showChat: true, showNotifications: false, showProfileManager: false });\r\n\r\n break;\r\n case 1:\r\n this.setState({ showChat: false, showNotifications: true, showProfileManager: false });\r\n break;\r\n case 2:\r\n this.setState({ showChat: false, showNotifications: false, showProfileManager: true });\r\n break;\r\n\r\n default:\r\n }\r\n }\r\n handleToggleChat = () => {\r\n this.setState({ showChat: !this.state.showChat })\r\n if (this.state.navIndex === 2) {\r\n this.setState({ navIndex: this.state.lastNavIndex });\r\n }\r\n }\r\n handleCloseProfileManager = () => {\r\n this.setState({ showProfileManager: false });\r\n if (this.state.navIndex === 4) {\r\n this.setState({ navIndex: this.state.lastNavIndex });\r\n }\r\n }\r\n handleCloseNotifications = () => {\r\n this.setState({ showNotifications: false });\r\n if (this.state.navIndex === 3) {\r\n this.setState({ navIndex: this.state.lastNavIndex });\r\n }\r\n }\r\n handleSetTopic = (topic) => {\r\n if (topic === \"posts\") {\r\n this.handleNavIndex(0);\r\n }\r\n if (topic === \"content\") {\r\n this.handleNavIndex(1);\r\n }\r\n }\r\n\r\n //Render Funcs\r\n chat = () => {\r\n if (this.state.showChat) {\r\n return (\r\n \r\n )\r\n }\r\n return null;\r\n } \r\n welcome = () => {\r\n return (\r\n this.setState({ showWelcome: false })}\r\n handleUpdateProfile={this.handleUpdateProfile}\r\n dark={this.props.dark}\r\n user={this.props.user}\r\n setUserInfo={this.props.setUserInfo}\r\n setDark={this.props.setDark}\r\n appIdentifier={this.props.appIdentifier}\r\n />\r\n )\r\n }\r\n profileManager = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n affiliations = () => {\r\n return (\r\n this.setState({ showAffiliations: false })}\r\n closeLabel=\"Close\"\r\n fullWidth={true}\r\n fullScreen={this.state.width <= 600}\r\n solid\r\n title=\"Affiliations\"\r\n maxWidth=\"md\"\r\n noPad={true}\r\n hideScroll={true}\r\n disableButtons\r\n fullHeight\r\n noBorder\r\n >\r\n \r\n \r\n )\r\n }\r\n activities = () => {\r\n return (\r\n this.setState({ showActivity: false })}\r\n closeLabel=\"Close\"\r\n fullWidth={true}\r\n fullScreen={this.state.width <= 600}\r\n solid\r\n title=\"My Activity and Connections\"\r\n maxWidth=\"md\"\r\n noPad={true}\r\n hideScroll={true}\r\n disableButtons\r\n fullHeight\r\n noBorder\r\n >\r\n \r\n \r\n )\r\n }\r\n notifications = () => {\r\n return (\r\n \r\n )\r\n }\r\n invitations = () => {\r\n return (\r\n this.setState({ showInvitations: false })}\r\n dark={this.props.dark}\r\n user={this.props.user}\r\n handleCancel={this.handleDeclineInvitation}\r\n handleAccept={this.handleAcceptInvitation}\r\n handleDecline={this.handleDeclineInvitation}\r\n invitations={this.state.invitations}\r\n />\r\n )\r\n }\r\n account = () => {\r\n return (\r\n this.setState({ showAccount: false })}\r\n dark={this.props.dark}\r\n user={this.props.user}\r\n setToken={this.props.setToken}\r\n />\r\n )\r\n }\r\n bottonNav = () => {\r\n return (\r\n \r\n )\r\n }\r\n content = () => {\r\n return (\r\n <>\r\n this.setState({ showProfileManager: !this.state.showProfileManager })}\r\n handleAffiliationsOpen={() => this.setState({ showAffiliations: !this.state.showAffiliations })}\r\n handleActivityOpen={() => this.setState({ showActivity: !this.state.showActivity })}\r\n handleNotificationsOpen={() => this.setState({ showNotifications: !this.state.showNotifications })}\r\n handleInvitationsOpen={() => this.setState({ showInvitations: !this.state.showInvitations })}\r\n handleAccountOpen={() => this.setState({ showAccount: !this.state.showAccount })}\r\n handleChatOpen={() => this.setState({ showChat: !this.state.showChat })}\r\n notificationCount={this.state.notifications.length ?? 0}\r\n invitationCount={this.state.invitations.length ?? 0}\r\n searchTerm={this.props.searchTerm ?? \"\"}\r\n site={this.props.site}\r\n //IW props\r\n authenticated={this.props.authenticated}\r\n newRegistration={this.props.newRegistration}\r\n setNewRegistration={this.props.setNewRegistration}\r\n setAuthenticated={this.props.setAuthenticated}\r\n setTopic={this.handleSetTopic}\r\n navIndex={this.state.navIndex}\r\n appOptions={this.props.appOptions}\r\n isAdmin={this.props.isAdmin}\r\n handleShowAdmin={() => this.setState({ showAdmin: true })}\r\n handleShowNewUploads={() => this.setState({ showNewUploads: true })}\r\n />\r\n\r\n {this.props.children}\r\n\r\n {this.state.showWelcome && this.welcome()}\r\n {this.state.showChat && this.chat()}\r\n {this.state.showProfileManager && this.profileManager()}\r\n {this.state.showAffiliations && this.affiliations()}\r\n {this.state.showActivity && this.activities()}\r\n {this.state.showNotifications && this.notifications()}\r\n {this.state.showInvitations && this.invitations()}\r\n {this.state.showAccount && this.account()}\r\n \r\n );\r\n }\r\n\r\n //main component render\r\n render() {\r\n return this.content();\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { TextInput } from './TextInput'\r\nimport { SelectList } from './SelectList';\r\nimport { DateSelector } from './DateSelector';\r\nimport { capitalize, isValidURL, validateEmail } from '../../DataServices/Utility';\r\n\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\nimport Box from '@mui/material/Box';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Alert from '@mui/material/Alert';\r\nimport HelpIcon from '@mui/icons-material/Help';\r\n\r\nexport class Input extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n validateFieldError: null\r\n }\r\n }\r\n validateFormat = (format, value) => {\r\n switch (format) {\r\n case 'url':\r\n if (!isValidURL(value)) {\r\n this.setState({ validateFieldError: value + \" is not a valid url\" });\r\n this.props.setValid(false);\r\n }\r\n else {\r\n this.setState({ validateFieldError: null });\r\n this.props.setValid(true);\r\n }\r\n case 'email':\r\n if (!validateEmail(value)) {\r\n this.setState({ validateFieldError: value + \" is not a valid email address\" });\r\n this.props.setValid(false);\r\n }\r\n else {\r\n this.setState({ validateFieldError: null });\r\n this.props.setValid(true);\r\n }\r\n default:\r\n return true;\r\n }\r\n }\r\n onBlur = (value) => {\r\n if (this.props.onBlur) {\r\n this.props.onBlur(value);\r\n }\r\n if (value && this.props.validateOnBlur) {\r\n this.validateFormat(this.props.format, value);\r\n }\r\n }\r\n\r\n //render\r\n alert = (message) => {\r\n return (\r\n \r\n {message}\r\n \r\n )\r\n }\r\n renderDateSelector = () => {\r\n return (\r\n \r\n \r\n {this.props.requiredFieldError && this.alert(`${capitalize(this.props.label)} is required`)}\r\n \r\n )\r\n }\r\n renderSelectList = () => {\r\n return (\r\n \r\n \r\n {this.props.requiredFieldError && this.alert(`${capitalize(this.props.label)} is required`)}\r\n \r\n )\r\n }\r\n renderTextInput = () => {\r\n return (\r\n \r\n \r\n {this.props.requiredFieldError && this.alert(`${capitalize(this.props.label)} is required`)}\r\n {this.state.validateFieldError && this.alert(this.state.validateFieldError)}\r\n \r\n )\r\n }\r\n renderInput = () => {\r\n switch (this.props.type) {\r\n case \"text\": return this.renderTextInput();\r\n case \"select\": return this.renderSelectList();\r\n case \"date\": return this.renderDateSelector();\r\n default: return null;\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.renderInput()}\r\n {this.props.helpText ?\r\n \r\n \r\n \r\n :\r\n \r\n }\r\n\r\n \r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { ModalDialog } from './ModalDialog';\r\nimport { Input } from './Input'\r\n\r\n//Material UI\r\nimport Stack from '@mui/material/Stack';\r\n\r\nexport class ItemCreator extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n requiredFieldError: this.props.fields && this.props.fields.map(x => { return false }),\r\n validationFieldError: this.props.fields && this.props.fields.map(x => { return false }),\r\n fieldValues: this.props.fields && this.props.fields.map(x => { return x.value }),\r\n valid: true,\r\n }\r\n }\r\n\r\n setValid = (idx, valid) => {\r\n const validationFieldError = this.state.validationFieldError;\r\n validationFieldError[idx] = !valid;\r\n this.setState({ validationFieldError });\r\n }\r\n handleSave = () => {\r\n let valid = true;\r\n for (var i = 0; i < this.props.fields.length; i++) {\r\n const value = this.state.fieldValues[i];\r\n if ((!value) && this.props.fields[i].required) {\r\n const requiredFieldError = this.state.requiredFieldError;\r\n requiredFieldError[i] = true;\r\n this.setState({ requiredFieldError });\r\n valid = false;\r\n }\r\n else {\r\n if (this.state.validationFieldError[i]) {\r\n valid = false;\r\n }\r\n }\r\n } \r\n //If no errors, call save func from parent\r\n if (valid) {\r\n this.props.handleSave(this.state.fieldValues);\r\n } \r\n }\r\n onBlur = (field, idx, value) => {\r\n if (field.onBlur) {\r\n field.onBlur(value);\r\n\r\n }\r\n if (value && this.state.requiredFieldError[idx]) {\r\n const requiredFieldError = this.state.requiredFieldError;\r\n requiredFieldError[idx] = false;\r\n this.setState({ requiredFieldError });\r\n }\r\n\r\n }\r\n onChange = (field, idx, value) => {\r\n //call any parent onchange handlers\r\n if (field.onChange) {\r\n field.onChange(field, idx, value);\r\n }\r\n\r\n //set the input value state\r\n const fieldValues = this.state.fieldValues;\r\n fieldValues[idx] = value;\r\n this.setState({ fieldValues });\r\n\r\n //if select control, remove any required field validation if now has a val\r\n if (field.type === \"select\") {\r\n if (value !== null && value !== -1 && this.state.requiredFieldError[idx]) {\r\n const requiredFieldError = this.state.requiredFieldError;\r\n requiredFieldError[idx] = false;\r\n this.setState({ requiredFieldError });\r\n }\r\n }\r\n }\r\n input = (field, idx) => {\r\n return (\r\n this.onBlur(field, idx, value)}\r\n onChange={(value) => this.onChange(field, idx, value)}\r\n onKeyPress={field.onKeyPress}\r\n autoFocus={field.autoFocus}\r\n required={field.required}\r\n maxLength={field.maxLength}\r\n minValue={field.minValue}\r\n maxValue={field.maxValue}\r\n listItems={field.listItems}\r\n allowNull={field.allowNull}\r\n validateOnBlur={field.validateOnBlur}\r\n setValid={(valid) => this.setValid(idx, valid)}\r\n requiredFieldError={this.state.requiredFieldError[idx]}\r\n helpText={field.helpText}\r\n />\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.props.fields.map((field, idx) => this.input(field, idx))}\r\n \r\n \r\n )\r\n }\r\n}","import React, { Component} from 'react';\r\n\r\n\r\n\r\n//Material UI\r\nimport TextField from '@mui/material/TextField';\r\nimport Autocomplete from '@mui/material/Autocomplete';\r\nimport Box from '@mui/material/Box';\r\nimport Paper from '@mui/material/Paper';\r\nimport Stack from '@mui/material/Stack';\r\nimport Typography from '@mui/material/Typography';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport Button from '@mui/material/Button';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport { ClientDocuments } from '../Business/ClientDocuments';\r\nimport { SelectList } from '../Utilities/SelectList';\r\nimport { TextInput } from '../Utilities/TextInput';\r\nimport { ModalDialog } from '../Utilities/ModalDialog'\r\nimport { UserAvatar } from '../Utilities/UserAvatar'\r\nimport { SectionItem } from '../Utilities/SectionItem';\r\nimport { Section } from '../Utilities/Section';\r\nimport { Invitation } from '../Invitations/Invitation';\r\nimport { ItemCreator } from '../Utilities/ItemCreator';\r\n//Database Services\r\nimport { getClientUserData, isAdminUser, getClients, getClientDocs, newClient, editClient, getClientUsers, getClientUserInvites, getAdminUserInvites, newClientUser } from '../../DataServices/BusinessService'\r\nimport { getEnums } from '../../DataServices/Utility'\r\nimport { getPublicAttributes, getUserList, getFeedPreferences, setFeedPreferences } from '../../DataServices/UserService'\r\n\r\n\r\n\r\nexport class Home extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.props.setToken.bind(this);\r\n this.state = {\r\n documentFolders: [], \r\n contentUser: false,\r\n contentLoaded: false,\r\n dropDownOptions: [],\r\n selectedContentType: null,\r\n selectedContentProps: null,\r\n contentUser: true,\r\n pauseRefreshes: false,\r\n bottomMenuValue: 0,\r\n contentLoading: false,\r\n height: 0,\r\n width: 0,\r\n newClientUserFields : [\r\n {\r\n type: \"text\",\r\n label: \"First Name\",\r\n fieldName: \"firstName\",\r\n value: \"\",\r\n maxLength: 100,\r\n required: true\r\n },\r\n {\r\n type: \"text\",\r\n label: \"Last Name\",\r\n fieldName: \"lastName\",\r\n value: \"\",\r\n maxLength: 100,\r\n required: true\r\n },\r\n {\r\n type: \"text\",\r\n label: \"Email\",\r\n fieldName: \"email\",\r\n value: \"\",\r\n maxLength: 100,\r\n required: true,\r\n format: \"email\",\r\n validateOnBlur: true\r\n },\r\n {\r\n type: \"text\",\r\n label: \"Default Password\",\r\n fieldName: \"password\",\r\n value: \"Pa$$w0rd\",\r\n maxLength: 100,\r\n required: true\r\n },\r\n ]\r\n //selectedClient: { label: \"Test Personal\", value: \"Test Personal\" }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.updateWindowDimensions();\r\n window.addEventListener('resize', this.updateWindowDimensions);\r\n\r\n this.getData();\r\n\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateWindowDimensions);\r\n }\r\n\r\n updateWindowDimensions = () => {\r\n this.setState({ width: window.innerWidth, height: window.innerHeight });\r\n }\r\n\r\n\r\n //Data Fetching\r\n getData = async () => {\r\n const isAdmin = await isAdminUser(this.props.user.userID, this.props.businessID);\r\n this.setState({ isAdmin });\r\n this.props.setIsAdmin(isAdmin);\r\n // this.getClientData();\r\n if (isAdmin === true) {\r\n this.getClientList();\r\n }\r\n else {\r\n this.getClientData();\r\n }\r\n\r\n }\r\n getDropdownOptions = async () => {\r\n const data = await getEnums();\r\n this.setState({ dropDownOptions: data });\r\n }\r\n getClientList = async () => {\r\n const clientData = await getClients(this.props.businessID);\r\n const clientList = [];\r\n \r\n if (clientData && clientData.length > 0) {\r\n for (var i = 0; i < clientData.length; i++) {\r\n clientList.push({ label: clientData[i].name, value: clientData[i].id });\r\n }\r\n this.setState({ clientData, clientList, selectedClient: clientData[0].id, selectedClientIDX: 0, selectedClientName: clientData[0].name });\r\n\r\n\r\n if (clientData[0] && clientData[0].id) {\r\n this.setCurrentFolders(clientData[0].id, clientData);\r\n }\r\n }\r\n }\r\n getUserList = async () => {\r\n const data = await getUserList();\r\n const userList = [];\r\n\r\n if (data && data.length > 0) {\r\n for (var i = 0; i < data.length; i++) {\r\n userList.push({ id: data[i].userID, display: data[i].firstName + ' ' + data[i].lastName });\r\n }\r\n }\r\n this.setState({ userList });\r\n }\r\n getClientData = async () => {\r\n const clientData = await getClientUserData();\r\n const clientList = [];\r\n if (clientData && clientData.length > 0) {\r\n for (var i = 0; i < clientData.length; i++) {\r\n clientList.push({ label: clientData[i].name, value: clientData[i].id });\r\n }\r\n this.setState({ clientData, clientList, selectedClient: clientData[0].id, selectedClientIDX: 0, selectedClientName: clientData[0].name });\r\n\r\n\r\n if (clientData[0] && clientData[0].id) {\r\n this.setCurrentFolders(clientData[0].id, clientData);\r\n }\r\n }\r\n\r\n }\r\n\r\n setCurrentFolders = (clientID, clientData) => {\r\n if (clientID) {\r\n if (this.state.clientData) {\r\n var client = this.state.clientData.find(c => {\r\n return c.id === clientID\r\n })\r\n }\r\n else {\r\n var client = clientData.find(c => {\r\n return c.id === clientID\r\n })\r\n }\r\n const documentFolders = [];\r\n if (client) {\r\n if (client.documentFolders && client.documentFolders.length > 0) {\r\n for (var j = 0; j < client.documentFolders.length; j++) {\r\n if (client.documentFolders[j] && client.documentFolders[j].id) {\r\n documentFolders.push(client.documentFolders[j]);\r\n }\r\n }\r\n }\r\n }\r\n this.setState({ documentFolders });\r\n\r\n\r\n }\r\n\r\n\r\n }\r\n handleClientChange = (e) => {\r\n\r\n this.setCurrentFolders(e);\r\n\r\n var client = this.state.clientData.find(c => {\r\n return c.id === e\r\n })\r\n\r\n this.setState({ selectedClient: e, selectedClientName : client.name});\r\n }\r\n updateFolders = (documentFolders) => {\r\n\r\n this.setState({ documentFolders });\r\n\r\n }\r\n selectClient = async (clientID) => {\r\n if (clientID) {\r\n var client = this.state.clientData.find(c => {\r\n return c.id === clientID.value\r\n })\r\n\r\n const documentFolders = await getClientDocs(clientID.value);\r\n const inv = await getClientUserInvites(clientID.value);\r\n const usrs = await getClientUsers(clientID.value);\r\n\r\n\r\n this.setState({ documentFolders, selectedClient: clientID.value, selectedClientName: client.name, inv, usrs });\r\n }\r\n else {\r\n const documentFolders = [];\r\n\r\n this.setState({ documentFolders, selectedClient: null, selectedClientName: null });\r\n }\r\n\r\n \r\n }\r\n handleManageClientUsers = () => { }\r\n handleEditClient = () => { }\r\n\r\n clientSelect = () => {\r\n if (this.state.clientList) {\r\n return (\r\n this.selectClient(val) }\r\n disablePortal\r\n id=\"clientselector\"\r\n options={this.state.clientList}\r\n sx={{\r\n minWidth: 300,\r\n color: (theme) => this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n fontSize: \".8rem\" }}\r\n renderInput={(params) =>\r\n this.props.dark ? theme.palette.common.white : theme.palette.common.black,\r\n fontSize: \".8rem\"\r\n} }\r\n\r\n />}\r\n />\r\n \r\n \r\n )\r\n }\r\n }\r\n clientAdder = () => {\r\n return (\r\n this.setState({ showNewClient: false })}\r\n handleSave={this.state.mode === \"new\" ? this.handleSaveNewClient : this.handleSaveEditClient}\r\n fullWidth={true}\r\n maxWidth=\"sm\"\r\n closeLabel=\"Close\"\r\n\r\n >\r\n \r\n \r\n \r\n )\r\n } \r\n handleShowEditClient = () => {\r\n const id = this.state.selectedClient;\r\n\r\n this.setState({\r\n anchorEl: null,\r\n showNewClient: true,\r\n mode: \"edit\",\r\n nameValue: this.state.clientData.find((x) => x.id === id).name,\r\n altIdValue: this.state.clientData.find((x) => x.id === id).clientAltID,\r\n });\r\n }\r\n handleSaveNewClient = async () => {\r\n const ele = document.getElementById(\"fldClientName\");\r\n if (!ele)\r\n return;\r\n const name = ele.value;\r\n ele.value = \"\";\r\n const ele2 = document.getElementById(\"fldClientAltID\");\r\n if (!ele2)\r\n return;\r\n const altid = ele2.value;\r\n ele2.value = \"\";\r\n\r\n const newClt = await newClient(this.props.businessID, name, altid);\r\n if (newClt) {\r\n const clientData = this.state.clientData;\r\n clientData.push(newClt);\r\n\r\n const clientList = this.state.clientList;\r\n clientList.push({ label: newClt.name, value: newClt.id });\r\n\r\n const documentFolders = await getClientDocs(newClt.id);\r\n\r\n this.setState({ clientData, clientList, documentFolders, selectedClient: newClt.id, selectedClientName: newClt.name, showNewClient: false, mode: null });\r\n let ele3 = document.getElementById(\"clientselector\");\r\n if (ele3) {\r\n ele3.value = newClt.id;\r\n }\r\n\r\n\r\n }\r\n }\r\n handleSaveEditClient = async () => {\r\n const ele = document.getElementById(\"fldClientName\");\r\n if (!ele)\r\n return;\r\n const name = ele.value;\r\n ele.value = \"\";\r\n const ele2 = document.getElementById(\"fldClientAltID\");\r\n if (!ele2)\r\n return;\r\n const altid = ele2.value;\r\n ele2.value = \"\";\r\n\r\n const newClt = await editClient(this.state.selectedClient, name, altid);\r\n if (newClt) {\r\n this.setState(\r\n state => {\r\n let clientData = state.clientData;\r\n clientData.find((x) => x.id === this.state.selectedClient).name = name;\r\n clientData.find((x) => x.id === this.state.selectedClient).clientAltID = altid;\r\n let clientList = state.clientList;\r\n clientList.find((x) => x.value === this.state.selectedClient).label = name;\r\n return {\r\n clientData,\r\n clientList,\r\n showNewClient: false,\r\n selectedClientName: name,\r\n mode: null\r\n };\r\n }\r\n );\r\n\r\n }\r\n }\r\n adminTools = () => {\r\n return (\r\n \r\n {this.clientSelect()}\r\n\r\n \r\n {(this.state.documentFolders && this.state.documentFolders.length > 0) &&\r\n <>\r\n \r\n Edit Client\r\n \r\n this.setState({ showClientUsers: true })}\r\n >\r\n Manage Client Users\r\n \r\n \r\n }\r\n \r\n this.setState({mode: \"new\", showNewClient: true })}\r\n >\r\n Add New Client\r\n \r\n \r\n )\r\n\r\n }\r\n\r\n handleClientUsers = async () => {\r\n\r\n const inv = await getClientUserInvites(this.state.selectedClient);\r\n if (inv) {\r\n this.setState({ inv });\r\n }\r\n\r\n\r\n const usrs = await getClientUsers(this.state.selectedClient);\r\n if (usrs) {\r\n this.setState({ usrs });\r\n }\r\n }\r\n handleShowNewClientContact = () => {\r\n\r\n }\r\n clientUsers = () => {\r\n if (this.state.showClientUsers) {\r\n return (\r\n this.setState({ showClientUsers: false })}\r\n fullWidth={true}\r\n maxWidth=\"lg\"\r\n closeLabel=\"Close\"\r\n\r\n >\r\n this.setState({ showNewClientUser: true })}>\r\n \r\n {(this.state.inv && this.state.inv.length > 0 && this.state.inv !== \"error\") && this.state.inv.map((item, index) => {\r\n return this.invitedClientUser(item, index)\r\n })}\r\n {(this.state.usrs && this.state.usrs.length > 0) && this.state.usrs.map((item, index) => {\r\n return this.clientUser(item, index)\r\n })}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n return null\r\n }\r\n invitedClientUser = (item, index) => {\r\n return (\r\n this.handleShowConfirmDeleteInvitedClientUser(item.id, index)}\r\n >\r\n \r\n \r\n \r\n {\"Invited on \" + new Date(item.dateSent).toLocaleDateString()}\r\n \r\n \r\n \r\n )\r\n }\r\n clientUser = (item, index) => {\r\n return (\r\n this.handleShowConfirmDeleteClientUser(item.id, index)}\r\n primaryContent={item.user.firstName + \" \" + item.user.lastName}\r\n >\r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimblack, marginTop: \"auto\", marginBottom: \"auto\" }}>\r\n {item.user.email}\r\n \r\n \r\n )\r\n }\r\n\r\n clientUserInvitation = () => {\r\n if (this.state.showClientUserInvitation) {\r\n return (\r\n \r\n this.setState({ showClientUserInvitation: false })}\r\n />\r\n )\r\n }\r\n return null;\r\n } \r\n\r\n handleNewClientUser = async (values) => {\r\n if (values && values.length > 0) {\r\n this.setState({ showNewClientUser: false });\r\n const user = await newClientUser(this.props.businessID, this.state.selectedClient, ...values);\r\n if (user) {\r\n const usrs = this.state.usrs;\r\n usrs.push(user);\r\n this.setState({ usrs });\r\n }\r\n\r\n }\r\n }\r\n clientUserCreator = () => {\r\n if (this.state.showNewClientUser) {\r\n return (\r\n this.setState({ showNewClientUser: false })}\r\n handleSave={this.handleNewClientUser}\r\n fields={this.state.newClientUserFields}\r\n />\r\n )\r\n }\r\n return null;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {(this.state.clientData) &&\r\n \r\n \r\n this.props.dark ? theme.palette.common.dimwhite : theme.palette.common.dimwhite, marginTop: \"auto\", marginBottom: \"auto\" }}>\r\n {this.state.isAdmin ? \"Select Client:\" : \"Select Account\"}\r\n \r\n {this.state.isAdmin ? this.adminTools()\r\n\r\n :\r\n\r\n \r\n }\r\n\r\n \r\n {/* {(this.state.documentFolders && this.state.documentFolders.length > 0) &&*/}\r\n \r\n {/* }*/}\r\n \r\n }\r\n {this.clientAdder()}\r\n {this.clientUsers()}\r\n {this.clientUserInvitation()}\r\n {this.clientUserCreator() }\r\n \r\n )\r\n }\r\n}\r\n","import React, { useState } from 'react';\r\n\r\n//Custom\r\nimport { Spin } from \"../Common/Utilities/Spin\"\r\nimport { ModalDialog } from '../Common/Utilities/ModalDialog'\r\nimport { SectionFieldGroup } from '../Common/Utilities/SectionFieldGroup'\r\nimport { TextInput } from '../Common/Utilities/TextInput'\r\n\r\n//MUI\r\nimport PropTypes from 'prop-types';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport Button from '@mui/material/Button';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\nimport TextField from '@mui/material/TextField';\r\nimport Link from '@mui/material/Link';\r\nimport Paper from '@mui/material/Paper';\r\nimport Box from '@mui/material/Box';\r\nimport Grid from '@mui/material/Grid';\r\nimport LockOutlinedIcon from '@mui/icons-material/LockOutlined';\r\nimport LockOpenOutlinedIcon from '@mui/icons-material/LockOpenOutlined';\r\nimport Typography from '@mui/material/Typography';\r\nimport Alert from '@mui/material/Alert';\r\n\r\nimport { validateEmail } from '../DataServices/Utility'\r\nimport { createPasswordResetRequest } from '../DataServices/UserService'\r\nimport { sendEmail } from '../DataServices/EmailService'\r\nimport Linkify from 'react-linkify';\r\n\r\nasync function loginUser(credentials) {\r\n return fetch('home/login', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(credentials)\r\n })\r\n .then(data => data.json() )\r\n}\r\nasync function registerUser(credentials) {\r\n return fetch('home/register', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(credentials)\r\n })\r\n .then(data => data.json())\r\n}\r\nasync function addEmail(email) {\r\n\r\n const response = await fetch('home/addemail?type=' + 0 + '&email=' + email + '&primary=' + true, { method: 'POST' })\r\n const id = await response.text();\r\n return id;\r\n}\r\nfunction Copyright(props) {\r\n return (\r\n \r\n {'Copyright � '}\r\n \r\n LiveSphere\r\n {' '}\r\n {new Date().getFullYear()}\r\n {'.'}\r\n \r\n );\r\n}\r\n\r\nexport default function Login({ setToken, setUserInfo, appIdentifier, logo, buttonColor, accountRequestMessage }) {\r\n\r\n const [username, setUserName] = useState();\r\n const [password, setPassword] = useState();\r\n const [loggingIn, setLoggingIn] = useState(false);\r\n const [firstname, setFirstName] = useState();\r\n const [lastname, setLastName] = useState();\r\n const [showRequiredAlert, setShowRequiredAlert] = useState(false);\r\n const [showDupAlert, setDupAlert] = useState(false);\r\n const [showInvalidAlert, setInvalidAlert] = useState(false);\r\n const [newUser, setNewUser] = useState(false);\r\n const [showForgotPwd, setShowForgotPwd] = useState(false);\r\n const [showForgotPwdEmailSent, setShowForgotPwdEmailSent] = useState(false);\r\n const [showInvalidEmailAlert, setShowInvalidEmailAlert] = useState(false);\r\n\r\n\r\n\r\n const handleLoginSubmit = e => {\r\n e.preventDefault();\r\n setLoggingIn(true);\r\n Login();\r\n\r\n }\r\n const Login = async () => {\r\n const loginResult = await loginUser({\r\n username,\r\n password,\r\n AppID : appIdentifier\r\n });\r\n if (loginResult.success) {\r\n const token = loginResult.accessToken;\r\n setUserInfo(loginResult);\r\n setToken(token);\r\n }\r\n else {\r\n const token = ''\r\n setToken(token);\r\n setLoggingIn(false);\r\n setInvalidAlert(true);\r\n }\r\n }\r\n const handleRegisterSubmit = async e => {\r\n e.preventDefault();\r\n setToken(\"\");\r\n if (showInvalidEmailAlert) {\r\n return;\r\n }\r\n if(!username || !password || !firstname || !lastname) {\r\n setShowRequiredAlert(true);\r\n return;\r\n }\r\n const loginResult = await registerUser({\r\n username,\r\n password,\r\n firstname,\r\n lastname,\r\n appIdentifier\r\n });\r\n if (loginResult.accessToken === \"Duplicate\") {\r\n setDupAlert(true);\r\n }\r\n else {\r\n await addEmail(username);\r\n const token = loginResult.accessToken\r\n setUserInfo(loginResult);\r\n setToken(token);\r\n }\r\n }\r\n const handleNewUser = () => {\r\n setNewUser(true);\r\n setShowInvalidEmailAlert(false);\r\n\r\n }\r\n const handleExistingUser = () => {\r\n setNewUser(false);\r\n setShowInvalidEmailAlert(false);\r\n\r\n }\r\n const handleLoginUserNameChange = async e => {\r\n e.preventDefault();\r\n const email = e.target.value;\r\n\r\n setInvalidAlert(false);\r\n setUserName(email);\r\n setShowInvalidEmailAlert(false);\r\n\r\n }\r\n\r\n const handleLoginUserNameBlur = async e => {\r\n e.preventDefault();\r\n const email = e.target.value;\r\n if (validateEmail(email)) {\r\n setUserName(email);\r\n setShowInvalidEmailAlert(false);\r\n setDupAlert(false);\r\n }\r\n else {\r\n setShowInvalidEmailAlert(true);\r\n }\r\n }\r\n const handleLoginPasswordChange = async e => {\r\n e.preventDefault();\r\n setPassword(e.target.value);\r\n setShowRequiredAlert(false);\r\n setInvalidAlert(false);\r\n }\r\n const handleNewUserNameBlur = async e => {\r\n e.preventDefault();\r\n const email = e.target.value;\r\n if (validateEmail(email)) {\r\n setUserName(email);\r\n setShowInvalidEmailAlert(false);\r\n setDupAlert(false);\r\n }\r\n else {\r\n setShowInvalidEmailAlert(true);\r\n }\r\n }\r\n const handleNewUserNameChange = async e => {\r\n e.preventDefault();\r\n const email = e.target.value;\r\n setShowRequiredAlert(false);\r\n setShowInvalidEmailAlert(false);\r\n setDupAlert(false);\r\n setUserName(email);\r\n }\r\n const handleFirstNameChange = async e => {\r\n e.preventDefault();\r\n setFirstName(e.target.value);\r\n setShowRequiredAlert(false);\r\n setDupAlert(false);\r\n }\r\n const handleLastNameChange = async e => {\r\n e.preventDefault();\r\n setLastName(e.target.value);\r\n setShowRequiredAlert(false);\r\n setDupAlert(false);\r\n }\r\n const handleSubmitForgotPwd = async e => {\r\n const reqID = await createPasswordResetRequest(username);\r\n //const response = await sendEmail(username, \"\", 'Password Reset', 'https://localhost:44377/passwordreset/' + reqID, '', appIdentifier);\r\n let h = \"
\";\r\n h += \"\";\r\n h += \"
\";\r\n h += \"
\";\r\n h += \"

Password Reset

\";\r\n h += \"
Click below to reset password
\";\r\n h += \"Reset\";\r\n h += \"
\";\r\n const response = await sendEmail(username, \"\", 'Password Reset', h + reqID, '', appIdentifier);\r\n console.log(response);\r\n setShowForgotPwdEmailSent(true);\r\n }\r\n\r\n const forgotPwd = () => {\r\n return (\r\n setShowForgotPwd(false)}\r\n handleSave={!showForgotPwdEmailSent && handleSubmitForgotPwd}\r\n saveLabel={!showForgotPwdEmailSent ? \"Submit\" : \"Close\"}\r\n fullWidth={true}\r\n maxWidth=\"xs\"\r\n bold={true}\r\n >\r\n \r\n\r\n {showForgotPwdEmailSent ?\r\n {\"Password reset instructions send to \" + username}\r\n :\r\n \r\n }\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n let contents = \r\n <>\r\n {!newUser\r\n ?\r\n \r\n {logo ? \r\n \r\n \r\n \r\n\r\n :\r\n \r\n \r\n \r\n }\r\n\r\n \r\n Client Portal Login\r\n \r\n \r\n {showInvalidEmailAlert && Invalid email format.}\r\n \r\n {showInvalidAlert && Invalid username or password. Please try again.}\r\n \r\n Sign In\r\n \r\n \r\n \r\n \r\n \r\n ( {decoratedText} )}>\r\n \r\n {accountRequestMessage}\r\n \r\n \r\n \r\n
\r\n :\r\n \r\n \r\n \r\n \r\n \r\n Sign up for new account\r\n \r\n \r\n {showInvalidEmailAlert && Invalid email format.}\r\n \r\n \r\n \r\n {showRequiredAlert && All fields are required.}\r\n {showDupAlert && Email is associated to an existing LiveSphere account. If this is your email, please sign in. Otherwise, use a different email address.}\r\n \r\n Sign In\r\n \r\n \r\n \r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n\r\n \r\n\r\n return (\r\n \r\n {contents}\r\n {forgotPwd()}\r\n \r\n \r\n );\r\n}\r\n\r\n\r\nLogin.propTypes = {\r\n setToken: PropTypes.func.isRequired\r\n};","import { useState } from 'react';\r\n\r\nasync function CheckForTokens(appid) {\r\n const response = await fetch('home/checkfortokens?appid=' + appid);\r\n\r\n if (response.status !== 200) {\r\n return \"\";\r\n }\r\n else {\r\n const data = await response.json();\r\n if (!data || data === null || data === \"NoToken\") {\r\n return \"\";\r\n }\r\n return data.accessToken;\r\n\r\n }\r\n}\r\n\r\nexport default function useToken(appid) {\r\n const getToken = () => {\r\n return { token: CheckForTokens(appid) };\r\n };\r\n\r\n const [token, setToken] = useState(getToken());\r\n\r\n const saveToken = userToken => {\r\n \r\n setToken(userToken);\r\n };\r\n\r\n return {\r\n setToken: saveToken,\r\n token\r\n }\r\n}\r\n\r\n","\r\nexport async function getPage(id) {\r\n var url = \"webpage/getpage?id=\" + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\n\r\n\r\nexport async function addSection(pageid, name, title, subtitle, containertype) {\r\n const req = {\r\n PageID: pageid,\r\n Name: name,\r\n Title: title,\r\n Subtitle: subtitle,\r\n ContainerType: containertype ?? 0\r\n };\r\n const response = await fetch(\"webpage/addsection\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\nexport async function editSection(pageid, name, title, subtitle, containertype) {\r\n const req = {\r\n PageID: pageid,\r\n Name: name,\r\n Title: title,\r\n Subtitle: subtitle,\r\n ContainerType: containertype ?? 0\r\n };\r\n const response = await fetch(\"webpage/editsection\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\nexport async function addContent(pageid, sectionid, contenttypeid, refid, enabled, title, subtitle, previewtext, photoid) {\r\n const req = {\r\n PageID: pageid,\r\n SectionID: sectionid,\r\n ContentTypeID: contenttypeid,\r\n RefID: refid,\r\n enabled: enabled,\r\n Title: title,\r\n Subtitle: subtitle,\r\n PreviewText: previewtext,\r\n PhotoID: photoid\r\n };\r\n const response = await fetch(\"webpage/addcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function editContent(id, title, subtitle, previewtext) {\r\n const req = {\r\n ID: id,\r\n Title: title,\r\n Subtitle: subtitle,\r\n PreviewText: previewtext,\r\n };\r\n const response = await fetch(\"webpage/editcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\nexport async function setContentPhoto(id, photoid) {\r\n const req = {\r\n ID: id,\r\n PhotoID: photoid\r\n };\r\n const response = await fetch(\"webpage/setcontentphoto\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const id = await response.json();\r\n return id;\r\n }\r\n return null;\r\n}\r\nexport async function moveContent(id, index) {\r\n const req = {\r\n ID: id,\r\n Index: index\r\n };\r\n const response = await fetch(\"webpage/movecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return false;\r\n}\r\n\r\nexport async function deleteContent(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n const response = await fetch(\"webpage/deletecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return false;\r\n}\r\n\r\nexport async function enableContent(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n const response = await fetch(\"webpage/enablecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return false;\r\n}\r\n\r\nexport async function disableContent(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n const response = await fetch(\"webpage/disablecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return false;\r\n}\r\n\r\nexport async function getContactFormData(pageid, status) {\r\n if (status !== 0 && !status ) {\r\n status = -1;\r\n }\r\n var url = \"webpage/getcontactformdata?pageid=\" + pageid + \"&status=\" + status;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function addContactFormSubmission(pageid, first, last, email, ip, comment) {\r\n const req = {\r\n PageID: pageid,\r\n FirstName: first,\r\n LastName: last,\r\n Email: email,\r\n IpAddress: ip,\r\n Comment: comment\r\n };\r\n const response = await fetch(\"webpage/addcontactformsubmission\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return false;\r\n}\r\nexport async function updateContactFormSubmissionStatus(id, status) {\r\n const req = {\r\n ID: id,\r\n PageID: id,\r\n Status: status\r\n };\r\n const response = await fetch(\"webpage/updatecontactformsubmissionstatus\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return false;\r\n}\r\nexport async function getPageUsers(pageid) {\r\n var url = \"webpage/getpageusers?pageid=\" + pageid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getPageAdmins(pageid) {\r\n var url = \"webpage/getpageadmins?pageid=\" + pageid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function setUserType(userid, usertype) {\r\n const req = {\r\n UserID: userid,\r\n UserType: usertype\r\n };\r\n const response = await fetch(\"webpage/setusertype\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n return await response.json();\r\n }\r\n return null;\r\n}\r\nexport async function getContactNotificationRecipients(pageid) {\r\n var url = \"webpage/getcontactnotificationrecipients?pageid=\" + pageid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function addContactNotificationRecipient(pageid, email) {\r\n const req = {\r\n PageID: pageid,\r\n Email: email,\r\n };\r\n const response = await fetch(\"webpage/addcontactnotificationrecipient\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return false;\r\n}\r\nexport async function removeContactNotificationRecipient(id) {\r\n const req = {\r\n ID: id,\r\n };\r\n const response = await fetch(\"webpage/removecontactnotificationrecipient\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const result = await response.json();\r\n return result;\r\n }\r\n return false;\r\n}","export async function getUserBlogChannels(appid) {\r\n let url = 'blog/getuserblogchannels?appid=' + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getBlogChannel(id) {\r\n if (id) {\r\n let url = 'blog/getblogchannel?id=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//Returns new BlogChannelID\r\nexport async function createBlogChannel(ownerid, category, name, desc, allowsubscribers, allowinteractions, appid) {\r\n const req = { OwnerID: ownerid, Category: category, Name: name, Desc: desc, AllowSubscribers: allowsubscribers, AllowInteractions: allowinteractions, AppID : appid };\r\n const response = await fetch(\"blog/createblogchannel\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//Returns true is success\r\nexport async function editBlogChannel(id, category, name, desc, allowsubscribers, allowinteractions) {\r\n\r\n const req = { ID: id, Category: category, Name: name, Desc: desc, AllowSubscribers: allowsubscribers, AllowInteractions: allowinteractions };\r\n console.log(req);\r\n const response = await fetch(\"blog/editblogchannel\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//Returns true is success\r\nexport async function deleteBlogChannel(id) {\r\n const req = { ID: id };\r\n const response = await fetch(\"blog/deleteblogchannel\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getBlogTemplates() {\r\n let url = 'blog/getblogtemplates';\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\n//Returns new BlogTemplateID\r\nexport async function createBlogTemplate(name, photoid, styles) {\r\n const req = { Name: name, PhotoID: photoid, Styles: styles, AuthorID: \"\" };\r\n const response = await fetch(\"blog/createblogtemplate\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//Returns true is success\r\nexport async function editBlogTemplate(id, name, photoid, styles) {\r\n\r\n const req = { ID: id, Name: name, PhotoID: photoid, Styles: styles, AuthorID: \"\" };\r\n console.log(req);\r\n const response = await fetch(\"blog/editblogtemplate\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//Returns true is success\r\nexport async function deleteBlogTemplate(id) {\r\n const req = { ID: id };\r\n const response = await fetch(\"blog/deleteblogtemplate\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n//Returns true is success\r\nexport async function setChannelTemplate(id, templateid) {\r\n const req = { ID: id, TemplateID: templateid };\r\n const response = await fetch(\"blog/setchanneltemplate\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n//Returns true is success\r\nexport async function subscribe(id, userid) {\r\n const req = { ID: id, UserID: userid };\r\n const response = await fetch(\"blog/subscribe\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//Returns true is success\r\nexport async function unsubscribe(id, userid) {\r\n const req = { ID: id, UserID: userid };\r\n const response = await fetch(\"blog/unsubscribe\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function getUserBlogs(appid) {\r\n let url = 'blog/getuserblogs?appid=' + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\n\r\nexport async function getBlog(id) {\r\n if (id) {\r\n let url = 'blog/getblog?blogid=' + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//Returns new BlogID\r\nexport async function createBlog(category, parentid, allowinteractions, appid) {\r\n const req = { Category: category, ParentID: parentid, AllowInteractions: allowinteractions, AppID: appid };\r\n const response = await fetch(\"blog/createblog\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function editBlog(id, category, parentid, allowinteractions) {\r\n const req = { ID: id, Category: category, ParentID: parentid, AllowInteractions: allowinteractions };\r\n const response = await fetch(\"blog/editblog\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function updateHeader(id, title, subtitle) {\r\n const req = { BlogID: id, Title: title, SubTitle: subtitle };\r\n const response = await fetch(\"blog/updateheader\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function updateHeaderPhotoID(id, photoid) {\r\n const req = { BlogID: id, PhotoID: photoid };\r\n const response = await fetch(\"blog/updateheaderphotoid\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n//returns true is successful\r\nexport async function updateHeaderCoverPhotoID(id, photoid) {\r\n const req = { BlogID: id, PhotoID: photoid };\r\n const response = await fetch(\"blog/updateheadercoverphotoid\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\nexport async function updateAuthor(id, name, desc, fb, li, tw, ls) {\r\n const req = {\r\n BlogID: id,\r\n AuthorName: name,\r\n AuthorDesc: desc,\r\n AuthorFB: fb,\r\n AuthorLI: li,\r\n AuthorTW: tw,\r\n AuthorLS: ls\r\n };\r\n const response = await fetch(\"blog/updateauthor\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n\r\n\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function updateAuthorPhotoID(id, photoid) {\r\n const req = { BlogID: id, PhotoID: photoid };\r\n const response = await fetch(\"blog/updateauthorphotoid\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n//return rowid\r\nexport async function createBodyRow(id, numcols) {\r\n const req = { BlogID: id, NumCols: numcols };\r\n const response = await fetch(\"blog/createbodyrow\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function moveBodyRow(id, rowid, idx) {\r\n const req = { BlogID: id, RowID: rowid, Idx: idx };\r\n const response = await fetch(\"blog/movebodyrow\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function updateRowColCount(rowid, numcols) {\r\n const req = { RowID: rowid, NumCols: numcols };\r\n const response = await fetch(\"blog/updaterowcolcount\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function deleteRow(rowid) {\r\n const req = { RowID: rowid };\r\n const response = await fetch(\"blog/deleterow\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns contentid\r\nexport async function addContent(id, rowid, idx, contenttype, textcontent, photoid) {\r\n const req = { BlogID: id, RowID: rowid, Idx: idx, ContentType: contenttype, TextContent: textcontent, PhotoID: photoid };\r\n const response = await fetch(\"blog/addcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function editTextContent(id, textcontent) {\r\n const req = { ID: id, TextContent: textcontent };\r\n const response = await fetch(\"blog/edittextcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function updateContentPhotoID(id, photoid) {\r\n const req = { ID: id, PhotoID: photoid};\r\n const response = await fetch(\"blog/updatecontentphotoid\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function moveContent(id, idx) {\r\n const req = { ID: id, Idx: idx};\r\n const response = await fetch(\"blog/movecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function deleteContent(id) {\r\n const req = { ID: id };\r\n const response = await fetch(\"blog/deletecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function updateStatus(id, status) {\r\n const req = { ID: id, Status: status };\r\n const response = await fetch(\"blog/updatestatus\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n//returns true is successful\r\nexport async function deleteBlog(id) {\r\n const req = { BlogID: id };\r\n const response = await fetch(\"blog/deleteblog\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\n\r\n\r\n","\r\nexport async function getMyEvents(appid) {\r\n var url = \"event/getmyevents?appid=\" + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200) \r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getMyPastEvents(appid) {\r\n var url = \"event/getmypastevents?appid=\" + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getEventsImAttending(appid) {\r\n var url = \"event/geteventsimattending?appid=\" + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getAllEventsIAttended(appid) {\r\n var url = \"event/getalleventsiattended?appid=\" + appid;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function getEventInfo(id) {\r\n var url = \"event/getevent?id=\" + id;\r\n const response = await fetch(url);\r\n\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n \r\n return data;\r\n return null;\r\n}\r\nexport async function getAttendees(id) {\r\n var url = \"event/getattendees?id=\" + id;\r\n const response = await fetch(url);\r\n if (response.status !== 200)\r\n return \"error\";\r\n const data = await response.json();\r\n if (data)\r\n return data;\r\n return null;\r\n}\r\nexport async function createEvent(title, desc, type, ownerid, ownertype, start, end, website, email, phone, hostedby, locationdesc, street, city, state, zip, ispublic, admission, appid) {\r\n const req = { OwnerID: ownerid, OwnerType: ownertype, Title: title, Desc: desc, Type: type, Start: start, End: end, Website: website, Email: email, Phone: phone, HostedBy: hostedby, LocationDesc: locationdesc, Street: street, City: city, State: state, Zip: zip, Public: ispublic, Admission: admission, AppID: appid };\r\n\r\n const response = await fetch(\"event/createevent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function editEvent(id, title, desc, type, start, end, website, email, phone, hostedby, locationdesc, street, city, state, zip, ispublic, admission) {\r\n const req = { EventID: id, Title: title, Desc: desc, Type: type, Start: start, End: end, Website: website, Email: email, Phone: phone, HostedBy: hostedby, LocationDesc: locationdesc, Street: street, City: city, State: state, Zip: zip, Public: ispublic, Admission: admission };\r\n console.log(req);\r\n const response = await fetch(\"event/editevent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function deleteEvent(id) {\r\n const req = { EventID: id };\r\n const response = await fetch(\"event/deleteevent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function addAttendee(eventid, userid) {\r\n const req = { EventID: eventid, UserID: userid };\r\n const response = await fetch(\"event/addattendee\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function removeAttendee(id) {\r\n const req = { AttendeeID: id };\r\n const response = await fetch(\"event/removeattendee\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function addCoverPhoto(eventid, photoid) {\r\n const req = { EventID: eventid, PhotoID: photoid };\r\n const response = await fetch(\"event/addcoverphoto\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function addSchedule(eventid, title, desc, ispublic) {\r\n const req = { EventID: eventid, Title: title, Desc: desc, Public: ispublic };\r\n const response = await fetch(\"event/addschedule\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function editSchedule(id, title, desc, ispublic) {\r\n const req = { ScheduleID: id, Title: title, Desc: desc, Public: ispublic };\r\n const response = await fetch(\"event/editschedule\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function removeSchedule(id) {\r\n const req = { ScheduleID: id };\r\n const response = await fetch(\"event/removeschedule\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function addScheduleItem(scheduleid, title, desc, start, end) {\r\n const req = { ScheduleID: scheduleid, Title: title, Desc: desc,Start: start, End: end };\r\n const response = await fetch(\"event/addscheduleitem\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function editScheduleItem(itemid, title, desc, start, end) {\r\n const req = { ItemID: itemid, Title: title, Desc: desc, Start: start, End: end };\r\n const response = await fetch(\"event/editscheduleitem\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function removeScheduleItem(itemid) {\r\n const req = { ItemID: itemid };\r\n const response = await fetch(\"event/removescheduleitem\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function createBodyRow(id, numcols) {\r\n const req = { EventID: id, NumCols: numcols };\r\n const response = await fetch(\"event/createbodyrow\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function moveBodyRow(id, rowid, idx) {\r\n const req = { EventID: id, RowID: rowid, Idx: idx };\r\n const response = await fetch(\"event/movebodyrow\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function updateRowColCount(rowid, numcols) {\r\n const req = { RowID: rowid, NumCols: numcols };\r\n const response = await fetch(\"event/updaterowcolcount\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function deleteRow(rowid) {\r\n const req = { RowID: rowid };\r\n const response = await fetch(\"event/deleterow\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function addContent(id, rowid, idx, contenttype, textcontent, photoid) {\r\n const req = { EventID: id, RowID: rowid, Idx: idx, ContentType: contenttype, TextContent: textcontent, PhotoID: photoid };\r\n const response = await fetch(\"event/addcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function editTextContent(id, textcontent) {\r\n const req = { ID: id, TextContent: textcontent };\r\n const response = await fetch(\"event/edittextcontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function updateContentPhotoID(id, photoid) {\r\n const req = { ID: id, PhotoID: photoid };\r\n const response = await fetch(\"event/updatecontentphotoid\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function moveContent(id, idx) {\r\n const req = { ID: id, Idx: idx };\r\n const response = await fetch(\"event/movecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}\r\nexport async function deleteContent(id) {\r\n const req = { ID: id };\r\n const response = await fetch(\"event/deletecontent\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(req)\r\n })\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n return data;\r\n }\r\n return null;\r\n}","import React, { Component } from 'react';\r\n\r\n//Custom Components\r\nimport { Spin } from '../Common/Utilities/Spin';\r\nimport Login from './Login'\r\n\r\n\r\nimport { Box, Stack, Grid, Tooltip } from '@mui/material'\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\n\r\n//Database Services\r\nimport { getPage, getContactNotificationRecipients} from '../DataServices/WebPageService'\r\nimport { getPhotoThumb } from '../DataServices/PhotoService'\r\nimport { getBlog } from '../DataServices/BlogService'\r\nimport { getEventInfo } from '../DataServices/EventService'\r\nimport { getSiteData } from '../DataServices/SiteDataService'\r\nimport { getDocument, } from '../DataServices/DocumentService';\r\n\r\nexport class Landing extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n scrolledDown: false,\r\n showContactForm: false,\r\n showLogin: false,\r\n showDocumentViewer: false,\r\n height: 0,\r\n width: 0,\r\n anchorEl: null,\r\n }\r\n }\r\n updateWindowDimensions = () => {\r\n this.setState({ width: window.innerWidth, height: window.innerHeight });\r\n }\r\n componentDidMount() {\r\n this.updateWindowDimensions();\r\n window.addEventListener('resize', this.updateWindowDimensions);\r\n this.getSiteData();\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateWindowDimensions);\r\n }\r\n getSiteData = async () => {\r\n if (this.props.siteID) {\r\n const site = await getSiteData(this.props.siteID);\r\n if (site) {\r\n this.setState({ site });\r\n document.title = site.pageTitle;\r\n }\r\n else {\r\n this.setState({ loadError: true });\r\n }\r\n }\r\n this.setState({ loadError: true });\r\n }\r\n\r\n\r\n //Data fetchers\r\n getWebPage = async () => {\r\n const data = await getPage(this.props.webPageID);\r\n if (data === 'error') {\r\n this.props.setToken('');\r\n return;\r\n }\r\n if (data) {\r\n this.setState({ webPage: data });\r\n this.loadPageContent();\r\n }\r\n\r\n }\r\n loadPageContent = async () => {\r\n if (this.state.webPage && this.state.webPage.sections && this.state.webPage.sections.length > 0) {\r\n for (var i = 0; i < this.state.webPage.sections.length; i++) {\r\n let section = this.state.webPage.sections[i];\r\n if (section.content && section.content.length > 0) {\r\n for (var j = 0; j < section.content.length; j++) {\r\n let content = section.content[j];\r\n if (content.refID) {\r\n const type = content.contentTypeID;\r\n switch (type) {\r\n case 4:\r\n const data = await getBlog(content.refID);\r\n if (data) {\r\n const loadedData = await this.loadBlogSpecificContent(data);\r\n const webPage = this.state.webPage;\r\n webPage.sections[i].content[j].blogContent = loadedData;\r\n this.setState({ webPage });\r\n\r\n }\r\n break;\r\n case 8:\r\n\r\n const edata = await getEventInfo(content.refID);\r\n\r\n if (edata) {\r\n const eloadedData = await this.loadEventSpecificContent(edata);\r\n const ewebPage = this.state.webPage;\r\n ewebPage.sections[i].content[j].eventContent = eloadedData;\r\n this.setState({ webPage: ewebPage });\r\n\r\n }\r\n break;\r\n default:\r\n break;\r\n\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 Funcs\r\n\r\n content = () => {\r\n return (\r\n <>\r\n\r\n\r\n {this.login()}\r\n\r\n \r\n );\r\n }\r\n\r\n\r\n\r\n siteNotFound = () => {\r\n return (\r\n \r\n \r\n Site Not Found\r\n \r\n \r\n )\r\n }\r\n login = () => {\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 loadingSpinner = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n spacer = (y) => {\r\n return ()\r\n }\r\n staticSpacer = (y) => {\r\n return ()\r\n }\r\n\r\n render() {\r\n if (this.state.site) {\r\n return this.content();\r\n } else {\r\n if (this.state.loadError) \r\n return this.siteNotFound(); \r\n }\r\n return this.loadingSpinner();\r\n }\r\n}\r\n\r\n","// ----------------------------------------------------------------------\r\n\r\nconst shape = {\r\n borderRadius: 8,\r\n borderRadiusSm: 12,\r\n borderRadiusMd: 16\r\n};\r\n\r\nexport default shape;\r\n","// ----------------------------------------------------------------------\r\n\r\nconst sizes = {\r\n heights :{\r\n contentContainer: { xs: \"calc(100vh - 168px)\", sm: \"calc(100vh - 76px)\", lg: \"calc(100vh - 100px)\" },\r\n contentItemsContainer: { xs: \"calc(100vh - 148px)\", sm: \"calc(100vh - 150px)\", lg: \"calc(100vh - 100px)\" },\r\n // postContainer:\r\n },\r\n widths : {\r\n contentTabLeftContainer: { xs: \"110px\", sm: \"175px\" },\r\n contentContainerWithMenu: {\r\n xs: \"calc(100vh - 112px)\",\r\n sm: \"calc(100vh - 120px)\",\r\n lg: \"calc(100vh - 64px)\"\r\n }\r\n\r\n },\r\n}\r\n\r\nexport default sizes;\r\n","import { alpha } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nfunction createGradient(color1, color2) {\r\n return `linear-gradient(to bottom, ${color1}, ${color2})`;\r\n}\r\n\r\n// SETUP COLORS\r\nconst GREY = {\r\n 0: '#FFFFFF',\r\n 100: '#F9FAFB',\r\n 200: '#F4F6F8',\r\n 300: '#DFE3E8',\r\n 400: '#C4CDD5',\r\n 500: '#919EAB',\r\n 600: '#637381',\r\n 700: '#454F5B',\r\n 800: '#212121',\r\n 900: '#161C24',\r\n 500_8: alpha('#919EAB', 0.08),\r\n 500_12: alpha('#919EAB', 0.12),\r\n 500_16: alpha('#919EAB', 0.16),\r\n 500_24: alpha('#919EAB', 0.24),\r\n 500_32: alpha('#919EAB', 0.32),\r\n 500_48: alpha('#919EAB', 0.48),\r\n 500_56: alpha('#919EAB', 0.56),\r\n 500_80: alpha('#919EAB', 0.8)\r\n};\r\n\r\nconst PRIMARY = {\r\n lighter: '#E2E2E2',\r\n light: '#505050',\r\n main: '#212121',\r\n dark: '#000000',\r\n darker: '#005249',\r\n contrastText: '#fff'\r\n};\r\nconst SECONDARY = {\r\n lighter: '#97acd2',\r\n light: 'rgb(84, 100, 148)',\r\n main: '#32478C',\r\n main: '#384370',\r\n dark: '#00205e',\r\n darker: '#091A7A',\r\n contrastText: '#fff'\r\n};\r\nconst INFO = {\r\n lighter: '#D0F2FF',\r\n light: '#4f83cc',\r\n main: '#64b5f6',\r\n dark: '#0C53B7',\r\n darker: '#04297A',\r\n contrastText: '#fff'\r\n};\r\nconst SUCCESS = {\r\n lighter: '#E9FCD4',\r\n light: '#AAF27F',\r\n main: '#2c7216',\r\n dark: '#229A16',\r\n darker: '#08660D',\r\n contrastText: '#fff'\r\n};\r\nconst WARNING = {\r\n lighter: '#FFF7CD',\r\n light: '#534bae',\r\n main: '#1a237e',\r\n dark: '#000051',\r\n darker: '#7A4F01',\r\n contrastText: '#fff'\r\n};\r\nconst ERROR = {\r\n lighter: '#FFE7D9',\r\n light: '#FFA48D',\r\n main: '#FF4842',\r\n dark: '#B72136',\r\n darker: '#7A0C2E',\r\n contrastText: '#fff'\r\n};\r\n\r\nconst GRADIENTS = {\r\n primary: createGradient(PRIMARY.light, PRIMARY.main),\r\n info: createGradient(INFO.light, INFO.main),\r\n success: createGradient(SUCCESS.light, SUCCESS.main),\r\n warning: createGradient(WARNING.light, WARNING.main),\r\n error: createGradient(ERROR.light, ERROR.main)\r\n};\r\n\r\nconst CHART_COLORS = {\r\n violet: ['#826AF9', '#9E86FF', '#D0AEFF', '#F7D2FF'],\r\n blue: ['#2D99FF', '#83CFFF', '#A5F3FF', '#CCFAFF'],\r\n green: ['#2CD9C5', '#60F1C8', '#A4F7CC', '#C0F2DC'],\r\n yellow: ['#FFE700', '#FFEF5A', '#FFF7AE', '#FFF3D6'],\r\n red: ['#FF6C40', '#FF8F6D', '#FFBD98', '#FFF2D4']\r\n};\r\n\r\nconst palette = {\r\n maintoolbar: { dark: '#222', light: '#222' },\r\n maintoolbarHover: { dark: 'rgba(51, 71, 140, .7)', light: 'rgba(255,255,255,.9)' },\r\n subtoolbar: { dark: 'transparent', light: 'transparent' },\r\n subtoolbarHover: { dark: '#111', light: '#bbb'},\r\n subtoolbar2: { dark: '#0d0d0d', light: 'transparent' },\r\n backgroundMain: { dark: '#111', light: '#f2f3f7' },\r\n backgroundSecondary: { dark: '#050505', light: '#fff' },\r\n backgroundSecondaryAlt: { dark: '#080808', light: '#f3f5f7' },\r\n backgroundModal: { dark: '#222', light: 'rgba(255, 255, 255, 1)' },\r\n backgroundMenu: { dark: '#111', light: '#fff' },\r\n backgroundInput: { dark: '#101010', light: '#fff' },\r\n borderMenu: { dark: '1px solid #252525', light: 'none' },\r\n component: { dark: '#191919', light: '#f9f9f9' },\r\n component2: { dark: '#191919', light: '#ddd' },\r\n component3: { dark: '#151515', light: '#fafafa' },\r\n component4: { dark: '#202020', light: '#ddd' },\r\n component5: { dark: '#202020', light: '#f3f3f3' },\r\n component6: { dark: '#202020', light: '#eee' },\r\n adder: { dark: '#1a1a1a', light: '#f5f5f5' },\r\n titlebg: { dark: '#222', light: '#ddd' },\r\n docbg: { dark: '#222', light: '#fafafa' },\r\n item: { dark: '#151515', light: '#fff' },\r\n post: { dark: \"#222\", light: '#f9f9f9' }, \r\n repost: { dark: \"#2e2e2e\", light: '#fff' },\r\n card: { dark: \"#222\", light: 'rgba(255,255,255,.6)' },\r\n note: { dark: '#333', light: '#fafafa' },\r\n doc: { dark: '#333', light: '#fafafa' },\r\n comment: { dark: '#353535', light: '#e5e5e5' },\r\n reply: { dark: '#333', light: '#d5d5d5' },\r\n boxBorder: { dark: \"none\", light:\"solid 1px #ddd\"},\r\n reactionContainer: { dark: 'transparent', light: 'transparent' },\r\n myMessage: { dark: '#0d47a1', light: '#ccc' },\r\n otherMessage: { dark: '#333', light: '#eee' },\r\n myMessageAlt: { dark: '#0d47a1', light: '#ccc' },\r\n otherMessageAlt: { dark: '#333', light: '#eee' },\r\n selectedItem: { dark: '#444', light: '#ccc' },\r\n\r\n emoji: { dark: 'orange', light: 'orange' },\r\n purple: { dark: '#6200ea', light: '#6200ea' }, \r\n green: { dark: '#005005', light: '#2e7d32' },\r\n common: { black: '#000', white: '#eee', dimblack: '#444', dimwhite: '#bbb', dimmerblack: '#555', dimmerwhite: '#999', dimmestblack: '#777', dimmestwhite: '#666', disabled: '#999' },\r\n //photo: '#2962ff',\r\n //video: '#3949ab',\r\n //music: '#388e3c',\r\n //files: '#607d8b',\r\n //links: '#e64a19',\r\n //notes: '#fdd835',\r\n //lists: '#aa00ff',\r\n //market: '#009688',\r\n //contentHome: '#2196f3',\r\n photo: 'rgb(50,71,140)',\r\n video: 'rgb(50,71,140)',\r\n music: 'rgb(50,71,140)',\r\n files: 'rgb(50,71,140)',\r\n links: 'rgb(50,71,140)',\r\n notes: '#f9f9f9',\r\n lists: 'rgb(50,71,140)',\r\n market: 'rgb(50,71,140)',\r\n contentHome: 'rgb(50,71,140)',\r\n primary: { ...PRIMARY },\r\n secondary: { ...SECONDARY },\r\n info: { ...INFO },\r\n success: { ...SUCCESS },\r\n warning: { ...WARNING },\r\n error: { ...ERROR },\r\n grey: GREY,\r\n gradients: GRADIENTS,\r\n chart: CHART_COLORS,\r\n cardHover: GREY[100],\r\n divider: GREY[500_24],\r\n text: { primary: GREY[800], secondary: '#21558c', disabled: GREY[500] },\r\n background: { paper: '#fff', default: '#fff', neutral: GREY[200] },\r\n clear: 'transparent',\r\n action: {\r\n /* active: GREY[600],*/\r\n active: '#21558c',\r\n hover: GREY[500_8],\r\n selected: GREY[500_16],\r\n disabled: GREY[500_80],\r\n disabledBackground: GREY[500_24],\r\n focus: GREY[500_24],\r\n hoverOpacity: 0.08,\r\n disabledOpacity: 0.48\r\n }\r\n};\r\n\r\nexport default palette;\r\n","// ----------------------------------------------------------------------\r\n\r\nfunction pxToRem(value) {\r\n return `${value / 16}rem`;\r\n}\r\n\r\nfunction responsiveFontSizes({ sm, md, lg }) {\r\n return {\r\n '@media (min-width:600px)': {\r\n fontSize: pxToRem(sm)\r\n },\r\n '@media (min-width:900px)': {\r\n fontSize: pxToRem(md)\r\n },\r\n '@media (min-width:1200px)': {\r\n fontSize: pxToRem(lg)\r\n }\r\n };\r\n}\r\n\r\nconst FONT_PRIMARY = 'Times New Roman, Public Sans, sans-serif';\r\n\r\nconst typography = {\r\n // fontFamily: FONT_PRIMARY,\r\n fontWeightRegular: 400,\r\n fontWeightMedium: 600,\r\n fontWeightBold: 700,\r\n h1: {\r\n fontWeight: 700,\r\n lineHeight: 80 / 64,\r\n fontSize: pxToRem(40),\r\n ...responsiveFontSizes({ sm: 52, md: 58, lg: 64 })\r\n },\r\n h2: {\r\n fontWeight: 700,\r\n lineHeight: 64 / 48,\r\n fontSize: pxToRem(32),\r\n ...responsiveFontSizes({ sm: 40, md: 44, lg: 48 })\r\n },\r\n h3: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(24),\r\n ...responsiveFontSizes({ sm: 26, md: 30, lg: 32 })\r\n },\r\n h4: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(20),\r\n ...responsiveFontSizes({ sm: 20, md: 24, lg: 24 })\r\n },\r\n h5: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(18),\r\n ...responsiveFontSizes({ sm: 19, md: 20, lg: 20 })\r\n },\r\n h6: {\r\n fontWeight: 700,\r\n lineHeight: 28 / 18,\r\n fontSize: pxToRem(17),\r\n ...responsiveFontSizes({ sm: 18, md: 18, lg: 18 })\r\n },\r\n subtitle1: {\r\n fontWeight: 600,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(16)\r\n },\r\n subtitle2: {\r\n fontWeight: 600,\r\n lineHeight: 22 / 14,\r\n fontSize: pxToRem(14)\r\n },\r\n body1: {\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(16)\r\n },\r\n body2: {\r\n lineHeight: 22 / 14,\r\n fontSize: pxToRem(14)\r\n },\r\n caption: {\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(12)\r\n },\r\n overline: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(12),\r\n letterSpacing: 1.1,\r\n textTransform: 'uppercase'\r\n },\r\n button: {\r\n fontWeight: 700,\r\n lineHeight: 24 / 14,\r\n fontSize: pxToRem(14),\r\n textTransform: 'capitalize'\r\n }\r\n};\r\n\r\nexport default typography;\r\n","import { merge } from 'lodash';\r\nimport Card from './Card';\r\nimport Lists from './Lists';\r\nimport Paper from './Paper';\r\nimport Input from './Input';\r\nimport Button from './Button';\r\nimport Drawer from './Drawer';\r\nimport Tooltip from './Tooltip';\r\nimport Backdrop from './Backdrop';\r\nimport Typography from './Typography';\r\nimport IconButton from './IconButton';\r\nimport Autocomplete from './Autocomplete';\r\nimport AccordionSummary from './AccordionSummary';\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function ComponentsOverrides(theme) {\r\n return merge(\r\n Card(theme),\r\n Lists(theme),\r\n\r\n Input(theme),\r\n\r\n Button(theme),\r\n Tooltip(theme),\r\n Backdrop(theme),\r\n Typography(theme),\r\n IconButton(theme),\r\n Autocomplete(theme),\r\n AccordionSummary(theme)\r\n );\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Card(theme) {\r\n return {\r\n MuiCard: {\r\n styleOverrides: {\r\n //root: {\r\n // boxShadow: theme.customShadows.z1,\r\n // borderRadius: theme.shape.borderRadius,\r\n // position: 'relative',\r\n // zIndex: 0 // Fix Safari overflow: hidden with border radius\r\n //}\r\n //root: {\r\n // '&:hover': {\r\n // background:\"unset\"\r\n // }\r\n //},\r\n }\r\n },\r\n MuiCardHeader: {\r\n defaultProps: {\r\n titleTypographyProps: { variant: 'h6' },\r\n subheaderTypographyProps: { variant: 'body2' }\r\n },\r\n styleOverrides: {\r\n root: {\r\n padding: theme.spacing(1, 1, 0)\r\n }\r\n }\r\n },\r\n MuiCardContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: theme.spacing(1)\r\n }\r\n },\r\n },\r\n //MuiCardActionArea: {\r\n // styleOverrides: {\r\n // root: {\r\n // '&:hover': { opactity: .7}\r\n // }\r\n // }\r\n //}\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Lists(theme) {\r\n return {\r\n MuiListItemIcon: {\r\n styleOverrides: {\r\n root: {\r\n color: 'inherit',\r\n minWidth: 'auto',\r\n marginRight: theme.spacing(2)\r\n }\r\n }\r\n },\r\n MuiListItemAvatar: {\r\n styleOverrides: {\r\n root: {\r\n minWidth: 'auto',\r\n marginRight: theme.spacing(2)\r\n }\r\n }\r\n },\r\n MuiListItemText: {\r\n styleOverrides: {\r\n root: {\r\n marginTop: 0,\r\n marginBottom: 0\r\n },\r\n multiline: {\r\n marginTop: 0,\r\n marginBottom: 0\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Input(theme) {\r\n return {\r\n \r\n MuiInputBase: {\r\n styleOverrides: {\r\n input: {\r\n '&::placeholder': {\r\n opacity: 1,\r\n color: \"#ccc\"\r\n },\r\n color: \"#ccc\"\r\n }\r\n }\r\n },\r\n MuiInput: {\r\n styleOverrides: {\r\n underline:\r\n {\r\n '&:before': {\r\n borderBottomColor: \"#555\",\r\n },\r\n\r\n },\r\n \r\n\r\n }\r\n },\r\n MuiFilledInput: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: theme.palette.grey[500_12],\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[500_16]\r\n },\r\n '&.Mui-focused': {\r\n\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: theme.palette.action.disabledBackground\r\n }\r\n },\r\n underline: {\r\n '&:before': {\r\n borderBottomColor: theme.palette.grey[500_56]\r\n }\r\n }\r\n }\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n borderColor: theme.palette.grey[500_32]\r\n },\r\n '&.Mui-disabled': {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n borderColor: theme.palette.action.disabledBackground\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Button(theme) {\r\n return {\r\n MuiButton: {\r\n styleOverrides: {\r\n root: {\r\n style: {\r\n '&:hover': { backgroundColor: theme.palette.action.hover }\r\n }\r\n },\r\n sizeLarge: {\r\n height: 48\r\n },\r\n sizeXtraSmall: {\r\n height: 20\r\n },\r\n containedInherit: {\r\n /* color: theme.palette.grey[800],*/\r\n boxShadow: theme.customShadows.z8,\r\n //'&:hover': {\r\n // backgroundColor: theme.palette.grey[400]\r\n //}\r\n },\r\n containedPrimary: {\r\n boxShadow: theme.customShadows.primary\r\n },\r\n containedSecondary: {\r\n boxShadow: theme.customShadows.secondary\r\n },\r\n outlinedInherit: {\r\n border: `1px solid ${theme.palette.grey[500_32]}`,\r\n //'&:hover': {\r\n // backgroundColor: theme.palette.action.hover\r\n //}\r\n },\r\n textInherit: {\r\n //'&:hover': {\r\n // backgroundColor: theme.palette.action.hover\r\n //}\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Tooltip(theme) {\r\n return {\r\n MuiTooltip: {\r\n styleOverrides: {\r\n tooltip: {\r\n backgroundColor: theme.palette.grey[800],\r\n padding:\"8px\",\r\n },\r\n arrow: {\r\n color: theme.palette.grey[800]\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","import { alpha } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Backdrop(theme) {\r\n const varLow = alpha(theme.palette.grey[900], 0.38);\r\n const varHigh = alpha(theme.palette.grey[900], 1);\r\n\r\n return {\r\n MuiBackdrop: {\r\n styleOverrides: {\r\n root: {\r\n background: [\r\n //`rgb(22,28,36)`,\r\n //`-moz-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`,\r\n //`-webkit-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`,\r\n //`linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`\r\n 'rgba(10,10,10,.5)'\r\n ],\r\n '&.MuiBackdrop-invisible': {\r\n background: 'transparent'\r\n }\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Typography(theme) {\r\n return {\r\n MuiTypography: {\r\n styleOverrides: {\r\n paragraph: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n gutterBottom: {\r\n marginBottom: theme.spacing(1)\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function IconButton(theme) {\r\n return {\r\n MuiIconButton: {\r\n variants: [\r\n {\r\n props: { color: 'default' },\r\n style: {\r\n '&:hover': { backgroundColor: theme.palette.action.hover }\r\n }\r\n },\r\n {\r\n props: { color: 'inherit' },\r\n style: {\r\n '&:hover': { backgroundColor: theme.palette.action.hover }\r\n }\r\n }\r\n ],\r\n\r\n styleOverrides: {\r\n root: {}\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Autocomplete(theme) {\r\n return {\r\n MuiAutocomplete: {\r\n //styleOverrides: {\r\n // paper: {\r\n // boxShadow: theme.customShadows.z20,\r\n\r\n // },\r\n // input: {\r\n // boxShadow: theme.customShadows.z1,\r\n\r\n // },\r\n\r\n //}\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function AccordionSummary(theme) {\r\n return {\r\n\r\n MuiAccordionSummary: {\r\n styleOverrides: {\r\n root: {\r\n '&.Mui-focused': {\r\n backgroundColor: \"transparent\"\r\n }\r\n },\r\n\r\n }\r\n },\r\n MuiExpanded: {\r\n styleOverrides: {\r\n root: {\r\n '&.Mui-focused': {\r\n backgroundColor: \"transparent\"\r\n }\r\n },\r\n MuiAccordionSummary: {\r\n styleOverrides: {\r\n root: {\r\n '&.Mui-focused': {\r\n backgroundColor: \"transparent\"\r\n }\r\n },\r\n\r\n }\r\n },\r\n\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n };\r\n}\r\n","// material\r\nimport { alpha } from '@mui/material/styles';\r\nimport palette from './palette';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst LIGHT_MODE = palette.grey[800];\r\n\r\nconst createShadow = (color) => {\r\n const transparent1 = alpha(color, 0.2);\r\n const transparent2 = alpha(color, 0.14);\r\n const transparent3 = alpha(color, 0.12);\r\n return [\r\n 'none',\r\n `0px 2px 1px -1px ${transparent1},0px 1px 1px 0px ${transparent2},0px 1px 3px 0px ${transparent3}`,\r\n `0px 3px 1px -2px ${transparent1},0px 2px 2px 0px ${transparent2},0px 1px 5px 0px ${transparent3}`,\r\n `0px 3px 3px -2px ${transparent1},0px 3px 4px 0px ${transparent2},0px 1px 8px 0px ${transparent3}`,\r\n `0px 2px 4px -1px ${transparent1},0px 4px 5px 0px ${transparent2},0px 1px 10px 0px ${transparent3}`,\r\n `0px 3px 5px -1px ${transparent1},0px 5px 8px 0px ${transparent2},0px 1px 14px 0px ${transparent3}`,\r\n `0px 3px 5px -1px ${transparent1},0px 6px 10px 0px ${transparent2},0px 1px 18px 0px ${transparent3}`,\r\n `0px 4px 5px -2px ${transparent1},0px 7px 10px 1px ${transparent2},0px 2px 16px 1px ${transparent3}`,\r\n `0px 5px 5px -3px ${transparent1},0px 8px 10px 1px ${transparent2},0px 3px 14px 2px ${transparent3}`,\r\n `0px 5px 6px -3px ${transparent1},0px 9px 12px 1px ${transparent2},0px 3px 16px 2px ${transparent3}`,\r\n `0px 6px 6px -3px ${transparent1},0px 10px 14px 1px ${transparent2},0px 4px 18px 3px ${transparent3}`,\r\n `0px 6px 7px -4px ${transparent1},0px 11px 15px 1px ${transparent2},0px 4px 20px 3px ${transparent3}`,\r\n `0px 7px 8px -4px ${transparent1},0px 12px 17px 2px ${transparent2},0px 5px 22px 4px ${transparent3}`,\r\n `0px 7px 8px -4px ${transparent1},0px 13px 19px 2px ${transparent2},0px 5px 24px 4px ${transparent3}`,\r\n `0px 7px 9px -4px ${transparent1},0px 14px 21px 2px ${transparent2},0px 5px 26px 4px ${transparent3}`,\r\n `0px 8px 9px -5px ${transparent1},0px 15px 22px 2px ${transparent2},0px 6px 28px 5px ${transparent3}`,\r\n `0px 8px 10px -5px ${transparent1},0px 16px 24px 2px ${transparent2},0px 6px 30px 5px ${transparent3}`,\r\n `0px 8px 11px -5px ${transparent1},0px 17px 26px 2px ${transparent2},0px 6px 32px 5px ${transparent3}`,\r\n `0px 9px 11px -5px ${transparent1},0px 18px 28px 2px ${transparent2},0px 7px 34px 6px ${transparent3}`,\r\n `0px 9px 12px -6px ${transparent1},0px 19px 29px 2px ${transparent2},0px 7px 36px 6px ${transparent3}`,\r\n `0px 10px 13px -6px ${transparent1},0px 20px 31px 3px ${transparent2},0px 8px 38px 7px ${transparent3}`,\r\n `0px 10px 13px -6px ${transparent1},0px 21px 33px 3px ${transparent2},0px 8px 40px 7px ${transparent3}`,\r\n `0px 10px 14px -6px ${transparent1},0px 22px 35px 3px ${transparent2},0px 8px 42px 7px ${transparent3}`,\r\n `0px 11px 14px -7px ${transparent1},0px 23px 36px 3px ${transparent2},0px 9px 44px 8px ${transparent3}`,\r\n `0px 11px 15px -7px ${transparent1},0px 24px 38px 3px ${transparent2},0px 9px 46px 8px ${transparent3}`\r\n ];\r\n};\r\n\r\nconst createCustomShadow = (color) => {\r\n const transparent = alpha(color, 0.24);\r\n\r\n return {\r\n z1: `0 1px 2px 0 ${transparent}`,\r\n z8: `0 8px 16px 0 ${transparent}`,\r\n z12: `0 0 2px 0 ${transparent}, 0 12px 24px 0 ${transparent}`,\r\n z16: `0 0 2px 0 ${transparent}, 0 16px 32px -4px ${transparent}`,\r\n z20: `0 0 2px 0 ${transparent}, 0 20px 40px -4px ${transparent}`,\r\n z24: `0 0 4px 0 ${transparent}, 0 24px 48px 0 ${transparent}`,\r\n primary: `0 8px 16px 0 ${alpha(palette.primary.main, 0.24)}`,\r\n secondary: `0 8px 16px 0 ${alpha(palette.secondary.main, 0.24)}`,\r\n info: `0 8px 16px 0 ${alpha(palette.info.main, 0.24)}`,\r\n success: `0 8px 16px 0 ${alpha(palette.success.main, 0.24)}`,\r\n warning: `0 8px 16px 0 ${alpha(palette.warning.main, 0.24)}`,\r\n error: `0 8px 16px 0 ${alpha(palette.error.main, 0.24)}`\r\n };\r\n};\r\n\r\nexport const customShadows = createCustomShadow(LIGHT_MODE);\r\n\r\nconst shadows = createShadow(LIGHT_MODE);\r\n\r\nexport default shadows;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useMemo } from 'react';\r\n// material\r\nimport { CssBaseline } from '@mui/material';\r\nimport { ThemeProvider, createTheme, StyledEngineProvider } from '@mui/material/styles';\r\n//\r\nimport shape from './shape';\r\nimport sizes from './sizes';\r\nimport palette from './palette';\r\nimport typography from './typography';\r\nimport componentsOverride from './overrides';\r\nimport shadows, { customShadows } from './shadows';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nThemeConfig.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport default function ThemeConfig({ children }) {\r\n const themeOptions = useMemo(\r\n () => ({\r\n palette,\r\n shape,\r\n typography,\r\n shadows,\r\n customShadows,\r\n sizes\r\n }),\r\n []\r\n );\r\n\r\n const theme = createTheme(themeOptions);\r\n theme.components = componentsOverride(theme);\r\n // \r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n","import React, { useState } from 'react';\r\nimport { Switch, Route } from \"react-router-dom\";\r\n\r\n//Data Services\r\nimport { getPhotoThumb } from './components/DataServices/PhotoService'\r\nimport { getUserInfo, getUserTheme, setUserTheme } from './components/DataServices/UserService'\r\nimport { getSiteData } from './components/DataServices/SiteDataService'\r\n//Livesphere components\r\nimport { Layout } from './components/Common/Layout/Layout';\r\nimport { Home } from './components/Common/Layout/Home';\r\nimport Login from './components/SiteSpecific/Login';\r\nimport ChangePassword from './components/SiteSpecific/ChangePassword';\r\nimport useToken from './components/Common/Helpers/useToken';\r\nimport { Spin } from './components/Common/Utilities/Spin';\r\nimport { Landing } from './components/SiteSpecific/Landing';\r\n\r\n//MUI\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport ThemeConfig from './theme';\r\n\r\n//Styles\r\nimport './Styles/common.css';\r\nimport './Styles/datagrid.css'\r\n\r\n\r\n\r\nfunction App() {\r\n // const appIdentifier = \"LS\";\r\n let sitepath;\r\n let webPageID;\r\n let businessid;\r\n let businessName;\r\n switch (window.location.hostname) {\r\n case \"simplebluetech.com\":\r\n case \"www.simplebluetech.com\":\r\n webPageID = \"simplebluetech\";\r\n break;\r\n case \"stallingsandassociates.com\":\r\n case \"www.stallingsandassociates.com\":\r\n webPageID = \"stallingsandassociates\";\r\n businessid = \"555193b5-a13e-4a7f-a15d-3bdd9107a193\";\r\n break;\r\n case \"carsonrobertsonmusic.com\":\r\n case \"www.carsonrobertsonmusic.com\":\r\n //case \"dogtight.com\":\r\n //case \"www.dogtight.com\":\r\n webPageID = \"carsonrobertsonmusic\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if ((window.location.hostname === \"localhost\" || window.location.hostname === \"174.138.118.45\" || window.location.hostname === \"mylivesphere.com\") && window.location.pathname.length > 2) {\r\n sitepath = window.location.pathname.replace(\"/\", \"\").toLowerCase();\r\n console.log(sitepath);\r\n if (sitepath.startsWith(\"portals\")) {\r\n\r\n webPageID = sitepath.split(\"/\")[1];\r\n if (webPageID) {\r\n // webPageID = sitepath.replace(\"/\", \"\").toLowerCase();\r\n console.log(webPageID);\r\n if (webPageID === \"stallingsandassociates\") {\r\n businessid = \"555193b5-a13e-4a7f-a15d-3bdd9107a193\";\r\n businessName = \"Stallings and Associates\";\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n let site = getSiteData(webPageID);\r\n\r\n\r\n const getLocalUserInfo = () => {\r\n const localUserString = localStorage.getItem(\"user\");\r\n let user;\r\n if (localUserString) {\r\n try {\r\n user = JSON.parse(localUserString);\r\n } catch (e) {\r\n user = null;\r\n }\r\n }\r\n\r\n return user;\r\n }\r\n const { token, setToken } = useToken(webPageID);\r\n const [loaded, setLoaded] = useState(false);\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [passwordResetRequest, setPasswordResetRequest ] = useState();\r\n const [userInfo, setUserInfo] = useState(getLocalUserInfo() ?? null);\r\n const [dark, setDark] = useState(true);\r\n const [photoRepo, setPhotoRepo] = useState();\r\n const setTheme = async (isDark) => {\r\n let theme = \"light\";\r\n if (isDark) {\r\n theme = \"dark\";\r\n setDark(true);\r\n localStorage.setItem(\"theme\", \"dark\");\r\n }\r\n else {\r\n setDark(false);\r\n localStorage.setItem(\"theme\", \"light\");\r\n }\r\n await setUserTheme(theme);\r\n }\r\n const getTheme = async () => {\r\n const localTheme = localStorage.getItem(\"theme\");\r\n let theme;\r\n if (!localTheme || (localTheme !== \"dark\" && localTheme != \"light\")) {\r\n theme = await getUserTheme();\r\n localStorage.setItem(\"theme\", theme === \"dark\" ? \"dark\" : \"light\");\r\n }\r\n else {\r\n theme = localTheme;\r\n }\r\n \r\n theme === \"dark\" ? setDark(true) : setDark(false);\r\n }\r\n const getUser = async () => {\r\n let user = getLocalUserInfo();\r\n if (!user) {\r\n user = await getUserInfo(webPageID);\r\n if (user.success) {\r\n let userString = JSON.stringify(user);\r\n localStorage.setItem(\"user\", userString);\r\n }\r\n else {\r\n user = null;\r\n }\r\n }\r\n setUserInfo(user);\r\n }\r\n const setUserInfoCallback = (user) => {\r\n let userString = JSON.stringify(user);\r\n try {\r\n localStorage.setItem(\"user\", userString);\r\n }\r\n catch (err) {\r\n console.log(err);\r\n }\r\n\r\n setUserInfo(user);\r\n\r\n }\r\n const getPhoto = async (id, size) => {\r\n let photo = photoRepo.find((x) => x.photoID === id);\r\n const idx = photoRepo.indexOf(photo);\r\n if (photo) {\r\n if (size === \"full\") {\r\n if (photo.fullPhoto) {\r\n return photo;\r\n }\r\n else {\r\n photo = await getPhoto(photo.photoID);\r\n photoRepo.splice(idx, 1);\r\n photoRepo.push(photo);\r\n return photo;\r\n }\r\n }\r\n else {\r\n if (photo.thumb) {\r\n return photo;\r\n }\r\n else {\r\n const thumb = await getPhotoThumb(photo.photoID);\r\n if (thumb) {\r\n photoRepo[idx].thumb = thumb.thumb;\r\n }\r\n return photoRepo[idx];\r\n }\r\n }\r\n }\r\n else {\r\n if (size === \"full\") {\r\n photo = await getPhoto(id)\r\n photoRepo.push(photo);\r\n return photo;\r\n }\r\n else {\r\n photo = await getPhotoThumb(id)\r\n photoRepo.push(photo);\r\n return photo;\r\n }\r\n\r\n }\r\n }\r\n //const [searchParams, setSearchParams] = useSearchParams();\r\n const [topic, setTopic] = useState('content');\r\n const [authenticated, setAuthenticated] = useState(false);\r\n const [newRegistration, setNewRegistration] = useState(false);\r\n const [isAdmin, setIsAdmin] = useState(false);\r\n\r\n if (!loaded) {\r\n if(!userInfo || userInfo.userID === null) getUser();\r\n getTheme();\r\n setPhotoRepo([]);\r\n setLoaded(true);\r\n }\r\n\r\n\r\n\r\n const landingSite = () => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n const portal = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n const content = () => {\r\n return (\r\n \r\n {(!token || !userInfo || !userInfo.accessToken) ?\r\n landingSite()\r\n :\r\n userInfo ?\r\n portal()\r\n :\r\n \r\n }\r\n \r\n )\r\n }\r\n\r\n return content();\r\n\r\n}\r\n\r\nexport default App;\r\n\r\n\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport registerServiceWorker from './components/Common/Helpers/registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\n//ReactDOM.render(\r\n// \r\n// \r\n// ,\r\n// rootElement);\r\n\r\nconst root = createRoot(rootElement);\r\nroot.render(\r\n \r\n \r\n \r\n);\r\nregisterServiceWorker();\r\n\r\n"],"sourceRoot":""}