diff --git a/src/views/info-view.jsx b/src/views/info-view.jsx index 80fd5377..93822fe2 100644 --- a/src/views/info-view.jsx +++ b/src/views/info-view.jsx @@ -396,14 +396,19 @@ class InfoView extends React.Component { return; } + const isMe = this.props.tinode.isMe(params.topicName); const menuItems = [ {title: formatMessage(messages.edit_permissions), handler: () => { - this.handleLaunchPermissionsEditor('user', params.topicName); - }}, - 'member_delete', - user.acs.isMuted() ? 'member_unmute' : 'member_mute', - user.acs.isJoiner() ? 'member_block' : 'member_unblock' + this.handleLaunchPermissionsEditor(isMe ? 'want' : 'user', params.topicName); + }} ]; + if (!isMe) { + menuItems.push('member_delete'); + } + menuItems.push(user.acs.isMuted() ? 'member_unmute' : 'member_mute'); + if (!isMe) { + menuItems.push(user.acs.isJoiner() ? 'member_block' : 'member_unblock'); + } this.props.showContextMenu({ topicName: this.props.topic, x: params.x, @@ -413,7 +418,6 @@ class InfoView extends React.Component { render() { const args = (this.props.panel || 'info').split('/'); - console.log("args:", args); const view = args[0]; args.shift(); @@ -533,17 +537,15 @@ class InfoView extends React.Component { : null}
-
-
- - -
+
+ +
-
+
{e.preventDefault(); this.props.onNavigate('security');}}> security  @@ -552,36 +554,34 @@ class InfoView extends React.Component { {this.state.groupTopic && this.state.sharer ? <>
-
-
- -
-
- { - (no_members) => - } +
+
+ + { + (no_members) => + } : null diff --git a/src/views/tinode-web.jsx b/src/views/tinode-web.jsx index 40dc21c9..3054df05 100644 --- a/src/views/tinode-web.jsx +++ b/src/views/tinode-web.jsx @@ -565,8 +565,9 @@ class TinodeWeb extends React.Component { cred = Tinode.credential(cred); // Try to login with login/password. If they are not available, try token. If no token, ask for login/password. let promise = null; - const token = this.tinode.getAuthToken(); + let token = this.tinode.getAuthToken(); if (login && password) { + token = null; this.setState({password: null}); promise = this.tinode.loginBasic(login, password, cred); } else if (token) { @@ -594,7 +595,9 @@ class TinodeWeb extends React.Component { autoLogin: false }); this.handleError(err.message, 'err'); - localStorage.removeItem('auth-token'); + if (token) { + this.handleLogout(); + } HashNavigation.navigateTo(''); }); } else { diff --git a/umd/index.dev.js b/umd/index.dev.js index 04d1ae29..23d4afc5 100644 --- a/umd/index.dev.js +++ b/umd/index.dev.js @@ -2227,12 +2227,24 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) return; } + const isMe = this.props.tinode.isMe(params.topicName); const menuItems = [{ title: formatMessage(messages.edit_permissions), handler: () => { - this.handleLaunchPermissionsEditor('user', params.topicName); + this.handleLaunchPermissionsEditor(isMe ? 'want' : 'user', params.topicName); } - }, 'member_delete', user.acs.isMuted() ? 'member_unmute' : 'member_mute', user.acs.isJoiner() ? 'member_block' : 'member_unblock']; + }]; + + if (!isMe) { + menuItems.push('member_delete'); + } + + menuItems.push(user.acs.isMuted() ? 'member_unmute' : 'member_mute'); + + if (!isMe) { + menuItems.push(user.acs.isJoiner() ? 'member_block' : 'member_unblock'); + } + this.props.showContextMenu({ topicName: this.props.topic, x: params.x, @@ -2243,7 +2255,6 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) render() { const args = (this.props.panel || 'info').split('/'); - console.log("args:", args); const view = args[0]; args.shift(); const { @@ -2386,8 +2397,6 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) })), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, this.state.description)) : null), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "hr" }), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { - className: "panel-form-column" - }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "panel-form-row" }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, { id: "label_muting_topic", @@ -2399,10 +2408,10 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) name: "P", checked: this.state.muted, onChange: this.handleMuted - }))), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { + })), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "hr" }), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { - className: "panel-form-column" + className: "panel-form-row" }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", { href: "#", className: "flat-button", @@ -2421,8 +2430,6 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) }))), this.state.groupTopic && this.state.sharer ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "hr" }), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { - className: "panel-form-column" - }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "panel-form-row" }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("label", { className: "small" @@ -2464,7 +2471,7 @@ class InfoView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) noScroll: true, onTopicSelected: this.handleMemberSelected, showContextMenu: this.state.admin ? this.handleContextMenu : false - })))) : null)); + }))) : null)); } } @@ -5421,9 +5428,10 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) cred = tinode_sdk__WEBPACK_IMPORTED_MODULE_4___default().credential(cred); let promise = null; - const token = this.tinode.getAuthToken(); + let token = this.tinode.getAuthToken(); if (login && password) { + token = null; this.setState({ password: null }); @@ -5456,7 +5464,11 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) autoLogin: false }); this.handleError(err.message, 'err'); - localStorage.removeItem('auth-token'); + + if (token) { + this.handleLogout(); + } + _lib_navigation_js__WEBPACK_IMPORTED_MODULE_15__.default.navigateTo(''); }); } else { diff --git a/umd/index.prod.js.map b/umd/index.prod.js.map index ee5714be..08026aa8 100644 --- a/umd/index.prod.js.map +++ b/umd/index.prod.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://tinode-webapp/external \"React\"","webpack://tinode-webapp/external \"ReactDOM\"","webpack://tinode-webapp/external \"ReactIntl\"","webpack://tinode-webapp/external \"firebase\"","webpack://tinode-webapp/external \"Tinode\"","webpack://tinode-webapp/external [\"firebase\",\"messaging\"]","webpack://tinode-webapp/./src/widgets/alert.jsx","webpack://tinode-webapp/./src/version.js","webpack://tinode-webapp/./src/config.js","webpack://tinode-webapp/./src/widgets/context-menu.jsx","webpack://tinode-webapp/./src/lib/strformat.js","webpack://tinode-webapp/./src/lib/utils.js","webpack://tinode-webapp/./src/widgets/letter-tile.jsx","webpack://tinode-webapp/./src/widgets/load-spinner.jsx","webpack://tinode-webapp/./src/widgets/avatar-upload.jsx","webpack://tinode-webapp/./src/widgets/badge-list.jsx","webpack://tinode-webapp/./src/widgets/checkbox.jsx","webpack://tinode-webapp/./src/widgets/contact-badges.jsx","webpack://tinode-webapp/./src/widgets/received-marker.jsx","webpack://tinode-webapp/./src/widgets/unread-badge.jsx","webpack://tinode-webapp/./src/widgets/contact.jsx","webpack://tinode-webapp/./src/widgets/contact-action.jsx","webpack://tinode-webapp/./src/lib/blob-helpers.js","webpack://tinode-webapp/./src/widgets/contact-list.jsx","webpack://tinode-webapp/./src/widgets/menu-cancel.jsx","webpack://tinode-webapp/./src/widgets/error-panel.jsx","webpack://tinode-webapp/./src/widgets/chip.jsx","webpack://tinode-webapp/./src/widgets/chip-input.jsx","webpack://tinode-webapp/./src/widgets/group-manager.jsx","webpack://tinode-webapp/./src/widgets/permissions-editor.jsx","webpack://tinode-webapp/./src/widgets/cropper.jsx","webpack://tinode-webapp/./src/widgets/avatar-crop.jsx","webpack://tinode-webapp/./src/widgets/visible-password.jsx","webpack://tinode-webapp/./src/widgets/in-place-edit.jsx","webpack://tinode-webapp/./src/widgets/tag-manager.jsx","webpack://tinode-webapp/./src/widgets/topic-desc-edit.jsx","webpack://tinode-webapp/./src/widgets/topic-common.jsx","webpack://tinode-webapp/./src/widgets/topic-security.jsx","webpack://tinode-webapp/./src/views/info-view.jsx","webpack://tinode-webapp/./src/widgets/file-progress.jsx","webpack://tinode-webapp/./src/widgets/attachment.jsx","webpack://tinode-webapp/./src/widgets/uploading-image.jsx","webpack://tinode-webapp/./src/widgets/chat-message.jsx","webpack://tinode-webapp/./src/widgets/send-message.jsx","webpack://tinode-webapp/./src/widgets/doc-preview.jsx","webpack://tinode-webapp/./src/widgets/group-subs.jsx","webpack://tinode-webapp/./src/widgets/image-preview.jsx","webpack://tinode-webapp/./src/widgets/invitation.jsx","webpack://tinode-webapp/./src/views/logo-view.jsx","webpack://tinode-webapp/./src/lib/navigation.js","webpack://tinode-webapp/./src/views/messages-view.jsx","webpack://tinode-webapp/./src/widgets/button-back.jsx","webpack://tinode-webapp/./src/widgets/menu-contacts.jsx","webpack://tinode-webapp/./src/widgets/menu-start.jsx","webpack://tinode-webapp/./src/widgets/side-navbar.jsx","webpack://tinode-webapp/./src/views/account-settings-view.jsx","webpack://tinode-webapp/./src/views/contacts-view.jsx","webpack://tinode-webapp/./src/lib/local-storage.js","webpack://tinode-webapp/./src/views/create-account-view.jsx","webpack://tinode-webapp/./src/views/acc-notifications-view.jsx","webpack://tinode-webapp/./src/views/acc-security-view.jsx","webpack://tinode-webapp/./src/views/acc-support-view.jsx","webpack://tinode-webapp/./src/views/login-view.jsx","webpack://tinode-webapp/./src/widgets/new-topic-by-id.jsx","webpack://tinode-webapp/./src/widgets/new-topic-group.jsx","webpack://tinode-webapp/./src/widgets/search-contacts.jsx","webpack://tinode-webapp/./src/views/new-topic-view.jsx","webpack://tinode-webapp/./src/views/password-reset-view.jsx","webpack://tinode-webapp/./src/widgets/host-selector.jsx","webpack://tinode-webapp/./src/views/settings-view.jsx","webpack://tinode-webapp/./src/views/validation-view.jsx","webpack://tinode-webapp/./src/views/sidepanel-view.jsx","webpack://tinode-webapp/./src/lib/host-name.js","webpack://tinode-webapp/./src/views/tinode-web.jsx","webpack://tinode-webapp/./src/index.js","webpack://tinode-webapp/webpack/bootstrap","webpack://tinode-webapp/webpack/runtime/compat get default export","webpack://tinode-webapp/webpack/runtime/define property getters","webpack://tinode-webapp/webpack/runtime/hasOwnProperty shorthand","webpack://tinode-webapp/webpack/startup"],"names":["React","ReactDOM","ReactIntl","firebase","messaging","Tinode","Alert","render","this","props","visible","className","title","content","onReject","onClick","reject","FormattedMessage","id","defaultMessage","onConfirm","confirm","PACKAGE_VERSION","APP_NAME","KNOWN_HOSTS","hosted","local","DEFAULT_HOST","KEYPRESS_DELAY","DEFAULT_P2P_ACCESS_MODE","NO_ACCESS_MODE","REM_SIZE","AVATAR_SIZE","MAX_INBAND_ATTACHMENT_SIZE","MAX_EXTERN_ATTACHMENT_SIZE","MAX_IMAGE_DIM","MAX_TITLE_LENGTH","MAX_TOPIC_DESCRIPTION_LENGTH","messages","defineMessages","info","clear_messages","clear_for_all","delete","delete_for_all","send_retry","mute","unmute","reply","topic_delete","topic_delete_warning","delete_messages_warning","unblock","block","topic_block_warning","member_delete","archive","unarchive","edit_permissions","clear_messages_warning","ContextMenu","constructor","super","selfRef","formatMessage","intl","handlePageClick","bind","handleEscapeKey","handleClick","MenuItems","handler","params","errorHandler","onShowAlert","deleteMessages","message","retryMessage","replyToMessage","topicPermissionSetter","then","ctrl","onTopicRemoved","topicName","topic","tinode","getTopic","delTopic","catch","err","console","log","user","delSubscription","componentDidMount","document","addEventListener","componentWillUnmount","removeEventListener","e","current","contains","target","preventDefault","stopPropagation","hide","keyCode","item","items","currentTarget","dataset","onAction","onError","all","hard","cancelSend","seq","delMessagesAll","delMessagesList","flushMessage","msg","createMessage","publishDraft","mode","result","updateMode","pickReply","count","menu","map","push","key","vSize","length","position","left","bounds","right","clickAt","x","top","bottom","y","style","ref","injectIntl","shortDateFormat","locale","window","navigator","userLanguage","language","now","Date","getFullYear","getMonth","getDate","toLocaleTimeString","hour12","hour","minute","toLocaleDateString","month","day","year","bytesToHumanSize","bytes","sizes","bucket","Math","min","floor","log2","pow","round","toFixed","updateFavicon","oldIcon","getElementById","head","getElementsByTagName","newIcon","createElement","type","rel","href","removeChild","appendChild","theCard","fn","imageUrl","imageMimeType","note","card","trim","mimeType","matches","exec","photo","data","substring","indexOf","arrayEqual","a","b","Array","isArray","sort","i","l","sanitizeUrl","url","allowedSchemes","replace","test","schemes","join","RegExp","sanitizeImageUrl","sanitizedUrl","deliveryMarker","received","name","color","LetterTile","avatar","isGroup","iconColor","abs","value","hash","charCodeAt","stringHash","letter","charAt","authorizeURL","alt","src","onerror","LoadSpinner","large","clear","centered","show","AvatarUpload","state","source","handleFileReceived","componentDidUpdate","prevProps","setState","image","files","onImageUpdated","URL","createObjectURL","randId","random","substr","readOnly","uid","accept","onChange","htmlFor","uploading","icon_mapping","badge_verified","badge_staff","badge_danger","BadgeList","badges","trustedBadges","comment","CheckBox","handleChange","checked","ContactBadges","icon","message_sending","message_sending_failed","ReceivedMarker","timestamp","marker","UnreadBadge","drafty_image","drafty_form","drafty_attachment","Contact","handleContextClick","onSelected","index","showContextMenu","pageY","pageX","online","slice","icon_badges","isVerified","isStaff","isDangerous","acs","showMode","getMode","isMuted","isJoiner","subtitle","preview","Drafty","draftyFormatter","showCheckmark","selected","showOnline","isChannel","unread","small","values","el","attr","concat","mime","ContactAction","action","SUPPORTED_IMAGE_FORMATS","MIME_EXTENSIONS","makeImageUrl","startsWith","fitImageSize","width","height","maxWidth","maxHeight","forceSquare","scale","size","dstWidth","dstHeight","srcWidth","srcHeight","xoffset","yoffset","imageScaled","fileOrBlob","maxSize","onSuccess","img","Image","crossOrigin","onload","async","revokeObjectURL","dim","canvas","ctx","getContext","imageSmoothingEnabled","drawImage","includes","blob","Promise","resolve","toBlob","clearRect","fname","idx","ext","at","lastIndexOf","fileNameForMime","fileToBase64","file","reader","FileReader","split","readAsDataURL","blobToBase64","badge_you","badge_owner","ContactList","topicSelected","contactNodes","contactsCount","contacts","c","filterFunc","filter","filterOn","private","toLowerCase","public","myUserId","isOwner","deliveryStatus","latestMessage","_status","msgStatus","showUnread","connected","onTopicSelected","trusted","verified","staff","danger","noScroll","dangerouslySetInnerHTML","__html","emptyListMessage","MenuCancel","onCancel","ErrorPanel","level","onClearError","warn","text","whiteSpace","actionText","Chip","handleCancel","invalid","noAvatar","required","ChipInput","deriveStateFromProps","input","focused","handleTextInput","removeChipAt","handleChipCancel","handleFocusGained","handleFocusLost","handleKeyDown","placeholder","chips","prompt","sortedChips","sortChips","staticMembers","chipIndex","indexChips","prevState","keep","normal","removed","onChipRemoved","onFocusLost","onEnter","undefined","avatarDisabled","autoFocus","tabIndex","onFocus","onBlur","onKeyDown","no_contacts","contacts_not_found_short","GroupManager","members","indexMembers","keepInitialMembers","requiredMember","contactFilter","noContactsMessage","selectedContacts","handleContactSelected","handleMemberRemoved","handleContactFilter","handleSubmit","m","delta","present","keepInitial","stat","sel","userId","status","splice","val","query","instance","added","Object","keys","k","onSubmit","doContactFiltering","joiner","writer","preser","approver","sharer","deleter","owner","PermissionsEditor","names","skip","compare","userTitle","userAvatar","modeTitle","compareTitle","Cropper","panX","panY","originX","originY","zoom","minZoom","maxZoom","overlay","cutout","boundingBox","imageWidth","imageHeight","mouseX","mouseY","prevDistance","cutoutRect","bBoxRect","initScaling","onZoom","handleZoom","mouseDown","mouseUp","mouseMove","mouseTouch","positionAll","translate","passive","getBoundingClientRect","currPan","nextDiff","imgRect","max","imgLeft","imgRight","coLeft","coRight","imgTop","imgBottom","coTop","coBottom","touches","body","dX","dY","checkBound","touch0","touch1","distance","sqrt","t3d","orig","transform","transformOrigin","onLoad","step","AvatarCrop","objURL","imageCrop","VisiblePassword","handleVisibility","handeTextChange","handleEditingFinished","onFinished","setTimeout","activeElement","autoComplete","InPlaceEdit","active","initialValue","handleStartEditing","handlePasswordFinished","newValue","focus","event","checkValidity","spanText","spanClass","multiline","element","rows","TagManager","tags","tagInput","activated","handleTagInput","handleAddTag","handleRemoveTag","nextProps","last","tag","maxTagCount","getServerLimit","onTagsChanged","minTagLength","maxTagLength","add_tags_prompt","TopicDescEdit","getAccessMode","isMe","fullName","description","newAvatar","newAvatarMime","previousOnTags","onTagsUpdated","tnNewTags","handleFullNameUpdate","handleImageUpdated","handleAvatarCropped","handlePrivateUpdate","handleDescriptionUpdate","uploadAvatar","handleAvatarCropCancel","handleTagsUpdated","onUpdateTopicDesc","desc","readyToUpload","uploader","getLargeFileHelper","upload","finally","unused","base64bits","du","onUpdateTags","editable","full_name_placeholder","groupTopic","private_placeholder","title_tag_manager","TopicCommon","credentials","getCredentials","addCredActive","addCredInvalid","newCred","previousTagsUpdated","tnCredsUpdated","handleCredChange","handleCredKeyDown","handleCredEntered","onCredsUpdated","getType","creds","method","asPhone","asEmail","onCredAdd","onTopicTagsUpdate","cred","meth","done","onCredConfirm","onCredDelete","delete_messages","leave_chat","leave_chat_warning","block_contact","block_contact_warning","report_chat","report_chat_warning","other_user","TopicSecurity","defacs","getDefaultAccess","modeGiven2","modeWant2","user2","subscriber","getGiven","getWant","admin","isAdmin","isSharer","isDeleter","muted","isGroupType","channel","isChannelType","access","modeGiven","modeWant","auth","anon","handleDeleteTopic","handleDeleteMessages","handleLeave","handleBlock","handleReport","onDeleteTopic","onDeleteMessages","onLeaveTopic","onBlockTopic","onReportTopic","onLaunchPermissionsEditor","general","security","crop","perm_want","perm_given","perm_auth","perm_anon","perm_user","_clip","str","InfoView","address","selectedContact","contactList","previousMetaDesc","previousSubsUpdated","resetSubs","resetDesc","onMetaDesc","onSubsUpdated","handleImageChanged","handleMuted","handlePermissionsChanged","handleLaunchPermissionsEditor","handleShowAddMembers","handleMemberUpdateRequest","handleMemberSelected","handleContextMenu","handleBackNavigate","newState","subscribers","sub","entries","chan","getMeta","startMetaQuery","withTags","build","subs","onTopicDescUpdate","ignored","onChangePermissions","which","perm","userPermissionsEdited","toEdit","toCompare","toSkip","titleEdit","titleCompare","userPermissionsTitle","userPermissionsAvatar","editedPermissions","immutablePermissions","editedPermissionsTitle","immutablePermissionsTitle","editedPermissionsSkipped","onNavigate","onInitFind","onMemberUpdateRequest","args","panel","menuItems","view","shift","panelTitle","displayMobile","errorLevel","errorText","searchableContacts","no_members","FileProgress","progress","Attachment","downloader","downloadFile","filename","mimetype","download","loaded","onCancelUpload","cancel","helperFunc","isUrlRelative","downloadUrl","downloadWidget","UploadingImage","ChatMessage","onProgress","handleProgress","handleImagePreview","handleFormButtonClick","handleCancelUpload","handleQuoteClick","onImagePreview","resp","act","onFormResponse","MESSAGE_STATUS_FAILED","MESSAGE_STATUS_DEL_RANGE","ratio","replyToSeq","onQuoteClick","sideClass","deleted","sequence","response","bubbleClass","fullDisplay","userFrom","msgId","attachments","att","qte","onFormatQuote","lf","tree","userName","notFound","viewportWidth","minWidth","minHeight","loading","inner","child","messaging_disabled","type_new_message","add_image_caption","file_attachment_too_large","cannot_initiate_upload","SendMessage","keypressTimestamp","getTime","handlePasteEvent","handleAttachImage","handleAttachFile","handleSend","handleKeyPress","handleMessageTyping","messageEditArea","disabled","onImageSuccess","onAttachmentSuccess","clipboardData","originalEvent","kind","getAsFile","error","imageFileScaledToBase64","imageFileToBase64","filePasted","bits","onAttachImage","onAttachFile","acceptBlank","noInput","onSendMessage","shiftKey","onKeyPress","replyTo","messagePrompt","quote","onCancelReply","attachImage","click","attachFile","display","DocPreview","handleSendDoc","caption","onClose","mimeToIcon","default","video","iconFromMime","GroupSubs","usersOnline","totalCount","countToShow","some","overflow","ImagePreview","handleSendImage","assignWidth","node","maxlength","Invitation","handleButtonAction","evt","LogoView","version","serverVersion","serverAddress","HashNavigation","parts","path","forEach","part","decodeURIComponent","location","hasOwnProperty","parsed","parseUrlHash","composeUrlHash","sidepanel","infopanel","online_now","last_seen","not_found","isUnconfirmed","ex","getExcessive","isPeerRestricted","ms","getMissing","MessagesView","getDerivedStateFromProps","leave","sendImageAttachment","sendFileAttachment","sendKeyPress","handleScrollReference","handleScrollEvent","handleDescChange","handleSubsUpdated","handleNewMessage","handleAllMessagesReceived","handleInfoReceipt","handleImagePostview","handleClosePreview","handleFormResponse","handleShowContextMenuMessage","handleNewChatAcceptance","handleEnablePeer","postReadNotification","clearNotificationQueue","handleSendMessage","handlePickReply","handleCancelReply","convertIntoThumbnails","readNotificationQueue","readNotificationTimer","messagesScroller","scrollTop","scrollHeight","scrollPosition","viewportHeight","onData","onAllMessagesReceived","onInfo","onPres","applicationVisible","isSubscribed","ready","newTopic","newTopicParams","_topicName","getQuery","withLaterDesc","withLaterSub","isReader","withLaterData","withLaterDel","fetchingMessages","setQuery","subscribe","code","onNewTopicCreated","queuedMessages","pub","_sending","publishMessage","setUrlTopic","blankState","nextState","docPreview","imagePreview","imagePostview","typingIndicator","msgs","assign","onlineSubs","peer","p2pPeerDesc","peerMessagingDisabled","isWriter","readingBlocked","unconformed","unconfirmed","oldTopicName","isTopicCached","oldTopic","msgHasMoreMessages","getMessagesPage","setInterval","clearInterval","n","sendAt","noteRead","setMilliseconds","getMilliseconds","isNewMessage","from","what","clearTimeout","keyPressTimer","forceUpdate","sendMessage","attachJSON","parse","searchParams","set","search","open","messageSpecificMenuItems","onNewChat","noteKeyPress","maxInbandAttachmentSize","uploadCompletionPromise","urlPromise","maxExternAttachmentSize","limit","tinyMine","tinyBlob","blobMime","tinyBits64","insertImage","_tempPreview","appendLineBreak","append","init","bits64","found","find","_cancelled","cont","tp","header","msgIndex","thisFrom","userDesc","myUserName","ents","ent","entities","success","createQuote","r","origBlob","bin","atob","buf","ArrayBuffer","arr","Uint8Array","Blob","base64ToBlob","call","saveThis","fetch","attachQuote","scrollIntoView","behavior","backgroundColor","component","hideSelf","component2","messageNodes","previousFrom","chatBoxClass","nextFrom","isReply","hi","ts","_uploader","quoteFormatter","lastSeen","getMeTopic","getContact","seen","when","onHideMessagesView","tagName","attrValue","ButtonBack","onBack","MenuContacts","onNewTopic","onSettings","MenuStart","onSignUp","SideNavbar","AccountSettingsView","me","archived_contacts_title","ContactsView","handleAction","unreadThreads","archivedCount","chatList","blocked","arch","touched","action_ignored","onShowArchive","LocalStorageUtil","localStorage","setItem","JSON","stringify","getItem","oldVal","getObject","setObject","removeItem","CreateAccountView","login","password","email","imageDataUrl","errorCleared","saveToken","handleLoginChange","handlePasswordChange","handleEmailChange","handleFnChange","handleToggleSaveToken","onCreateAccount","submitClasses","login_prompt","password_prompt","onImageChanged","full_name_prompt","email_prompt","stay_logged_in","EditAccountView","handleCheckboxClick","onToggleMessageSounds","onTogglePushNotifications","onToggleIncognitoMode","messageSounds","desktopAlertsEnabled","desktopAlerts","incognitoMode","delete_account","delete_account_warning","AccSecurityView","blockedCount","showPermissionEditorFor","handlePasswordUpdate","handleHidePermissionsEditor","handleDeleteAccount","pwd","onUpdatePassword","onUpdateAccountDesc","onDeleteAccount","password_unchanged","onLogout","onShowBlocked","AccSupportView","LoginView","hostName","persist","onPersistenceChange","onLogin","autoCorrect","autoCapitalize","invalid_id","NewTopicById","groupId","prefix","NewTopicGroup","handleFieldEdit","handleTagsChanged","handleChannelToggle","SearchContacts","edited","handleSearchChange","handleSearch","handleClear","onSearchContacts","search_placeholder","search_for_contacts","search_no_results","NewTopicView","tabSelected","searchQuery","handleTabClick","handleSearchContacts","handleNewGroupSubmit","handleGroupByID","addUrlParam","removeUrlParam","onCreateTopic","dataUrl","priv","no_contacts_placeholder","searchResults","PasswordResetView","token","scheme","onReset","onRequest","reset","HostSelector","changed","handleHostNameChange","onServerAddressChange","hostOptions","list","SettingsView","transport","handleTransportSelected","handleServerAddressChange","onUpdate","def","ws","lp","transportOptions","phone","ValidationView","credCode","credMethod","numbers_only","register","settings","edit","notif","support","newtpk","SidepanelView","handleNewTopic","errorAction","errorActionText","loadSpinnerVisible","loginDisabled","onLoginRequest","onGlobalSettings","onUpdateAccountTags","onValidateCredentials","onPasswordResetRequest","onResetPassword","detectServerAddress","host","protocol","hostname","port","isSecureConnection","POP_SOUND","Audio","reconnect_countdown","reconnect_now","push_init_failed","invalid_security_token","no_connection","code_doesnot_match","menu_item_info","TinodeWeb","getBlankState","handleResize","handleHashRoute","handleOnline","checkForAppUpdate","handleVisibilityEvent","handleError","handleLoginRequest","handlePersistenceChange","handleConnected","handleAutoreconnectIteration","doLogin","handleCredentialsRequest","handleLoginSuccessful","handleDisconnect","tnMeMetaDesc","tnMeContactUpdate","tnMeSubsUpdated","resetContactList","tnData","tnInitFind","tnFndSubsUpdated","handleTopicSelected","handleHideMessagesView","handleNewChatInvitation","handleNewAccount","handleNewAccountRequest","handleUpdatePasswordRequest","handleUpdateAccountTagsRequest","handleToggleIncognitoMode","handleSettings","handleGlobalSettings","handleShowArchive","handleShowBlocked","handleToggleMessageSounds","handleCredAdd","handleCredDelete","handleCredConfirm","initFCMessaging","togglePushToken","requestPushToken","handlePushMessage","handleSidepanelCancel","handleStartTopicRequest","handleNewTopicCreated","handleTopicUpdateRequest","handleChangePermissions","handleLogout","handleDeleteTopicRequest","handleDeleteMessagesRequest","handleLeaveUnsubRequest","handleBlockTopicRequest","handleReportTopic","handleShowContextMenu","defaultTopicContextMenu","handleHideContextMenu","handleShowAlert","handleShowInfoView","handleValidateCredentialsRequest","handlePasswordResetRequest","handleResetPassword","handleContextMenuAction","autoLogin","messageSoundsOff","FIREBASE_INIT","firebaseToken","hidden","sidePanelSelected","sidePanelTitle","sidePanelAvatar","myTrustedBadges","liveConnection","onLine","topicSelectedOnline","topicSelectedAcs","innerWidth","infoPanel","mobilePanel","contextMenuVisible","contextMenuBounds","contextMenuClickAt","contextMenuParams","contextMenuItems","alertVisible","alertParams","requestedTopic","BroadcastChannel","documentElement","clientWidth","clientHeight","tnSetup","onConnect","onDisconnect","onAutoreconnectIteration","setDeviceToken","parsedNav","expires","setAuthToken","connect","readTimer","readTimerCallback","persistentCache","onSetupCompleted","appName","apiKey","secure","setHumanLanguage","enableLogging","oobNotification","fbPush","usePublicVapidKey","messagingVapidKey","serviceWorker","reg","useServiceWorker","postMessage","onTokenRefresh","onMessage","payload","mobile","onupdatefound","installingWorker","installing","onstatechange","controller","getTopicAccessMode","newTopicTabSelected","tab","reconnectCountdown","reconnect","isConnected","initStorage","clearStorage","getServerInfo","ver","sec","prom","timeLeft","seconds","secondsToTime","isAuthenticated","promise","getAuthToken","loginBasic","loginToken","goToTopic","onContactUpdate","getCurrentUserID","withDesc","withCred","disconnect","urlHash","setUrlSidePanel","isPresencer","archived","isArchived","play","foundContacts","merged","updated","past","prepareSearchableContacts","receivedTimer","noteRecv","fnd","getFndTopic","withSub","s","setMeta","isTopicOnline","isP2PType","am","updateWant","login_","password_","public_","cred_","tags_","createAccountBasic","on","enabled","requestPermission","deleteToken","getToken","refreshedToken","delCredential","basicNavigator","infoNavigator","setUrlInfoPanel","newGroupTopicName","oldName","newName","updateAccountBasic","getCurrentLogin","updateGiven","delCurrentUser","publish","self_blocked","subscribed","confirmText","rejectText","invite","requestResetAuthSecret","newPassword","btoa","base64ReEncode","onAddMember","handleManageGroupMembers","hl","languages","baseLanguage","allMessages","IntlProvider","textComponent","__webpack_require__","module","getter","__esModule","d","exports","definition","o","defineProperty","enumerable","get","obj","prop","prototype","__webpack_modules__"],"mappings":"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","file":"index.prod.js","sourcesContent":["const __WEBPACK_NAMESPACE_OBJECT__ = React;","const __WEBPACK_NAMESPACE_OBJECT__ = ReactDOM;","const __WEBPACK_NAMESPACE_OBJECT__ = ReactIntl;","const __WEBPACK_NAMESPACE_OBJECT__ = firebase;","const __WEBPACK_NAMESPACE_OBJECT__ = Tinode;","const __WEBPACK_NAMESPACE_OBJECT__ = firebase.messaging;","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class Alert extends React.PureComponent {\n render() {\n return this.props.visible ?\n
\n
\n
{this.props.title}
\n
{this.props.content}
\n
\n {this.props.onReject ?\n \n :\n null\n }\n \n
\n
\n
\n :\n null;\n }\n};\n","// This is a generated file. Don't edit.\n\nexport const PACKAGE_VERSION = \"0.18.0-alpha1\";\n","import { PACKAGE_VERSION } from './version.js';\n\n// Name of this application, used in the User-Agent.\nexport const APP_NAME = 'TinodeWeb/' + (PACKAGE_VERSION || '0.17');\n\n// API key. Use https://github.com/tinode/chat/tree/master/keygen to generate your own\nexport const API_KEY = 'AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K';\n\n// The array of possible hosts to connect to.\nexport const KNOWN_HOSTS = {hosted: 'web.tinode.co', local: 'localhost:6060'};\n\n// Default host name and port to connect to.\nexport const DEFAULT_HOST = KNOWN_HOSTS.hosted;\n\n// Enable console logging.\nexport const LOGGING_ENABLED = true;\n\n// Minimum time between two keypress notifications, milliseconds.\nexport const KEYPRESS_DELAY = 3*1000;\n// Delay before sending a {note} for reciving a message, milliseconds.\nexport const RECEIVED_DELAY = 500;\n// Delay before sending a read notification, milliseconds.\nexport const READ_DELAY = 1000;\n\n// The default shortest allowed tag length. Matches the value on the server.\nexport const MIN_TAG_LENGTH = 2;\n// The default greatest allowed tag length. Matches the value on the server.\nexport const MAX_TAG_LENGTH = 96;\n// The default maximum number of tags allowed. Matches the value on the server.\nexport const MAX_TAG_COUNT = 16;\n\n// Access mode for P2P subscriptions initiated by the current user.\nexport const DEFAULT_P2P_ACCESS_MODE = 'JRWPS';\n// Access mode for new group topics created by the current user.\nexport const NEW_GRP_ACCESS_MODE = 'JRWPSAO';\n// Access mode for a channel.\nexport const CHANNEL_ACCESS_MODE = 'JR';\n\n// Access mode for no access.\nexport const NO_ACCESS_MODE = 'N';\n\n// Mediaquery breakpoint between desktop and mobile, in px. Should match the value\n// in @media (max-size: 640px) in base.css\nexport const MEDIA_BREAKPOINT = 640;\n// Size of css 'rem' unit in pixels. Default 1rem = 10pt = 13px.\nexport const REM_SIZE = 13;\n\n// Size of the avatar image: when image dimensions are greater or the image is not square, it's resized to\n// a square of this size or less.\nexport const AVATAR_SIZE = 384;\n\n// Maximum size of an avatar in bytes for sending in-band. Bigger avatars will be sent out of band (as uploads).\nexport const MAX_AVATAR_BYTES = 4096;\n\n// Size of the broken_image shown in MessagesView\nexport const BROKEN_IMAGE_SIZE = 32;\n\n// Number of chat messages to fetch in one call.\nexport const MESSAGES_PAGE = 24;\n\n// Default maximum in-band (included directly into the message) attachment size which fits into\n// a message of 256K in size. Used when the server-provided value is unavailable. The actual\n// binary size of the attachment should be smaller due to base64 encoding expansion and some overhead,\n// for instance 1024 bytes.\n// Increase this limit to a greater value in production, if desired. Also increase\n// max_message_size in the server config.\nexport const MAX_INBAND_ATTACHMENT_SIZE = 262144;\n\n// Default absolute maximum attachment size to be used with the server = 8MB.\n// Used when the server-provided value is unavailable. Increase to something like 100MB in production.\nexport const MAX_EXTERN_ATTACHMENT_SIZE = 1 << 23;\n\n// Maximum allowed linear dimension (pixels) of an image sent inline. Larger images will be shrunk\n// to make the larger dimension fit under this size. You may want to adjust it to 1600 or\n// 2400 for production.\nexport const MAX_IMAGE_DIM = 1024;\n\n// Linear dimensions of image preview: shrink image under this size for previews.\nexport const IMAGE_PREVIEW_DIM = 64;\n\n// Linear dimensions of image thumbnail: shrink image under this size for thumbnails in reply quote previews.\nexport const IMAGE_THUMBNAIL_DIM = 25;\n\n// Maximum number of online users to be shown in a topic title bar. Others will be\n// hidden under \"+X more\"\nexport const MAX_ONLINE_IN_TOPIC = 4;\n\n// Maximum length of user name, topic title, and private comment.\nexport const MAX_TITLE_LENGTH = 60;\n// Maximum length of topic description.\nexport const MAX_TOPIC_DESCRIPTION_LENGTH = 360;\n\n// Length of message previews in chat list, in characters.\nexport const MESSAGE_PREVIEW_LENGTH = 80;\n\n// Link for \"Contact Us\".\nexport const LINK_CONTACT_US = 'email:support@tinode.co';\n\n// Link to Privacy Policy.\nexport const LINK_PRIVACY_POLICY = 'https://tinode.co/privacy.html';\n\n// Link to Terms of Service.\nexport const LINK_TERMS_OF_SERVICE = 'https://tinode.co/terms.html';\n","// Context Menu: popup/dropdown menu.\nimport React from 'react';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nimport { REM_SIZE } from '../config.js';\n\nconst messages = defineMessages({\n info: {\n id: 'menu_item_info',\n defaultMessage: 'Info',\n description: 'Show extended topic information'\n },\n clear_messages: {\n id: 'menu_item_clear_messages',\n defaultMessage: 'Clear messages',\n description: 'Delete all messages'\n },\n clear_for_all: {\n id: 'menu_item_clear_messages_for_all',\n defaultMessage: 'Clear for All',\n description: 'Delete all message(s) for all members'\n },\n delete: {\n id: 'menu_item_delete',\n defaultMessage: 'Delete',\n description: 'Delete selected messages'\n },\n delete_for_all: {\n id: 'menu_item_delete_for_all',\n defaultMessage: 'Delete for All',\n description: 'Delete selected message(s) for all members'\n },\n send_retry: {\n id: 'menu_item_send_retry',\n defaultMessage: 'Retry',\n description: 'Retry sending message'\n },\n mute: {\n id: 'menu_item_mute',\n defaultMessage: 'Mute',\n description: 'Turn off notifications'\n },\n unmute: {\n id: 'menu_item_unmute',\n defaultMessage: 'Unmute',\n description: 'Turn notifications on'\n },\n reply: {\n id: 'menu_item_reply',\n defaultMessage: 'Reply',\n description: 'Reply to message'\n },\n topic_delete: {\n id: 'menu_item_delete_topic',\n defaultMessage: 'Delete',\n description: 'Delete entire topic'\n },\n topic_delete_warning: {\n id: 'topic_delete_warning',\n defaultMessage: 'Are you sure you want to delete this conversation? It cannot be undone.',\n description: 'Alert warning when deleting entire topic'\n },\n delete_messages_warning: {\n id: 'delete_messages_warning',\n defaultMessage: 'Are you sure you want to delete all messages for everyone? It cannot be undone.',\n description: 'Alert dialog warning when hard-deleting all messages.'\n },\n unblock: {\n id: 'menu_item_unblock',\n defaultMessage: 'Unblock',\n description: 'Unblock topic or user'\n },\n // Generic string suitable for either topic or user.\n block: {\n id: 'menu_item_block',\n defaultMessage: 'Block',\n description: 'Block topic or user'\n },\n topic_block_warning: {\n id: 'topic_block_warning',\n defaultMessage: 'Are you sure you want to block this conversation?',\n description: 'Alert warning when blocking a topic.'\n },\n member_delete: {\n id: 'menu_item_member_delete',\n defaultMessage: 'Remove',\n description: 'Remove user from topic'\n },\n archive: {\n id: 'menu_item_archive_topic',\n defaultMessage: 'Archive',\n description: 'Move topic from the list of active chats to archive'\n },\n unarchive: {\n id: 'menu_item_restore_topic',\n defaultMessage: 'Restore',\n description: 'Restore topic from archive'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n clear_messages_warning: {\n id: 'clear_messages_warning',\n defaultMessage: 'Are you sure you want to clear all messages? It cannot be undone.',\n description: 'Alert dialog warning when deleting all messages.'\n },\n});\n\nclass ContextMenu extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n const {formatMessage} = props.intl;\n\n this.handlePageClick = this.handlePageClick.bind(this);\n this.handleEscapeKey = this.handleEscapeKey.bind(this);\n this.handleClick = this.handleClick.bind(this);\n\n // Preconfigured menu items.\n this.MenuItems = {\n 'topic_info': {\n id: 'topic_info',\n title: formatMessage(messages.info),\n handler: null\n },\n 'messages_clear': {\n id: 'messages_clear',\n title: formatMessage(messages.clear_messages),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_messages), // title\n formatMessage(messages.clear_messages_warning), // content\n (() => { this.deleteMessages(true, false, params, errorHandler); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'messages_clear_hard': {\n id: 'messages_clear_hard',\n title: formatMessage(messages.clear_for_all),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_for_all), // title\n formatMessage(message.delete_messages_warning), // content\n (() => { return this.deleteMessages(true, true, params, errorHandler); }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'message_delete': {\n id: 'message_delete',\n title: formatMessage(messages.delete),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, false, params, errorHandler);\n }\n },\n 'message_delete_hard': {\n id: 'message_delete_hard',\n title: formatMessage(messages.delete_for_all),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, true, params, errorHandler);\n }\n },\n 'menu_item_send_retry': {\n id: 'menu_item_send_retry',\n title: formatMessage(messages.send_retry),\n handler: (params, errorHandler) => {\n return this.retryMessage(params, errorHandler);\n }\n },\n 'menu_item_reply': {\n id: 'menu_item_reply',\n title: formatMessage(messages.reply),\n handler: (params, errorHandler) => {\n return this.replyToMessage(params, errorHandler);\n }\n },\n 'topic_unmute': {\n id: 'topic_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'topic_mute': {\n id: 'topic_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'topic_unblock': {\n id: 'topic_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n 'topic_block': {\n id: 'topic_block',\n title: formatMessage(messages.block),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.block), // title\n formatMessage(messages.topic_block_warning), // content\n (() => {\n return this.topicPermissionSetter('-JP', params, errorHandler).then((ctrl) => {\n this.props.onTopicRemoved(params.topicName);\n return ctrl;\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_delete': {\n id: 'topic_delete',\n title: formatMessage(messages.topic_delete),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.topic_delete), // title\n formatMessage(messages.topic_delete_warning), // content\n (() => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.log(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.delTopic(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_archive': {\n id: 'topic_archive',\n title: formatMessage(messages.archive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.log(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'topic_restore': {\n id: 'topic_restore',\n title: formatMessage(messages.unarchive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.log(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(false).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n // menu_item_edit_permissions is defined elsewhere.\n 'permissions': {\n id: 'permissions',\n title: formatMessage(messages.edit_permissions),\n handler: null\n },\n 'member_delete': {\n id: 'member_delete',\n title: formatMessage(messages.member_delete),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic || !params.user) {\n console.log(\"Topic or user not found: '\" + params.topicName + \"', '\" + params.user + \"'\");\n return;\n }\n return topic.delSubscription(params.user).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'member_mute': {\n id: 'member_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'member_unmute': {\n id: 'member_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'member_block': {\n id: 'member_block',\n title: formatMessage(messages.block),\n handler: this.topicPermissionSetter.bind(this, '-JP')\n },\n 'member_unblock': {\n id: 'member_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n };\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handlePageClick, false);\n document.addEventListener('keyup', this.handleEscapeKey, false);\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handlePageClick, false);\n document.removeEventListener('keyup', this.handleEscapeKey, false);\n }\n\n handlePageClick(e) {\n if (this.selfRef.current.contains(e.target)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n }\n\n handleEscapeKey(e) {\n if (e.keyCode === 27) {\n this.props.hide();\n }\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n let item = this.props.items[e.currentTarget.dataset.id];\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n\n if (!item) {\n console.log(\"Invalid menu item ID\", e.currentTarget.dataset.id);\n } else {\n this.props.onAction(\n item.id,\n item.handler(this.props.params, this.props.onError),\n this.props.params);\n }\n }\n\n // Menu Actions\n\n deleteMessages(all, hard, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.log(\"Topic not found: \", params.topicName);\n return;\n }\n\n // We don't know if the message is still pending (e.g. attachment is being uploaded),\n // so try cancelling first. No harm if we can't cancel.\n // The message can be cancelled if transmission to the server has not\n // started yet or if the message send has failed.\n if (!all && topic.cancelSend(params.seq)) {\n return;\n }\n // Can't cancel. Delete instead.\n const promise = all ?\n topic.delMessagesAll(hard) :\n topic.delMessagesList([params.seq], hard);\n\n return promise.catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Retries sending failed message.\n retryMessage(params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n // Remove the existing message entry.\n if (!topic || !topic.flushMessage(params.seq)) {\n return;\n }\n const msg = topic.createMessage(params.content, false);\n return topic.publishDraft(msg).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Function is used by context menu to set permissions.\n topicPermissionSetter(mode, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.log(\"Topic not found\", params.topicName);\n return;\n }\n\n let result = topic.updateMode(params.user, mode);\n if (errorHandler) {\n result = result.catch((err) => {\n errorHandler(err.message, 'err');\n });\n }\n return result;\n }\n\n replyToMessage(params, errorHandler) {\n console.log(\"Reply to message\", params);\n params.pickReply({ seq: params.seq, content: params.content })\n }\n\n render() {\n let count = 0;\n let menu = [];\n this.props.items.map((item) => {\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n if (item && item.title) {\n menu.push(\n item.title == '-' ?\n
  • \n :\n
  • {item.title}
  • \n );\n }\n count++;\n });\n\n // Ensure that menu is inside the app-container.\n const hSize = 12 * REM_SIZE;\n const vSize = REM_SIZE * (0.7 + menu.length * 2.5);\n const left = (this.props.bounds.right - this.props.clickAt.x < hSize) ?\n (this.props.clickAt.x - this.props.bounds.left - hSize) :\n (this.props.clickAt.x - this.props.bounds.left);\n const top = (this.props.bounds.bottom - this.props.clickAt.y < vSize) ?\n (this.props.clickAt.y - this.props.bounds.top - vSize) :\n (this.props.clickAt.y - this.props.bounds.top);\n\n const position = {\n left: left + 'px',\n top: top + 'px'\n };\n\n return (\n
      \n {menu}\n
    \n );\n }\n}\n\nexport default injectIntl(ContextMenu);\n","// Short representation of time in the past.\nexport function shortDateFormat(then, locale) {\n locale = locale || window.navigator.userLanguage || window.navigator.language;\n const now = new Date();\n if (then.getFullYear() == now.getFullYear()) {\n // Same year.\n if (then.getMonth() == now.getMonth() && then.getDate() == now.getDate()) {\n // Same month and day, show time only.\n return then.toLocaleTimeString(locale, {hour12: false, hour: '2-digit', minute: '2-digit'});\n }\n // Different month and/or day, show month day, time.\n return then.toLocaleDateString(locale,\n {hour12: false, month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'});\n }\n // Different year: just show the date.\n return then.toLocaleDateString(locale, {year: 'numeric', month: 'short', day: 'numeric'});\n}\n\n// Convert seconds to minutes:seconds, i.e. 156 sec -> 2:36.\nexport function secondsToTime(seconds) {\n const min = Math.floor(seconds / 60);\n let sec = seconds % 60;\n sec = sec < 10 ? `0${sec}` : sec;\n return `${min}:${sec}`;\n}\n\n// Convert a number of bytes to human-readable format.\nexport function bytesToHumanSize(bytes) {\n if (!bytes || bytes == 0) {\n return '0 Bytes';\n }\n\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const bucket = Math.min(Math.floor(Math.log2(bytes) / 10) | 0, sizes.length-1);\n const count = bytes / Math.pow(1024, bucket);\n const round = bucket > 0 ? (count < 3 ? 2 : (count < 30 ? 1 : 0)) : 0;\n return count.toFixed(round) + ' ' + sizes[bucket];\n}\n\n// Get 32 bit integer hash value for a string. Ideally it should produce the same value\n// as Java's String#hash().\nexport function stringHash(value) {\n let hash = 0;\n value = '' + value;\n for (let i = 0; i < value.length; i++) {\n hash = ((hash << 5) - hash) + value.charCodeAt(i);\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n}\n","// Odds and ends\n\nimport Tinode from 'tinode-sdk';\n\n// Make shortcut icon appear with a green dot + show unread count in title.\nexport function updateFavicon(count) {\n const oldIcon = document.getElementById('shortcut-icon');\n const head = document.head || document.getElementsByTagName('head')[0];\n const newIcon = document.createElement('link');\n newIcon.type = 'image/png';\n newIcon.id = 'shortcut-icon';\n newIcon.rel = 'shortcut icon';\n newIcon.href = 'img/logo32x32' + (count > 0 ? 'a' : '') + '.png';\n if (oldIcon) {\n head.removeChild(oldIcon);\n }\n head.appendChild(newIcon);\n\n document.title = (count > 0 ? '('+count+') ' : '') + 'Tinode';\n}\n\n// Create theCard which represents user's or topic's \"public\" info.\nexport function theCard(fn, imageUrl, imageMimeType, note) {\n let card = null;\n fn = fn && fn.trim();\n note = note && note.trim();\n\n if (fn) {\n card = {\n fn: fn\n };\n }\n\n if (typeof note == 'string') {\n card = card || {};\n card.note = note ? note : Tinode.DEL_CHAR;\n }\n\n if (imageUrl) {\n card = card || {};\n let mimeType = imageMimeType;\n // Is this a data URL \"data:[][;base64],\"?\n const matches = /^data:(image\\/[-a-z0-9+.]+)?(;base64)?,/i.exec(imageUrl);\n if (matches) {\n mimeType = matches[1];\n card.photo = {\n data: imageUrl.substring(imageUrl.indexOf(',') + 1),\n ref: Tinode.DEL_CHAR\n };\n } else {\n card.photo = {\n data: Tinode.DEL_CHAR,\n ref: imageUrl\n };\n }\n card.photo.type = (mimeType || 'image/jpeg').substring('image/'.length);\n }\n\n return card;\n}\n\n// Deep-shallow compare two arrays: shallow compare each element.\nexport function arrayEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (!Array.isArray(a) || !Array.isArray(b)) {\n return false;\n }\n\n // Compare lengths first.\n if (a.length != b.length) {\n return false;\n }\n // Order of elements is ignored.\n a.sort();\n b.sort();\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Checks (loosely) if the given string is a phone. If so, returns the phone number in a format\n// as close to E.164 as possible.\nexport function asPhone(val) {\n val = val.trim();\n if (/^(?:\\+?(\\d{1,3}))?[- (.]*(\\d{3})[- ).]*(\\d{3})[- .]*(\\d{2})[- .]*(\\d{2})?$/.test(val)) {\n return val.replace(/[- ().]*/, '');\n }\n return null;\n}\n\n// Checks (loosely) if the given string is an email. If so returns the email.\nexport function asEmail(val) {\n val = val.trim();\n if (/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(val)) {\n return val;\n }\n return null;\n}\n\n// Checks if URL is a relative url, i.e. has no 'scheme://', including the case of missing scheme '//'.\n// The scheme is expected to be RFC-compliant, e.g. [a-z][a-z0-9+.-]*\n// example.html - ok\n// https:example.com - not ok.\n// http:/example.com - not ok.\n// ' ↲ https://example.com' - not ok. (↲ means carriage return)\nexport function isUrlRelative(url) {\n return url && !/^\\s*([a-z][a-z0-9+.-]*:|\\/\\/)/im.test(url);\n}\n\n// Ensure URL does not present an XSS risk. Optional allowedSchemes may contain an array of\n// strings with permitted URL schemes, such as ['ftp', 'ftps']; otherwise accept http and https only.\nexport function sanitizeUrl(url, allowedSchemes) {\n if (typeof url != 'string') {\n return url;\n }\n\n // Strip control characters and whitespace. They are not valid URL characters anyway.\n url = url.replace(/[^\\x20-\\x7E]/gmi, '').trim();\n\n // Relative URLs are safe.\n // Relative URL does not start with ':', abcd123: or '//'.\n if (!/^([a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url)) {\n return url;\n }\n\n // Blob URLs are safe.\n if (/^blob:http/.test(url)) {\n return url;\n }\n\n // Absolute URL. Accept only safe schemes, or no scheme.\n const schemes = Array.isArray(allowedSchemes) ? allowedSchemes.join('|') : 'http|https';\n const re = new RegExp('^((' + schemes + '):|//)', 'i');\n if (!re.test(url)) {\n return null;\n }\n\n return url;\n}\n\n// Ensure URL is suitable for field: the URL must be a relative URL or\n// have http:, https:, blob: or data: scheme.\n// In case of data: scheme, the URL must start with a 'data:image/XXXX;base64,'.\nexport function sanitizeImageUrl(url) {\n if (!url) {\n return null;\n }\n\n const sanitizedUrl = sanitizeUrl(url);\n if (sanitizedUrl) {\n return sanitizedUrl;\n }\n\n // Is this a data: URL of an image?\n if (/data:image\\/[a-z0-9.-]+;base64,/i.test(url.trim())) {\n return url;\n }\n\n return null;\n}\n\n// Given message's received status, return name and color of a delivery indicator icon.\nexport function deliveryMarker(received) {\n switch (received) {\n case Tinode.MESSAGE_STATUS_SENDING:\n return { name: 'access_time' }; // watch face\n case Tinode.MESSAGE_STATUS_FAILED:\n return { name: 'warning', color: 'danger-color' }; // yellow icon /!\\\n case Tinode.MESSAGE_STATUS_SENT:\n return { name: 'done' }; // checkmark\n case Tinode.MESSAGE_STATUS_RECEIVED:\n return { name: 'done_all' }; // double checkmark\n case Tinode.MESSAGE_STATUS_READ:\n return { name: 'done_all', color: 'blue' }; // blue double checkmark\n }\n return null;\n}\n","import React from 'react';\n\nimport Tinode from 'tinode-sdk';\n\nimport { stringHash } from '../lib/strformat.js';\nimport { sanitizeImageUrl } from '../lib/utils.js';\n\nexport default class LetterTile extends React.PureComponent {\n render() {\n let avatar;\n if (this.props.avatar === true) {\n const isGroup = (Tinode.topicType(this.props.topic) == 'grp');\n const iconColor = (isGroup ? 'light-color' : 'dark-color')\n + (Math.abs(stringHash(this.props.topic)) % 16);\n if (this.props.topic && this.props.title && this.props.title.trim()) {\n const letter = this.props.title.trim().charAt(0);\n const className = 'lettertile ' + iconColor;\n avatar = (
    {letter}
    )\n } else {\n const className = 'material-icons ' + iconColor;\n avatar = isGroup ?\n group : person;\n }\n } else if (this.props.avatar) {\n const url = this.props.tinode.authorizeURL(sanitizeImageUrl(this.props.avatar));\n // If avatar image is invalid, show a placeholder.\n avatar = \"avatar\"{e.target.onerror = null; e.target.src=\"../img/broken_image.png\"}} />;\n } else {\n avatar = null;\n }\n return avatar;\n }\n}\n","import React from 'react';\n\nexport default class LoadSpinner extends React.PureComponent {\n render() {\n const className = 'load-spinner-box' + (this.props.large ? ' large' : '')\n + (this.props.clear ? ' clear' : '') + (this.props.centered ? ' centered' : '');\n return (this.props.show ?\n
    : null);\n }\n}\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\nimport LoadSpinner from './load-spinner.jsx';\n\nimport { sanitizeImageUrl } from '../lib/utils.js';\n\nimport { AVATAR_SIZE } from '../config.js';\n\nexport default class AvatarUpload extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n source: props.avatar\n };\n\n this.handleFileReceived = this.handleFileReceived.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.avatar != prevProps.avatar) {\n this.setState({source: this.props.avatar});\n }\n }\n\n handleFileReceived(e) {\n const image = e.target.files[0];\n this.props.onImageUpdated(image.type, URL.createObjectURL(image), image.name);\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n render() {\n // Randomize id value in case more than one AvatarUpload is shown\n // at the same time.\n const randId = 'file-input-avatar-' + (Math.random() + '').substr(2);\n const className = 'avatar-upload' + (this.props.readOnly ? ' read-only' : '');\n return (\n
    \n {this.props.readOnly || !this.state.source ?\n null :\n {e.preventDefault(); this.props.onImageUpdated();}}>\n clear\n }\n {this.state.source ?\n :\n this.props.readOnly && this.props.uid ?\n
    \n \n
    \n :\n
    {AVATAR_SIZE}×{AVATAR_SIZE}
    }\n {this.props.readOnly ? null :\n }\n {this.props.readOnly ? null :\n }\n \n
    \n );\n }\n};\n","import React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst icon_mapping = {'staff': 'verified_user'};\n\nconst messages = defineMessages({\n badge_verified: {\n id: 'badge_verified',\n defaultMessage: 'Verified/official',\n description: 'Explanation of a verified account or topic badge'\n },\n badge_staff: {\n id: 'badge_staff',\n defaultMessage: 'Staff-managed',\n description: 'Explanation of a staff-managed account or topic badge'\n },\n badge_danger: {\n id: 'badge_danger',\n defaultMessage: 'Untrustworthy',\n description: 'Suspicious or untrustworthy account or topic badge'\n },\n});\n\n\n/* Trusted badges with labels: verified, staff, danger */\nclass BadgeList extends React.PureComponent {\n render() {\n const {formatMessage} = this.props.intl;\n let badges = null;\n if (this.props.trustedBadges && this.props.trustedBadges.length > 0) {\n badges = [];\n this.props.trustedBadges.map((b) => {\n const comment = formatMessage(messages['badge_' + b]);\n const style = 'material-icons ' + b + '-color';\n badges.push(
    {icon_mapping[b] || b} {comment}
    );\n });\n return <>{badges};\n }\n return null;\n }\n};\n\nexport default injectIntl(BadgeList);\n","import React from 'react';\n\n/* BEGIN CheckBox: styled checkbox */\nexport default class CheckBox extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n }\n\n handleChange() {\n this.props.onChange(this.props.name, !this.props.checked);\n }\n\n render() {\n return (\n this.props.onChange ? (\n this.props.checked ?\n check_box :\n check_box_outline_blank\n ) : (\n this.props.checked ?\n check_box :\n check_box_outline_blank\n )\n );\n }\n}\n/* END CheckBox */\n","import React from 'react';\n\nconst icon_mapping = {'muted': 'notifications_off', 'banned': 'block', 'staff': 'verified_user'};\n\n/* Contact's labels: [you], or icons [muted], [blocked] */\nexport default class ContactBadges extends React.PureComponent {\n render() {\n let badges = null;\n if (this.props.badges && this.props.badges.length > 0) {\n badges = [];\n this.props.badges.map((b) => {\n const color = (b.color ? ' ' + b.color : '');\n if (b.icon) {\n badges.push({icon_mapping[b.icon] || b.icon});\n } else {\n badges.push({b.name});\n }\n });\n return <>{badges};\n }\n return null;\n }\n};\n","// Received/read indicator.\nimport React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport Tinode from 'tinode-sdk';\n\nimport { shortDateFormat } from '../lib/strformat.js';\nimport { deliveryMarker } from '../lib/utils.js';\n\nconst messages = defineMessages({\n message_sending: {\n id: 'message_sending',\n defaultMessage: 'sending...',\n description: 'Message being sent, in place of time stamp'\n },\n message_sending_failed: {\n id: 'message_sending_failed',\n defaultMessage: 'failed',\n description: 'Failed to send message, in place of time stamp'\n }\n});\n\nclass ReceivedMarker extends React.PureComponent {\n render() {\n const {formatMessage} = this.props.intl;\n let timestamp;\n if (this.props.received <= Tinode.MESSAGE_STATUS_SENDING) {\n timestamp = formatMessage(messages.message_sending);\n } else if (this.props.received == Tinode.MESSAGE_STATUS_FAILED) {\n timestamp = formatMessage(messages.message_sending_failed);\n } else {\n timestamp = shortDateFormat(this.props.timestamp, this.props.intl.locale);\n }\n\n const icon = deliveryMarker(this.props.received);\n const marker = icon ? {icon.name} : null;\n\n return (\n \n {timestamp}{'\\u00a0'}{marker}\n \n );\n }\n};\n\nexport default injectIntl(ReceivedMarker);\n","// The counter of unread messages in the topic.\nimport React from 'react';\n\nexport default class UnreadBadge extends React.PureComponent {\n render() {\n return (this.props.count > 0 ?\n {this.props.count > 9 ? \"9+\" : this.props.count}\n : null);\n }\n};\n","// A single topic or user.\nimport React from 'react';\nimport { defineMessages, FormattedMessage, injectIntl } from 'react-intl';\n\nimport ContactBadges from './contact-badges.jsx';\nimport LetterTile from './letter-tile.jsx';\nimport ReceivedMarker from './received-marker.jsx'\nimport UnreadBadge from './unread-badge.jsx';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport { deliveryMarker } from '../lib/utils.js';\n\nconst messages = defineMessages({\n drafty_image: {\n id: 'drafty_image',\n defaultMessage: 'Picture',\n description: 'Comment for embedded images in drafty preview'\n },\n drafty_form: {\n id: 'drafty_form',\n defaultMessage: 'Form: ',\n description: 'Comment for form in drafty preview'\n },\n drafty_attachment: {\n id: 'drafty_attachment',\n defaultMessage: 'Attachment',\n description: 'Comment for attachment in drafty preview'\n },\n});\n\nclass Contact extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.props.onSelected) {\n // Index this.props.index is used by GroupManager.\n this.props.onSelected(this.props.item, this.props.index);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.props.item, y: e.pageY, x: e.pageX });\n }\n\n render() {\n let title = this.props.title;\n if (!title) {\n title = ;\n } else if (title.length > 30) {\n // FIXME: this is probably wrong for RTL languages.\n title = title.substring(0, 28) + '…';\n }\n const online = this.props.now ? 'online' : 'offline';\n const avatar = this.props.avatar ? this.props.avatar : true;\n const badges = this.props.badges ? this.props.badges.slice() : [];\n const icon_badges = [];\n if (this.props.isVerified) {\n icon_badges.push({icon: 'verified', color: 'verified-color'});\n }\n if (this.props.isStaff) {\n icon_badges.push({icon: 'staff', color: 'staff-color'});\n }\n if (this.props.isDangerous) {\n icon_badges.push({icon: 'dangerous', color: 'danger-color'});\n }\n if (this.props.acs) {\n if (this.props.showMode) {\n badges.push({name: this.props.acs.getMode(), key: 'mode'});\n }\n if (this.props.acs.isMuted()) {\n icon_badges.push({icon: 'muted'});\n }\n if (!this.props.acs.isJoiner()) {\n icon_badges.push({icon: 'banned'});\n }\n }\n\n const subtitle = this.props.preview ?\n (typeof this.props.preview == 'string' ? this.props.preview :\n React.createElement(React.Fragment, null, Drafty.format(this.props.preview, draftyFormatter, this))) :\n this.props.comment;\n\n const icon = deliveryMarker(this.props.received);\n const marker = icon ? {icon.name} : null;\n\n return (\n
  • \n
    \n \n {this.props.showOnline ? :\n (this.props.showCheckmark && this.props.selected ?\n check_circle\n : null)}\n
    \n
    \n
    {title}\n {this.props.isChannel ? \"channel\" : null}\n \n
    \n {this.props.showMode ?\n :\n this.props.small ? null :
    {marker}{subtitle || '\\u00A0'}
    }\n
    \n {this.props.showContextMenu ?\n \n \n expand_more\n \n : null}\n
  • \n );\n }\n};\n\n\n// Converts Drafty object into a one-line preview.\nfunction draftyFormatter(style, data, values, key) {\n let el = Drafty.tagName(style);\n const attr = { key: key };\n if (el) {\n const { formatMessage } = this.props.intl;\n switch (style) {\n case 'BR':\n // Replace new line with a space.\n el = React.Fragment;\n values = [' '];\n break;\n case 'HL':\n // Make highlight less prominent in preview.\n attr.className = 'highlight preview';\n break;\n case 'LN':\n // Disable links in previews.\n el = 'span';\n break;\n case 'IM':\n // Replace image with '[icon] Image'.\n el = React.Fragment;\n values = [photo, formatMessage(messages.drafty_image)];\n break;\n case 'BN':\n el = 'span';\n attr.className = 'flat-button faux';\n break;\n case 'FM':\n el = React.Fragment;\n values = [dashboard,\n formatMessage(messages.drafty_form)].concat(values || []);\n break;\n case 'RW':\n el = React.Fragment;\n break;\n case 'EX':\n if (data && data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n el = React.Fragment;\n values = [attachment, formatMessage(messages.drafty_attachment)];\n break;\n default:\n if (el == '_UNKN') {\n el = React.Fragment;\n values = [extension];\n }\n break;\n }\n return React.createElement(el, attr, values);\n } else {\n return values;\n }\n};\n\nexport default injectIntl(Contact);\n","// A panel included into a list of contacts with an action text.\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\n\nclass ContactAction extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onAction(this.props.action);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
  • \n
    {formatMessage(this.props.title, this.props.values)}
    \n
  • \n );\n }\n};\n\nexport default injectIntl(ContactAction);\n","// File and image helper functions.\nimport { MAX_INBAND_ATTACHMENT_SIZE, MAX_IMAGE_DIM } from '../config.js';\nimport { bytesToHumanSize } from './strformat.js'\n\n// Supported image MIME types and corresponding file extensions.\nexport const SUPPORTED_IMAGE_FORMATS = ['image/jpeg', 'image/gif', 'image/png', 'image/svg', 'image/svg+xml'];\nexport const MIME_EXTENSIONS = ['jpg', 'gif', 'png', 'svg', 'svg'];\n\n// Get an URL from a theCard photo: either create a data: URL or return reference URL.\nexport function makeImageUrl(photo) {\n if (photo && typeof photo == 'object') {\n if (photo.data && photo.type) {\n const mime = photo.type.startsWith('image/') ? photo.type : ('image/' + photo.type);\n return 'data:' + mime + ';base64,' + photo.data;\n }\n return photo.ref;\n }\n return null;\n}\n\n// Calculate linear dimensions for scaling image down to fit under a certain size.\n// Returns an object which contains destination sizes, source sizes, and offsets\n// into source (when making square images).\nexport function fitImageSize(width, height, maxWidth, maxHeight, forceSquare) {\n // Sanitize input\n width = width | 0;\n height = height | 0;\n maxWidth = maxWidth | 0;\n maxHeight = maxHeight | 0;\n\n if (width <= 0 || height <= 0 || maxWidth <= 0 || maxHeight <= 0) {\n return null;\n }\n\n if (forceSquare) {\n maxWidth = maxHeight = Math.min(maxWidth, maxHeight);\n }\n\n const scale = Math.min(\n Math.min(width, maxWidth) / width,\n Math.min(height, maxHeight) / height\n );\n\n const size = {\n dstWidth: (width * scale) | 0,\n dstHeight: (height * scale) | 0,\n };\n\n if (forceSquare) {\n // Also calculate parameters for making the image square.\n size.dstWidth = size.dstHeight = Math.min(size.dstWidth, size.dstHeight);\n size.srcWidth = size.srcHeight = Math.min(width, height);\n size.xoffset = ((width - size.srcWidth) / 2) | 0;\n size.yoffset = ((height - size.srcWidth) / 2) | 0;\n } else {\n size.xoffset = size.yoffset = 0;\n size.srcWidth = width;\n size.srcHeight = height;\n }\n return size;\n}\n\n// Ensure file's extension matches mime content type\nexport function fileNameForMime(fname, mime) {\n const idx = SUPPORTED_IMAGE_FORMATS.indexOf(mime);\n if (idx < 0 || !fname) {\n // Unknown mime or empty name.\n return fname;\n }\n const ext = MIME_EXTENSIONS[idx];\n\n const at = fname.lastIndexOf('.');\n if (at >= 0) {\n fname = fname.substring(0, at);\n }\n return fname + '.' + ext;\n}\n\n// Scale uploaded image to fit under certain dimensions and byte size, optionally constraining to a square.\n// On success calls onSuccess callback with the scaled image as Blob.\nexport function imageScaled(fileOrBlob, maxWidth, maxHeight, maxSize, forceSquare, onSuccess, onError) {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = function(err) {\n onError(\"Image format unrecognized\");\n }\n img.onload = async function() {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n // Calculate the desired image dimensions.\n const dim = fitImageSize(this.width, this.height, maxWidth, maxHeight, forceSquare);\n if (!dim) {\n onError(\"Invalid image\");\n return;\n }\n let canvas = document.createElement('canvas');\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(this, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n\n const mime = SUPPORTED_IMAGE_FORMATS.includes(fileOrBlob.type) ? fileOrBlob.type : 'image/jpeg';\n // Generate blob to check size of the image.\n let blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n if (!blob) {\n onError(\"Unsupported image format\");\n return;\n }\n\n // Ensure the image is not too large. Shrink the image keeping the aspect ratio.\n // Do nothing if maxsize is <= 0.\n while (maxSize > 0 && blob.length > maxSize) {\n dim.dstWidth = (dim.dstWidth * 0.70710678118) | 0;\n dim.dstHeight = (dim.dstHeight * 0.70710678118) | 0;\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.drawImage(this, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n }\n\n canvas = null;\n onSuccess(mime, blob, dim.dstWidth, dim.dstHeight, fileNameForMime(fileOrBlob.name, mime));\n };\n img.src = URL.createObjectURL(fileOrBlob);\n}\n\n// Scale and crop image according to specified dimensions.\n// The coordinates are in unscaled image pixels, i.e. cut the rectangle first then scale it.\nexport function imageCrop(mime, objURL, left, top, width, height, scale, onSuccess, onError) {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = function(err) {\n onError(\"Image format unrecognized\");\n }\n img.onload = async function() {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n let canvas = document.createElement('canvas');\n canvas.width = width * scale;\n canvas.height = height * scale;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(this, left, top, width, height, 0, 0, canvas.width, canvas.height);\n\n mime = SUPPORTED_IMAGE_FORMATS.includes(mime) ? mime : 'image/jpeg';\n // Generate blob to check size of the image.\n let blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n if (!blob) {\n onError(\"Unsupported image format\");\n return;\n }\n // Allow GC.\n canvas = null;\n onSuccess(mime, blob, width, height);\n };\n img.src = objURL;\n}\n\n// Convert File to base64 string.\nexport function fileToBase64(file, onSuccess) {\n const reader = new FileReader();\n reader.addEventListener('load', function() {\n onSuccess(file.type, reader.result.split(',')[1], file.name);\n });\n reader.readAsDataURL(file);\n}\n\n// Convert Blob to base64 string.\nexport function blobToBase64(blob, onSuccess) {\n const reader = new FileReader();\n reader.addEventListener('load', function() {\n onSuccess(blob.type, reader.result.split(',')[1]);\n });\n reader.readAsDataURL(blob);\n}\n\n// File pasted from the clipboard. It's either an inline image or a file attachment.\n// FIXME: handle large files out of band.\nexport function filePasted(event, onImageSuccess, onAttachmentSuccess, onError) {\n var items = (event.clipboardData || event.originalEvent.clipboardData || {}).items;\n for (var i in items) {\n var item = items[i];\n if (item.kind === 'file') {\n var file = item.getAsFile();\n if (!file) {\n console.error(\"Failed to get file object from pasted file item\", item.kind, item.type);\n continue;\n }\n if (file.type && file.type.split('/')[0] == 'image') {\n // Handle inline image\n if (file.size > MAX_INBAND_ATTACHMENT_SIZE || SUPPORTED_IMAGE_FORMATS.indexOf(file.type) < 0) {\n imageFileScaledToBase64(file, MAX_IMAGE_DIM, MAX_IMAGE_DIM, false, onImageSuccess, onError);\n } else {\n imageFileToBase64(file, onImageSuccess, onError);\n }\n } else {\n // Handle file attachment\n fileToBase64(file, onAttachmentSuccess, onError)\n }\n // Indicate that the pasted data contains a file.\n return true;\n }\n }\n // No file found.\n return false;\n}\n\n// Get mime type from data URL header.\nexport function getMimeType(header) {\n var mime = /^data:(image\\/[-+a-z0-9.]+);base64/.exec(header);\n return (mime && mime.length > 1) ? mime[1] : null;\n}\n\n// Given length of a binary object in bytes, calculate the length after\n// base64 encoding.\nexport function base64EncodedLen(n) {\n return Math.floor((n + 2) / 3) * 4;\n}\n\n// Given length of a base64-encoded object, calculate decoded size of the\n// pbject in bytes.\nexport function base64DecodedLen(n) {\n return Math.floor(n / 4) * 3;\n}\n\n// Re-encode string to standard base64 encoding with padding.\n// The string may be base64-URL encoded without the padding.\nexport function base64ReEncode(str) {\n if (str) {\n str = str.replace(/-/g, '+').replace(/_/g, '/');\n try {\n str = btoa(atob(str));\n } catch(err) {\n console.error(\"Failed to base64 re-encode string.\", err);\n str = null;\n }\n }\n return str;\n}\n\n// Convert a base64 encoded string with the provided mime type into a Blob.\nexport function base64ToBlob(str, mime) {\n if (!str) {\n return null;\n }\n\n try {\n // Make blob.\n const bin = atob(str);\n const length = bin.length;\n const buf = new ArrayBuffer(length);\n const arr = new Uint8Array(buf);\n for (let i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n\n return new Blob([buf], { type: mime });\n } catch(err) {\n console.log(\"Failed to convert base64 to blob: \", err);\n }\n\n return null;\n}\n","// ContactList: component for showing a list of contacts,\n// such as a list of group members in a group chat.\nimport React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nimport { Drafty } from 'tinode-sdk';\nimport Tinode from 'tinode-sdk';\n\nimport Contact from './contact.jsx';\nimport ContactAction from './contact-action.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nimport { MESSAGE_PREVIEW_LENGTH } from '../config.js';\n\nconst messages = defineMessages({\n badge_you: {\n id: 'badge_you',\n defaultMessage: 'you',\n description: 'Badge for indicating the current user'\n },\n badge_owner: {\n id: 'badge_owner',\n defaultMessage: 'owner',\n description: 'Badge for indicating the owner'\n }\n});\n\nclass ContactList extends React.Component {\n render() {\n const { formatMessage } = this.props.intl;\n const showCheckmark = Array.isArray(this.props.topicSelected);\n const contactNodes = [];\n let contactsCount = 0;\n if (this.props.contacts && this.props.contacts.length > 0) {\n this.props.contacts.map((c) => {\n if (c.action) {\n // Action item\n contactNodes.push(\n );\n } else {\n // Normal contact\n const key = this.props.showMode ? c.user : (c.topic || c.user);\n // If filter function is provided, filter out the items\n // which don't satisfy the condition.\n if (this.props.filterFunc && this.props.filter) {\n const filterOn = [key];\n if (c.private && c.private.comment) {\n filterOn.push(('' + c.private.comment).toLowerCase());\n }\n if (c.public && c.public.fn) {\n filterOn.push(('' + c.public.fn).toLowerCase());\n }\n if (!this.props.filterFunc(this.props.filter, filterOn)) {\n return;\n }\n }\n\n const isChannel = Tinode.isChannelTopicName(key);\n const selected = showCheckmark ?\n (this.props.topicSelected.indexOf(key) > -1) :\n (this.props.topicSelected === key);\n const badges = [];\n if (this.props.showMode) {\n if (key == this.props.myUserId) {\n badges.push({name: formatMessage(messages.badge_you), color: 'green'});\n }\n if (c.acs && c.acs.isOwner()) {\n badges.push({name: formatMessage(messages.badge_owner), color: 'blue'});\n }\n }\n\n const comment = Array.isArray(c.private) ?\n c.private.join(',') : (c.private ? c.private.comment : null);\n let preview;\n let deliveryStatus;\n if (!this.props.showMode && c.latestMessage) {\n const msg = c.latestMessage(true);\n if (msg) {\n deliveryStatus = msg._status || c.msgStatus(msg, true);\n preview = typeof msg.content == 'string' ?\n msg.content.substr(0, MESSAGE_PREVIEW_LENGTH) :\n Drafty.preview(msg.content, MESSAGE_PREVIEW_LENGTH);\n }\n }\n contactNodes.push(\n \n );\n contactsCount ++;\n }\n }, this);\n }\n\n return (\n
    \n {contactsCount == 0 ?\n
    \n :\n null\n }\n {contactNodes.length > 0 ?\n
      \n {contactNodes}\n
    \n :\n null\n }\n
    \n );\n }\n};\n\nexport default injectIntl(ContactList);\n","// The X menu to be displayed in title bars.\nimport React from 'react';\n\nexport default class MenuCancel extends React.PureComponent {\n render() {\n return (\n {e.preventDefault(); this.props.onCancel();}}>\n close\n \n );\n }\n}\n","import React from 'react';\n\nimport MenuCancel from './menu-cancel.jsx';\n\nexport default class ErrorPanel extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n show: false,\n };\n\n this.hide = this.hide.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.level !== this.props.level) {\n this.setState({\n show: !(!this.props.level)\n });\n }\n }\n\n hide() {\n this.setState({show: false});\n if (this.props.onClearError) {\n this.props.onClearError();\n }\n }\n\n render() {\n const icons = {err: 'error', warn: 'warning', info: 'info'}\n const level = icons[this.props.level] || '';\n const className = 'info-box ' + level;\n return (\n
    \n
    {level}
    \n \n {this.props.text}\n {this.props.action ?\n <>\n {e.preventDefault(); this.props.action();}}>\n {this.props.actionText}\n \n \n : null}\n \n
    \n
    \n );\n }\n};\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\n\nexport default class Chip extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n handleCancel(e) {\n e.preventDefault();\n this.props.onCancel(this.props.topic, this.props.index);\n }\n\n render() {\n const title = this.props.title || this.props.topic;\n const className = this.props.invalid ? 'chip invalid' : 'chip';\n return (\n
    \n {this.props.noAvatar ?\n :\n
    \n \n
    \n }\n {title}\n {this.props.onCancel && !this.props.required ?\n ×\n : }\n
    \n );\n }\n};\n","import React from 'react';\n\nimport Chip from './chip.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\n/* BEGIN ChipInput: group membership widget */\nexport default class ChipInput extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = ChipInput.deriveStateFromProps(props);\n this.state.input = '';\n this.state.focused = false;\n\n this.handleTextInput = this.handleTextInput.bind(this);\n this.removeChipAt = this.removeChipAt.bind(this);\n this.handleChipCancel = this.handleChipCancel.bind(this);\n this.handleFocusGained = this.handleFocusGained.bind(this);\n this.handleFocusLost = this.handleFocusLost.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n static deriveStateFromProps(props) {\n return {\n placeholder: props.chips ? '' : props.prompt,\n sortedChips: ChipInput.sortChips(props.chips, props.staticMembers),\n chipIndex: ChipInput.indexChips(props.chips)\n };\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevProps.chips != this.props.chips ||\n prevProps.staticMembers != this.props.staticMembers ||\n prevProps.prompt != this.props.prompt) {\n this.setState(ChipInput.deriveStateFromProps(this.props));\n }\n if (!prevState || this.props.chips.length > prevState.sortedChips.length) {\n this.setState({input: ''});\n }\n }\n\n // Map chip index to user name\n static indexChips(chips) {\n const index = {};\n let count = 0;\n chips.map((item) => {\n index[item.user] = count;\n count ++;\n });\n return index;\n }\n\n // Have non-removable chips appear before all other chips.\n static sortChips(chips, keep) {\n const required = [];\n const normal = [];\n chips.map((item) => {\n if (keep && keep.includes(item.user)) {\n required.push(item);\n } else {\n normal.push(item);\n }\n });\n return required.concat(normal);\n }\n\n handleTextInput(e) {\n this.setState({input: e.target.value});\n if (this.props.filterFunc) {\n this.props.filterFunc(e.target.value);\n }\n }\n\n removeChipAt(idx) {\n const removed = this.state.sortedChips[idx];\n this.props.onChipRemoved(removed.user, this.state.chipIndex[removed.user]);\n }\n\n handleChipCancel(item, idx) {\n this.removeChipAt(idx);\n }\n\n handleFocusGained() {\n this.setState({focused: true});\n }\n\n handleFocusLost() {\n this.setState({focused: false});\n if (this.props.onFocusLost) {\n this.props.onFocusLost(this.state.input);\n }\n }\n\n handleKeyDown(e) {\n if (e.key === 'Backspace') {\n if (this.state.input.length == 0 && this.state.sortedChips.length > 0) {\n const at = this.state.sortedChips.length - 1;\n if (this.state.sortedChips[at].user !== this.props.staticMembers) {\n this.removeChipAt(at);\n }\n }\n } else if (e.key === 'Enter') {\n if (this.props.onEnter) {\n this.props.onEnter(this.state.input);\n }\n } else if (e.key === 'Escape') {\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n }\n\n render() {\n const chips = [];\n let count = 0;\n const staticMembers = this.props.staticMembers || [];\n this.state.sortedChips.map((item) => {\n chips.push(\n \n );\n count++;\n });\n const className = \"chip-input\" + (this.state.focused ? ' focused' : '');\n const autoFocus = !(this.props.tabIndex > 0);\n return (\n
    \n {chips}\n \n
    \n );\n }\n};\n","// GroupMembers: control for managing a list of group members.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport ChipInput from './chip-input.jsx';\nimport ContactList from './contact-list.jsx';\n\nconst messages = defineMessages({\n no_contacts: {\n id: 'no_contacts',\n defaultMessage: 'You have no contacts :-(',\n description: 'Shown in ContactsView when the user has no contacts'\n },\n contacts_not_found_short: {\n id: 'contacts_not_found_short',\n defaultMessage: \"No contacts match ''{query}''\",\n description: 'Shown in ContactsView when search returned no results'\n }\n});\n\nclass GroupManager extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Array of topic members\n members: props.members,\n index: GroupManager.indexMembers(props.members),\n staticMembers: GroupManager.staticMembers(props.members, props.keepInitialMembers, props.requiredMember),\n contactFilter: '',\n noContactsMessage: props.intl.formatMessage(messages.no_contacts),\n selectedContacts: GroupManager.selectedContacts(props.members)\n };\n\n this.handleContactSelected = this.handleContactSelected.bind(this);\n this.handleMemberRemoved = this.handleMemberRemoved.bind(this);\n this.handleContactFilter = this.handleContactFilter.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n static indexMembers(members) {\n let index = {};\n members.map((m) => {\n index[m.user] = {delta: 0, present: true}; // Delta: 0 unchanged, +1 added, -1 removed\n });\n return index;\n }\n\n static staticMembers(members, keepInitial, requiredMember) {\n let stat = [];\n members.map((m) => {\n if (keepInitial || m.user == requiredMember) {\n stat.push(m.user);\n }\n });\n return stat;\n }\n\n static selectedContacts(members) {\n let sel = [];\n members.map((m) => {\n sel.push(m.user);\n });\n return sel;\n }\n\n handleContactSelected(userId, index) {\n let status = this.state.index[userId];\n if (status) {\n if (status.present) {\n // Prevent duplicate members\n return;\n }\n status.delta += 1;\n status.present = true;\n } else {\n status = {delta: 1, present: true};\n }\n\n let m = this.state.members.slice();\n m.push(this.props.contacts[index]);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleMemberRemoved(userId, index) {\n const status = this.state.index[userId];\n if (!status || !status.present) {\n return;\n }\n status.present = false;\n status.delta -= 1;\n\n let m = this.state.members.slice();\n m.splice(index, 1);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleContactFilter(val) {\n const {formatMessage} = this.props.intl;\n const msg = !val ?\n formatMessage(messages.no_contacts) :\n formatMessage(messages.contacts_not_found_short, {query: val});\n\n this.setState({contactFilter: val, noContactsMessage: msg});\n }\n\n static doContactFiltering(filter, values) {\n if (filter) {\n for (let i=0; i= 0) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n handleSubmit() {\n var instance = this;\n var members = [];\n var added = [];\n var removed = [];\n\n var keys = Object.keys(this.state.index);\n keys.map(function(k) {\n if (instance.state.index[k].present) {\n members.push(k);\n }\n\n if (instance.state.index[k].delta > 0) {\n added.push(k);\n } else if (instance.state.index[k].delta < 0) {\n removed.push(k);\n }\n });\n this.props.onSubmit(members, added, removed);\n }\n\n handleCancel() {\n this.props.onCancel();\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n \n \n
    \n
    \n );\n }\n};\n\nexport default injectIntl(GroupManager);\n","// PermissionsEditor: Component for editing permissions\n// \nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport CheckBox from './checkbox.jsx';\nimport Contact from './contact.jsx';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\n// Translatable permission names.\nconst messages = defineMessages({\n joiner: {\n id: 'permission_join',\n defaultMessage: \"Join ({val})\",\n description: 'Name of J permission'\n },\n reader: {\n id: 'permission_read',\n defaultMessage: \"Read ({val})\",\n description: 'Name of R permission'\n },\n writer: {\n id: 'permission_write',\n defaultMessage: \"Write ({val})\",\n description: 'Name of W permission'\n },\n preser: {\n id: 'permission_pres',\n defaultMessage: \"Get notified ({val})\",\n description: 'Name of P permission'\n },\n approver: {\n id: 'permission_admin',\n defaultMessage: \"Approve ({val})\",\n description: 'Name of A permission'\n },\n sharer: {\n id: 'permission_share',\n defaultMessage: \"Share ({val})\",\n description: 'Name of S permission'\n },\n deleter: {\n id: 'permission_delete',\n defaultMessage: \"Delete ({val})\",\n description: 'Name of D permission'\n },\n owner: {\n id: 'permission_owner',\n defaultMessage: \"Owner ({val})\",\n description: 'Name of O permission'\n }\n});\n\nclass PermissionsEditor extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n mode: (props.mode || '').replace('N', '')\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n handleChange(val) {\n let mode = this.state.mode;\n const idx = mode.indexOf(val);\n if (idx == -1) {\n mode += val;\n } else {\n mode = mode.replace(val, '');\n }\n this.setState({mode: mode});\n }\n\n handleSubmit() {\n // Normalize string, otherwise cannot check if mode has changed.\n const mode = (this.state.mode || 'N').split('').sort().join('');\n const before = (this.props.mode || 'N').split('').sort().join('')\n if (mode !== before) {\n this.props.onSubmit(mode);\n } else {\n this.props.onCancel();\n }\n }\n\n handleCancel() {\n this.props.onCancel();\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n const all = 'JRWPASDO';\n const names = {\n 'J': formatMessage(messages.joiner, {val: 'J'}),\n 'R': formatMessage(messages.reader, {val: 'R'}),\n 'W': formatMessage(messages.writer, {val: 'W'}),\n 'P': formatMessage(messages.preser, {val: 'P'}),\n 'A': formatMessage(messages.approver, {val: 'A'}),\n 'S': formatMessage(messages.sharer, {val: 'S'}),\n 'D': formatMessage(messages.deleter, {val: 'D'}),\n 'O': formatMessage(messages.owner, {val: 'O'})\n };\n\n let skip = this.props.skip || '';\n let mode = this.state.mode;\n let compare = (this.props.compare || '').replace('N', '');\n let items = [];\n for (let i=0; i= 0 && mode.indexOf(c) < 0) {\n // Permission is marked as inactive: hide unchecked permissions, disable checked permissions\n continue;\n }\n items.push(\n \n {names[c]}\n {skip.indexOf(c) < 0 ?\n = 0)} onChange={this.handleChange}/>\n :\n = 0)} />\n }{this.props.compare ? \n = 0)}/>\n : null}\n \n );\n }\n\n return (\n
    \n {this.props.userTitle ?\n
    : null}\n \n \n {this.props.compare ?\n \n \n \n :\n null}\n \n {items}\n
    {this.props.modeTitle}{this.props.compareTitle}
    \n
    \n
    \n \n \n
    \n
    \n );\n }\n};\n\nexport default injectIntl(PermissionsEditor);\n","// Image zoom and crop widget.\n\nimport React from 'react';\n\nconst DEFAULT_MAX_ZOOM = 2.5;\n\nexport default class Cropper extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Coordinates of the top left corner of the image in container coordinates.\n panX: 0,\n panY: 0,\n // Origin of the zoom in image coordinates.\n originX: 0,\n originY: 0,\n // Zoom scale.\n zoom: 1,\n // Zoom min and max.\n minZoom: 0,\n maxZoom: DEFAULT_MAX_ZOOM,\n };\n\n // References to DOM elements for hooking up events and getting screen dimensions.\n // The transparent element which captures mouse moves (moves with the image).\n this.overlay = React.createRef();\n // The image cutout window or view port (static).\n this.cutout = React.createRef();\n // Scaled and translated image preview.\n this.preview = React.createRef();\n // The main container (static).\n this.boundingBox = React.createRef();\n\n // The original image width and height before any scaling.\n this.imageWidth = 0;\n this.imageHeight = 0;\n\n // Mouse position when dragging.\n this.mouseX = 0\n this.mouseY = 0;\n // Length of the previous mouse move when dragging.\n this.prevDistance = 0;\n\n // Bounding rectangles of static elements.\n this.cutoutRect = {};\n this.bBoxRect = {};\n // Center of the bounding box.\n this.originX = 0;\n this.originY = 0;\n\n this.initScaling = this.initScaling.bind(this);\n this.onZoom = this.onZoom.bind(this);\n this.handleZoom = this.handleZoom.bind(this);\n this.mouseDown = this.mouseDown.bind(this);\n this.mouseUp = this.mouseUp.bind(this);\n this.mouseMove = this.mouseMove.bind(this);\n this.mouseTouch = this.mouseTouch.bind(this);\n this.positionAll = this.positionAll.bind(this);\n this.translate = this.translate.bind(this);\n }\n\n componentDidMount() {\n this.overlay.current.addEventListener('mousedown', this.mouseDown, { passive: true });\n this.overlay.current.addEventListener('touchstart', this.mouseDown, { passive: true });\n\n // The rectangle position is in viewport coordinates.\n this.bBoxRect = this.boundingBox.current.getBoundingClientRect();\n // Center of the bounding box in container coordinates.\n this.originX = this.bBoxRect.width / 2;\n this.originY = this.bBoxRect.height / 2;\n\n // The rectangle position is in viewport coordinates.\n this.cutoutRect = this.cutout.current.getBoundingClientRect();\n }\n\n componentWillUnmount() {\n this.overlay.current.removeEventListener('mousedown', this.mouseDown);\n this.overlay.current.removeEventListener('touchstart', this.mouseDown);\n }\n\n // Position all elements.\n positionAll(panX, panY, zoom) {\n // Zoom origin in image preview coordinates.\n this.setState({\n panX: panX,\n panY: panY,\n zoom: zoom,\n originX: this.originX - panX,\n originY: this.originY - panY,\n });\n\n // Pass cut out coordinates to caller.\n const left = (this.originX - panX) * zoom - this.originX;\n const top = (this.originY - panY) * zoom - this.originY;\n this.props.onChange(\n (left + this.cutoutRect.left - this.bBoxRect.left) / zoom,\n (top + this.cutoutRect.top - this.bBoxRect.top) / zoom,\n this.cutoutRect.width / zoom,\n this.cutoutRect.height / zoom,\n zoom);\n }\n\n // Check if new location is within the limits.\n static checkBound(currPan, img, cutout, delta) {\n let nextDiff = Math.min(0, cutout[0] - img[0] - delta, img[1] - cutout[1] + delta);\n if (nextDiff == 0) {\n // Cutout is completely within the image.\n currPan += delta;\n } else if (Math.min(0, cutout[0] - img[0], img[1] - cutout[1]) < nextDiff) {\n // Cutout is outside of the range but closer to the bound.\n currPan += delta;\n }\n return currPan;\n }\n\n initScaling() {\n // Initialize components.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n this.imageWidth = imgRect.width;\n this.imageHeight = imgRect.height;\n\n // Set zoom slider's min and max values. Make sure the scaled image cannot be smaller than the cutout.\n const minZoom = Math.max(this.cutoutRect.width / imgRect.width, this.cutoutRect.height / imgRect.height);\n this.setState({\n minZoom: minZoom,\n maxZoom: Math.max(DEFAULT_MAX_ZOOM, minZoom + 1)\n });\n\n // Initial zoom level fills the bounding box at the smallest image dimension and overflows the largest, i.e. \"fill\" not \"fit\".\n const zoom = Math.max(this.bBoxRect.width / imgRect.width, this.bBoxRect.height / imgRect.height);\n // Converting from viewport coordinates to container, then panning.\n const panX = this.cutoutRect.left - this.bBoxRect.left -\n (imgRect.width - this.cutoutRect.width) / 2;\n const panY = this.cutoutRect.top - this.bBoxRect.top -\n (imgRect.height - this.cutoutRect.height) / 2;\n\n this.positionAll(panX, panY, zoom);\n }\n\n onZoom(e) {\n this.handleZoom(e.target.value);\n }\n\n handleZoom(zoom) {\n let panX = this.state.panX;\n let panY = this.state.panY;\n\n // Ensure that the image at the new zoom is not outside of the cutout boundaries.\n // Calculate image coordinates at the new zoom.\n const imgLeft = this.originX - (this.originX - panX) * zoom;\n const imgRight = imgLeft + this.imageWidth * zoom;\n // Cutout in the same coordinates as the image.\n const coLeft = this.cutoutRect.left - this.bBoxRect.left;\n const coRight = coLeft + this.cutoutRect.width;\n if (coLeft < imgLeft) {\n panX -= imgLeft - coLeft;\n } else if (coRight > imgRight) {\n panX += coRight - imgRight;\n }\n const imgTop = this.originY - (this.originY - panY) * zoom;\n const imgBottom = imgTop + this.imageHeight * zoom;\n const coTop = this.cutoutRect.top - this.bBoxRect.top;\n const coBottom = coTop + this.cutoutRect.height;\n if (coTop < imgTop) {\n panY -= imgTop - coTop;\n } else if (coBottom > imgBottom) {\n panY += coBottom - imgBottom;\n }\n\n this.positionAll(panX, panY, zoom);\n }\n\n mouseDown(e) {\n if (e.touches) {\n this.mouseX = e.touches[0].pageX;\n this.mouseY = e.touches[0].pageY;\n } else {\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n }\n\n window.addEventListener('mousemove', this.mouseMove, { passive: false });\n window.addEventListener('touchmove', this.mouseTouch, { passive: false });\n window.addEventListener('mouseup', this.mouseUp, { passive: true });\n window.addEventListener('touchend', this.mouseUp, { passive: true });\n // Disable text selection in the entire document.\n document.body.style['userSelect'] = 'none';\n }\n\n // Perform image panning.\n translate(pageX, pageY) {\n const dX = pageX - this.mouseX;\n const dY = pageY - this.mouseY;\n\n this.mouseX = pageX;\n this.mouseY = pageY;\n\n // Make sure the image is within the cutout window.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n // Check if the new position is within the boundaries, and if not if it's closer to them.\n let panX = Cropper.checkBound(this.state.panX, [imgRect.left, imgRect.right],\n [this.cutoutRect.left, this.cutoutRect.right], dX);\n let panY = Cropper.checkBound(this.state.panY, [imgRect.top, imgRect.bottom],\n [this.cutoutRect.top, this.cutoutRect.bottom], dY);\n\n this.positionAll(panX, panY, this.state.zoom);\n }\n\n // Image panning.\n mouseMove(e) {\n e.preventDefault();\n this.translate(e.pageX, e.pageY);\n }\n\n mouseTouch(e) {\n e.preventDefault();\n\n if (e.touches.length == 1) {\n this.translate(e.touches[0].pageX, e.touches[0].pageY);\n return;\n }\n\n // Image zooming by pinching.\n const [touch0, touch1] = e.touches;\n const distance = Math.sqrt((touch0.pageX - touch1.pageX) * (touch0.pageX - touch1.pageX) +\n (touch0.pageY - touch1.pageY) * (touch0.pageY - touch1.pageY));\n\n if (!this.prevDistance) {\n this.prevDistance = distance / this.state.zoom;\n }\n\n let scale = (distance / this.prevDistance);\n this.handleZoom(Math.max(this.minZoom, Math.min(this.maxZoom, scale)));\n }\n\n mouseUp(e) {\n window.removeEventListener('mousemove', this.mouseMove);\n window.removeEventListener('touchmove', this.mouseTouch);\n window.removeEventListener('mouseup', this.mouseUp);\n window.removeEventListener('touchend', this.mouseUp);\n // Re-enable text selection.\n document.body.style['userSelect'] = '';\n\n this.positionAll(this.state.panX, this.state.panY, this.state.zoom);\n }\n\n render() {\n // transform3d: position and scale.\n const t3d = `translate3d(${this.state.panX}px, ${this.state.panY}px, 0) scale(${this.state.zoom})`;\n // transformOrigin: zoom origin.\n const orig = `${this.state.originX}px ${this.state.originY}px`;\n\n // Overlay position and size are exactly equal to the position and size of the transformed image\n // except it uses different coordinates.\n const overlay = {\n top: `${this.originY - this.state.originY * this.state.zoom}px`,\n left: `${this.originX - this.state.originX * this.state.zoom}px`,\n width: `${this.imageWidth * this.state.zoom}px`,\n height: `${this.imageHeight * this.state.zoom}px`\n };\n return (\n
    \n
    \n \"\"\n\n
    \n
    \n
    \n
    \n \n
    \n
    \n );\n }\n}\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport Cropper from './cropper.jsx';\nimport { imageCrop } from '../lib/blob-helpers.js';\n\nexport default class AvatarCrop extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n scale: 1\n };\n\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleChange = this.handleChange.bind(this);\n }\n\n // Cut out in image coordinates and desired scale factor.\n handleChange(left, top, width, height, scale) {\n this.setState({\n left: left,\n top: top,\n width: width,\n height: height,\n scale: scale\n });\n }\n\n handleSubmit() {\n imageCrop(this.props.mime, this.props.avatar,\n this.state.left, this.state.top,\n this.state.width, this.state.height,\n this.state.scale,\n (mime, blob, width, height) => {\n this.props.onSubmit(mime, blob, width, height);\n },\n (err) => {\n this.props.onError(err);\n }\n );\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n {this.props.onCancel ?\n \n : null}\n \n
    \n
    \n );\n }\n};\n","// Password with a visiblity toggle.\nimport React from 'react';\n\nexport default class VisiblePassword extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n value: this.props.value,\n visible: false\n };\n\n this.handleVisibility = this.handleVisibility.bind(this);\n this.handeTextChange = this.handeTextChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleEditingFinished = this.handleEditingFinished.bind(this);\n }\n\n handeTextChange(e) {\n this.setState({value: e.target.value});\n if (this.props.onChange) {\n this.props.onChange(e);\n }\n }\n\n handleVisibility(e) {\n e.preventDefault();\n this.setState({visible: !this.state.visible});\n }\n\n handleKeyDown(e) {\n if (e.keyCode == 27) {\n // Escape pressed\n this.setState({value: this.props.value, visible: false});\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n } else if (e.keyCode == 13) {\n // Enter pressed\n this.handleEditingFinished();\n }\n }\n\n handleEditingFinished(e) {\n if (e) {\n let currentTarget = e.currentTarget;\n setTimeout(() => {\n if (!currentTarget.contains(document.activeElement)) {\n if (this.props.onFinished) {\n this.props.onFinished(this.state.value);\n }\n }\n }, 0);\n } else if (this.props.onFinished) {\n this.props.onFinished(this.state.value.trim());\n }\n }\n\n render() {\n return (\n
    \n \n \n \n {this.state.visible ? 'visibility' : 'visibility_off'}\n \n \n
    \n );\n }\n}\n","// In-place text editor. Shows text with an icon which toggles it into an input field.\nimport React from 'react';\n\nimport VisiblePassword from './visible-password.jsx';\n\nexport default class InPlaceEdit extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n this.state = {\n active: props.active,\n initialValue: props.value || '',\n value: props.value || ''\n };\n\n this.handeTextChange = this.handeTextChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleStartEditing = this.handleStartEditing.bind(this);\n this.handleEditingFinished = this.handleEditingFinished.bind(this);\n this.handlePasswordFinished = this.handlePasswordFinished.bind(this);\n }\n\n componentDidUpdate(prevProps, prevState) {\n // If text has changed while in read mode, update text and discard changes.\n // Ignore update if in edit mode.\n const newValue = this.props.value || '';\n if (prevState.initialValue != newValue && !prevState.active) {\n this.setState({\n initialValue: newValue,\n value: newValue\n });\n }\n }\n\n handeTextChange(e) {\n this.setState({value: e.target.value});\n }\n\n handleKeyDown(e) {\n if (e.keyCode === 27) {\n // Escape pressed\n this.setState({value: this.props.value, active: false});\n } else if (e.keyCode === 13) {\n // Enter pressed\n this.handleEditingFinished(e);\n }\n }\n\n handleStartEditing() {\n if (!this.props.readOnly) {\n this.setState({active: true}, () => {\n if (this.selfRef.current) {\n this.selfRef.current.focus();\n }\n });\n }\n }\n\n handleEditingFinished(event) {\n if (this.props.required && !event.target.checkValidity()) {\n // Empty input\n this.setState({value: this.props.value, active: false});\n return;\n }\n this.setState({active: false});\n const value = this.state.value.trim();\n if ((value || this.props.value) && (value !== this.props.value)) {\n this.props.onFinished(value);\n }\n }\n\n handlePasswordFinished(value) {\n this.setState({active: false});\n if (value && (value !== this.props.value)) {\n this.props.onFinished(value);\n }\n }\n\n render() {\n if (!this.state.active) {\n let spanText = this.props.type == 'password' ? '••••••••' : this.state.value;\n let spanClass = 'in-place-edit' + (this.props.readOnly ? ' disabled' : '');\n if (!spanText) {\n spanText = this.props.placeholder;\n spanClass += ' placeholder';\n }\n if (!this.props.multiline || this.props.multiline == 1) {\n spanClass += ' short';\n }\n\n return (\n {spanText}\n );\n }\n\n let element;\n const attr = {};\n if (this.props.type == 'password') {\n element = VisiblePassword;\n attr.onFinished = this.handlePasswordFinished;\n } else {\n if (this.props.multiline > 1) {\n element = 'textarea';\n attr.rows = this.props.multiline;\n attr.className = 'inplace-edit';\n } else {\n element = 'input';\n attr.type = this.props.type || 'text';\n }\n attr.value = this.state.value;\n attr.onChange = this.handeTextChange;\n attr.onKeyDown = this.handleKeyDown;\n attr.onBlur = this.handleEditingFinished;\n }\n attr.placeholder = this.props.placeholder;\n attr.required = this.props.required ? 'required' : '';\n attr.autoComplete = this.props.autoComplete;\n attr.autoFocus = true;\n attr.ref = this.selfRef;\n\n return React.createElement(element, attr, null);\n }\n};\n","// TagManager: edit topic or user tags.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport ChipInput from './chip-input.jsx';\n\nimport { MAX_TAG_COUNT, MAX_TAG_LENGTH, MIN_TAG_LENGTH } from '../config.js';\nimport { arrayEqual } from '../lib/utils.js';\n\nexport default class TagManager extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n tags: this.props.tags || [],\n tagInput: '',\n activated: this.props.activated\n };\n\n this.handleTagInput = this.handleTagInput.bind(this);\n this.handleAddTag = this.handleAddTag.bind(this);\n this.handleRemoveTag = this.handleRemoveTag.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n const tags = nextProps.tags || [];\n if (!arrayEqual(tags, prevState.tags) && !prevState.activated) {\n return {tags: tags};\n }\n return null;\n }\n\n handleTagInput(text) {\n this.setState({tagInput: text});\n if (text.length > 0) {\n const last = text[text.length-1];\n if (text[0] == '\"') {\n // This is a quoted string.\n if (text.length > 1 && last == '\"') {\n this.handleAddTag(text.substring(1, text.length-1));\n }\n } else if (last == ',' || last == ' ' || last == ';' || last == '\"') {\n // User entered ',', ' ' or ';'\n this.handleAddTag(text.substring(0, text.length-1).trim());\n }\n }\n }\n\n handleAddTag(tag) {\n const maxTagCount = this.props.tinode.getServerLimit('maxTagCount', MAX_TAG_COUNT);\n\n if (tag.length > 0 && this.state.tags.length < maxTagCount) {\n const tags = this.state.tags.slice(0);\n tags.push(tag);\n\n this.setState({tags: tags, tagInput: ''});\n if (this.props.onTagsChanged) {\n this.props.onTagsChanged(tags);\n }\n return tags;\n }\n return this.state.tags;\n }\n\n handleRemoveTag(tag, index) {\n const tags = this.state.tags.slice(0);\n tags.splice(index, 1);\n this.setState({tags: tags});\n if (this.props.onTagsChanged) {\n this.props.onTagsChanged(tags);\n }\n }\n\n handleSubmit() {\n // Add unprocessed input to tags, submit the list.\n this.props.onSubmit(this.handleAddTag(this.state.tagInput.trim()));\n this.setState({activated: false, tags: this.props.tags || []});\n }\n\n handleCancel() {\n this.setState({activated: false, tagInput: '', tags: this.props.tags || []});\n if (this.props.onCancel) {\n this.props.onCancel();\n }\n }\n\n render() {\n const minTagLength = this.props.tinode.getServerLimit('minTagLength', MIN_TAG_LENGTH);\n const maxTagLength = this.props.tinode.getServerLimit('maxTagLength', MAX_TAG_LENGTH);\n\n let tags = [];\n if (this.state.activated) {\n this.state.tags.map((tag) => {\n tags.push({user: tag, invalid: (tag.length < minTagLength || tag.length > maxTagLength)});\n });\n } else {\n this.state.tags.map((tag) => {\n tags.push({tag});\n });\n if (tags.length == 0) {\n tags = (\n \n \n \n );\n }\n }\n return (\n
    \n
    \n \n
    \n {this.state.activated ?\n
    \n {\n (add_tags_prompt) => \n }\n {this.props.onSubmit || this.props.onCancel ?\n
    \n \n \n
    \n : null}\n
    \n :\n \n }\n
    \n );\n }\n};\n","// Widget for editing topic description.\n\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport Tinode from 'tinode-sdk';\n\nimport AvatarCrop from './avatar-crop.jsx';\nimport AvatarUpload from './avatar-upload.jsx';\nimport InPlaceEdit from './in-place-edit.jsx';\nimport TagManager from './tag-manager.jsx';\n\nimport { AVATAR_SIZE, MAX_AVATAR_BYTES, MAX_EXTERN_ATTACHMENT_SIZE,\n MAX_INBAND_ATTACHMENT_SIZE, MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH } from '../config.js';\nimport { imageScaled, blobToBase64, makeImageUrl } from '../lib/blob-helpers.js';\nimport { arrayEqual, theCard } from '../lib/utils.js';\n\nexport default class TopicDescEdit extends React.Component {\n constructor(props) {\n super(props);\n\n const topic = this.props.tinode.getTopic(this.props.topic);\n const acs = topic.getAccessMode();\n this.state = {\n isMe: Tinode.isMeTopicName(this.props.topic),\n owner: acs && acs.isOwner(),\n fullName: topic.public ? topic.public.fn : undefined,\n private: topic.private ? topic.private.comment : null,\n description: topic.public ? topic.public.note : undefined,\n avatar: makeImageUrl(topic.public ? topic.public.photo : null),\n tags: topic.tags(),\n newAvatar: null,\n newAvatarMime: null,\n previousOnTags: topic.onTagsUpdated\n };\n\n this.tnNewTags = this.tnNewTags.bind(this);\n this.handleFullNameUpdate = this.handleFullNameUpdate.bind(this);\n this.handleImageUpdated = this.handleImageUpdated.bind(this);\n this.handleAvatarCropped = this.handleAvatarCropped.bind(this);\n this.handlePrivateUpdate = this.handlePrivateUpdate.bind(this);\n this.handleDescriptionUpdate = this.handleDescriptionUpdate.bind(this);\n this.uploadAvatar = this.uploadAvatar.bind(this);\n this.handleAvatarCropCancel = this.handleAvatarCropCancel.bind(this);\n this.handleTagsUpdated = this.handleTagsUpdated.bind(this);\n }\n\n componentDidMount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n topic.onTagsUpdated = this.tnNewTags;\n }\n\n componentWillUnmount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n topic.onTagsUpdated = this.state.previousOnTags;\n }\n\n tnNewTags(tags) {\n this.setState({tags: tags});\n }\n\n handleFullNameUpdate(fn) {\n fn = fn.trim().substring(0, MAX_TITLE_LENGTH);\n if (fn && this.state.fullName !== fn) {\n this.setState({fullName: fn});\n this.props.onUpdateTopicDesc(this.props.topic, theCard(fn, null));\n }\n }\n\n handlePrivateUpdate(comment) {\n comment = comment.trim().substring(0, MAX_TITLE_LENGTH);\n if (this.state.private !== comment) {\n this.setState({private: comment});\n this.props.onUpdateTopicDesc(this.props.topic, null, comment || Tinode.DEL_CHAR);\n }\n }\n\n handleDescriptionUpdate(desc) {\n desc = desc.trim().substring(0, MAX_TOPIC_DESCRIPTION_LENGTH);\n if (desc) {\n this.setState({description: desc});\n this.props.onUpdateTopicDesc(this.props.topic, theCard(null, null, null, desc));\n }\n }\n\n // AvatarUpload widget has changed the avatar: received a new file or deleted the avatar.\n handleImageUpdated(mime, img) {\n // This will show the AvatarCropView is img is not null.\n this.setState({newAvatar: img, newAvatarMime: mime});\n if (!img) {\n // Deleting the avatar.\n this.props.onUpdateTopicDesc(this.props.topic, theCard(null, Tinode.DEL_CHAR));\n }\n }\n\n // AvatarCropView calls this method when the user has cropped the image.\n handleAvatarCropped(mime, blob, width, height) {\n const url = blob ? URL.createObjectURL(blob) : null;\n this.setState({avatar: url, newAvatar: null, newAvatarMime: null});\n if (blob) {\n this.uploadAvatar(mime, blob, width, height);\n }\n }\n\n // Utility method for converting cropped avatar blob to bytes for sending inband or\n // for uploading it to the server out of band.\n uploadAvatar(mime, blob, width, height) {\n const readyToUpload = (mime, blob, width, height) => {\n if (blob.size > MAX_AVATAR_BYTES) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n\n this.setState({uploading: true});\n uploader.upload(blob)\n .then((url) => {\n this.props.onUpdateTopicDesc(this.props.topic, theCard(null, url));\n })\n .catch((err) => {\n this.props.onError(err, 'err');\n })\n .finally(() => {\n this.setState({uploading: false});\n });\n } else {\n this.setState({uploading: true});\n // Convert blob to base64-encoded bits.\n blobToBase64(blob, (unused, base64bits) => {\n const du = makeImageUrl({data: base64bits, type: mime});\n this.setState({source: du});\n this.props.onUpdateTopicDesc(this.props.topic, theCard(null, du));\n this.setState({uploading: false});\n });\n }\n };\n\n if (width > AVATAR_SIZE || height > AVATAR_SIZE || width != height) {\n // Avatar is not square or too large even after cropping. Shrink it and make square.\n imageScaled(blob, AVATAR_SIZE, AVATAR_SIZE, MAX_EXTERN_ATTACHMENT_SIZE, true,\n readyToUpload,\n (err) => {\n this.props.onError(err, 'err');\n });\n } else {\n readyToUpload(mime, blob, width, height);\n }\n }\n\n handleAvatarCropCancel(img) {\n this.setState({newAvatar: null, newAvatarMime: null});\n }\n\n handleTagsUpdated(tags) {\n // Check if tags have actually changed.\n if (arrayEqual(this.state.tags.slice(0), tags.slice(0))) {\n return;\n }\n this.props.onUpdateTags(tags);\n }\n\n render() {\n if (this.state.newAvatar) {\n return (\n \n );\n }\n\n const editable = this.state.isMe || this.state.owner;\n\n return (\n <>\n
    \n
    \n \n
    \n {this.state.isMe ?\n
    \n \n
    \n {\n (full_name_placeholder) => \n }\n
    \n
    \n :\n <>\n
    \n
    \n
    \n Unknown}\n readOnly={!editable}\n value={this.state.fullName}\n required={true}\n onFinished={this.handleFullNameUpdate} />\n
    \n
    \n
    \n
    \n \n
    \n
    \n {\n (private_placeholder) => \n }\n
    \n
    \n \n }\n {editable || this.state.description ?\n
    \n
    \n
    \n {\n (private_placeholder) => \n }\n
    \n
    \n : null\n }\n
    \n {editable ?\n <>\n
    \n {\n (title_tag_manager) => \n }\n \n : null\n }\n \n );\n }\n};\n","// View for editing topic (including 'me' topic) parameters.\n\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport TopicDescEdit from '../widgets/topic-desc-edit.jsx';\n\nimport { arrayEqual, asEmail, asPhone } from '../lib/utils.js';\n\nexport default class TopicCommon extends React.Component {\n constructor(props) {\n super(props);\n\n const topic = this.props.tinode.getTopic(this.props.topic);\n const acs = topic.getAccessMode();\n this.state = {\n isMe: this.props.topic == 'me',\n owner: acs && acs.isOwner(),\n credentials: (topic.getCredentials ? topic.getCredentials() : null) || [],\n addCredActive: false,\n addCredInvalid: false,\n newCred: '',\n tags: [],\n previousTagsUpdated: undefined\n };\n\n this.onTagsUpdated = this.onTagsUpdated.bind(this);\n this.handleTagsUpdated = this.handleTagsUpdated.bind(this);\n this.tnCredsUpdated = this.tnCredsUpdated.bind(this);\n this.handleCredChange = this.handleCredChange.bind(this);\n this.handleCredKeyDown = this.handleCredKeyDown.bind(this);\n this.handleCredEntered = this.handleCredEntered.bind(this);\n }\n\n // No need to separately handle component mount.\n componentDidUpdate(props) {\n const topic = this.props.tinode.getTopic(props.topic);\n if (!topic) {\n return;\n }\n\n topic.onCredsUpdated = this.tnCredsUpdated;\n\n if (topic.onTagsUpdated != this.onTagsUpdated) {\n if (topic.getType() == 'grp') {\n this.previousTagsUpdated = topic.onTagsUpdated;\n topic.onTagsUpdated = this.onTagsUpdated;\n } else {\n this.previousTagsUpdated = undefined;\n }\n }\n\n if (this.state.topic != props.topic) {\n this.setState({topic: props.topic});\n }\n }\n\n componentWillUnmount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n topic.onCredsUpdated = undefined;\n topic.onTagsUpdated = this.previousTagsUpdated;\n }\n\n tnCredsUpdated(creds) {\n this.setState({credentials: creds || []});\n }\n\n handleCredChange(e) {\n this.setState({newCred: e.target.value, addCredInvalid: false});\n }\n\n handleCredKeyDown(e) {\n if (e.keyCode === 27) {\n // Escape pressed\n this.setState({newCred: '', addCredActive: false});\n } else if (e.keyCode === 13) {\n // Enter pressed\n this.handleCredEntered(e);\n }\n }\n\n handleCredEntered(e) {\n const value = this.state.newCred.trim();\n if (!value) {\n this.setState({addCredActive: false, addCredInvalid: false});\n return;\n }\n\n let val = asPhone(value);\n let method;\n if (val) {\n method = 'tel';\n } else {\n val = asEmail(value);\n if (val) {\n method = 'email';\n }\n }\n if (method) {\n this.props.onCredAdd(method, val);\n this.setState({addCredActive: false, newCred: ''});\n } else {\n this.setState({addCredInvalid: true});\n }\n }\n\n onTagsUpdated(tags) {\n this.setState({tags: tags});\n\n if (this.previousTagsUpdated && this.previousTagsUpdated != this.onTagsUpdated) {\n this.previousTagsUpdated();\n }\n }\n\n handleTagsUpdated(tags) {\n if (!arrayEqual(this.state.tags.slice(0), tags.slice(0))) {\n this.props.onTopicTagsUpdate(this.props.topic, tags);\n }\n }\n\n render() {\n const credentials = [];\n if (this.state.isMe) {\n this.state.credentials.map((cred) => {\n credentials.push(\n \n );\n });\n }\n\n return (\n
    \n \n {this.state.isMe ?\n <>\n
    \n
    \n \n
    \n {credentials}\n {this.state.addCredActive ?\n \n : null}\n \n
    \n
    \n \n : null\n }\n
    \n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport InPlaceEdit from './in-place-edit.jsx';\n\nimport { NO_ACCESS_MODE } from '../config.js';\n\nconst messages = defineMessages({\n clear_messages: {\n id: 'action_clear_messages',\n defaultMessage: 'Clear Messages',\n description: 'Flat button [Clear Messages] (soft-delete messages)'\n },\n clear_messages_warning: {\n id: 'clear_messages_warning',\n defaultMessage: 'Are you sure you want to clear all messages? It cannot be undone.',\n description: 'Alert dialog warning when deleting all messages.'\n },\n delete_messages: {\n id: 'action_delete_messages',\n defaultMessage: 'Clear Messages for All',\n description: 'Flat button [Clear for All] (hard-delete all messages)'\n },\n delete_messages_warning: {\n id: 'delete_messages_warning',\n defaultMessage: 'Are you sure you want to delete all messages for everyone? It cannot be undone.',\n description: 'Alert dialog warning when hard-deleting all messages.'\n },\n topic_delete: {\n id: 'topic_delete',\n defaultMessage: 'Delete Conversation',\n description: 'Alert title when deleting the topic.'\n },\n topic_delete_warning: {\n id: 'topic_delete_warning',\n defaultMessage: 'Are you sure you want to delete this conversation? It cannot be undone.',\n description: 'Alert warning when deleting entire topic'\n },\n leave_chat: {\n id: 'action_leave_chat',\n defaultMessage: 'Leave Conversation',\n description: 'Flat button [Leave Conversation]'\n },\n leave_chat_warning: {\n id: 'leave_chat_warning',\n defaultMessage: 'Are you sure you want to leave this conversation?',\n description: 'Alert dialog warning when unsubscribing from a chat.'\n },\n block_contact: {\n id: 'action_block_contact',\n defaultMessage: \"Block Contact\",\n description: \"Flat button [Block Contact]\"\n },\n block_contact_warning: {\n id: 'block_contact_warning',\n defaultMessage: 'Are you sure you want to block this contact?',\n description: 'Alert dialog warning when blocking a contact.'\n },\n report_chat: {\n id: 'action_report_chat',\n defaultMessage: 'Report Conversation',\n description: 'Flat button [Report Group]'\n },\n report_chat_warning: {\n id: 'report_chat_warning',\n defaultMessage: 'Are you sure you want to block and report this conversation?',\n description: 'Alert dialog warning when reporting a conversation for abuse'\n },\n other_user: {\n id: 'label_other_user',\n defaultMessage: 'Other',\n description: 'Label for the other user when the user is unnamed'\n },\n});\n\nclass TopicSecurity extends React.Component {\n constructor(props) {\n super(props);\n\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n\n const defacs = topic.getDefaultAccess() || {};\n const acs = topic.getAccessMode();\n\n let modeGiven2 = NO_ACCESS_MODE;\n let modeWant2 = NO_ACCESS_MODE;\n if (topic.getType() == 'p2p') {\n // Fetch the other party in the p2p conversation.\n // Topic may not be ready yet, so check if user is found.\n const user2 = topic.subscriber(props.topic);\n if (user2 && user2.acs) {\n modeGiven2 = user2.acs.getGiven();\n modeWant2 = user2.acs.getWant();\n }\n }\n\n this.state = {\n owner: acs && acs.isOwner(),\n admin: acs && acs.isAdmin(),\n sharer: acs && acs.isSharer(),\n deleter: acs && acs.isDeleter(),\n muted: acs && acs.isMuted(),\n\n groupTopic: topic.isGroupType(),\n channel: topic.isChannelType(),\n access: acs ? acs.getMode() : undefined,\n modeGiven: acs ? acs.getGiven() : undefined,\n modeWant: acs ? acs.getWant() : undefined,\n modeGiven2: modeGiven2, // P2P topic, the other user mode given\n modeWant2: modeWant2, // P2P topic, the other user mode want\n auth: defacs ? defacs.auth : null,\n anon: defacs ? defacs.anon : null,\n };\n\n this.handleDeleteTopic = this.handleDeleteTopic.bind(this);\n this.handleDeleteMessages = this.handleDeleteMessages.bind(this);\n this.handleLeave = this.handleLeave.bind(this);\n this.handleBlock = this.handleBlock.bind(this);\n this.handleReport = this.handleReport.bind(this);\n }\n\n handleDeleteTopic(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(messages.topic_delete), // title\n formatMessage(messages.topic_delete_warning), // content\n (() => { this.props.onDeleteTopic(this.props.topic); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n\n handleDeleteMessages(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(this.state.deleter ? messages.delete_messages : messages.clear_messages), // title\n formatMessage(this.state.deleter ? messages.delete_messages_warning : messages.clear_messages_warning), // content\n (() => { this.props.onDeleteMessages(this.props.topic); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n\n handleLeave(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(messages.leave_chat), // title\n formatMessage(messages.leave_chat_warning), // content\n (() => { this.props.onLeaveTopic(this.props.topic); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n\n handleBlock(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(messages.block_contact), // title\n formatMessage(messages.block_contact_warning), // content\n (() => { this.props.onBlockTopic(this.props.topic); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n\n handleReport(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(messages.report_chat), // title\n formatMessage(messages.report_chat_warning), // content\n (() => { this.props.onReportTopic(this.props.topic); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
    \n \n
    \n
    \n {this.state.groupTopic ?\n <>\n
    \n {e.preventDefault(); this.props.onLaunchPermissionsEditor('want')}}>\n {this.state.access}\n \n
    \n
    \n
    \n \n
    \n
    \n
    Auth: {e.preventDefault(); this.props.onLaunchPermissionsEditor('auth')}}>{this.state.auth}\n
    \n
    Anon: {e.preventDefault(); this.props.onLaunchPermissionsEditor('anon')}}>{this.state.anon}\n
    \n
    \n
    \n \n :\n
    \n
    \n \n
    \n
    \n
    \n {e.preventDefault(); this.props.onLaunchPermissionsEditor('want')}}>\n {this.state.access}\n \n
    \n
    {this.state.fullName ? this.state.fullName : formatMessage(messages.other_user)}:\n   {e.preventDefault(); this.props.onLaunchPermissionsEditor('given')}}>\n {this.state.modeGiven2}\n \n
    \n
    \n
    \n }\n
    \n
    \n );\n }\n};\n\nexport default injectIntl(TopicSecurity);\n","// InfoView: panel with topic/user info.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport Tinode from 'tinode-sdk';\n\nimport AvatarUpload from '../widgets/avatar-upload.jsx';\nimport BadgeList from '../widgets/badge-list.jsx';\nimport CheckBox from '../widgets/checkbox.jsx';\nimport ContactList from '../widgets/contact-list.jsx';\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport GroupManager from '../widgets/group-manager.jsx';\nimport MenuCancel from '../widgets/menu-cancel.jsx';\nimport PermissionsEditor from '../widgets/permissions-editor.jsx';\nimport TopicCommon from '../widgets/topic-common.jsx';\nimport TopicSecurity from '../widgets/topic-security.jsx';\n\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH, NO_ACCESS_MODE } from '../config.js';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { arrayEqual, theCard } from '../lib/utils.js';\n\nconst messages = defineMessages({\n info: {\n id: 'panel_title_info',\n description: 'Title for InfoView',\n defaultMessage: 'Info'\n },\n general: {\n id: 'panel_title_general',\n description: 'Title for TopicCommon.',\n defaultMessage: 'General'\n },\n security: {\n id: 'panel_title_security',\n description: 'Title for TopicSecirity and AccSecurity.',\n defaultMessage: 'Security'\n },\n members: {\n id: 'panel_title_members',\n description: 'Title for managing group members view.',\n defaultMessage: 'Members'\n },\n crop: {\n id: 'panel_title_crop',\n description: 'Title for AvatarCropView.',\n defaultMessage: 'Drag to Adjust'\n },\n perm_want: {\n id: 'requested_permissions',\n defaultMessage: 'Requested',\n description: 'Title for permissions'\n },\n perm_given: {\n id: 'granted_permissions',\n defaultMessage: 'Granted',\n description: 'Title for permissions'\n },\n perm_auth: {\n id: 'permissions_authenticated',\n defaultMessage: 'Authenticated',\n description: 'Title for editing default authenticated permissions'\n },\n perm_anon: {\n id: 'permissions_anonymous',\n defaultMessage: 'Anonymous',\n description: 'Title for editing default anonymous permissions'\n },\n perm_user: {\n id: 'permissions_user',\n defaultMessage: 'User\\'s Permissions',\n description: 'Title for editing user\\'s permissions'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n});\n\nfunction _clip(str, length) {\n return str && str.substring(0, length);\n}\n\nclass InfoView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n topic: null,\n owner: false,\n admin: false,\n sharer: false,\n muted: false,\n address: null,\n groupTopic: undefined,\n channel: undefined,\n fullName: undefined,\n description: undefined,\n avatar: null,\n private: null,\n selectedContact: null,\n access: null,\n modeGiven: null,\n modeWant: null,\n modeGiven2: null, // P2P topic, the other user mode given\n modeWant2: null, // P2P topic, the other user mode want\n auth: null,\n anon: null,\n contactList: [],\n trustedBadges: [],\n previousMetaDesc: undefined,\n previousSubsUpdated: undefined,\n };\n\n this.resetSubs = this.resetSubs.bind(this);\n this.resetDesc = this.resetDesc.bind(this);\n this.onMetaDesc = this.onMetaDesc.bind(this);\n this.onSubsUpdated = this.onSubsUpdated.bind(this);\n this.handleImageChanged = this.handleImageChanged.bind(this);\n this.handleMuted = this.handleMuted.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleShowAddMembers = this.handleShowAddMembers.bind(this);\n this.handleMemberUpdateRequest = this.handleMemberUpdateRequest.bind(this);\n this.handleMemberSelected = this.handleMemberSelected.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handleBackNavigate = this.handleBackNavigate.bind(this);\n }\n\n // No need to separately handle component mount.\n componentDidUpdate(props) {\n const topic = this.props.tinode.getTopic(props.topic);\n if (!topic) {\n return;\n }\n\n if (this.onMetaDesc != topic.onMetaDesc) {\n this.previousMetaDesc = topic.onMetaDesc;\n topic.onMetaDesc = this.onMetaDesc;\n\n this.previousSubsUpdated = topic.onSubsUpdated;\n topic.onSubsUpdated = this.onSubsUpdated;\n }\n\n if (this.state.topic != props.topic) {\n this.setState({topic: props.topic});\n this.resetDesc(topic, props);\n this.resetSubs(topic, props);\n }\n }\n\n componentWillUnmount() {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.setState({topic: null});\n topic.onMetaDesc = this.previousMetaDesc;\n topic.onSubsUpdated = this.previousSubsUpdated;\n }\n\n resetSubs(topic, props) {\n const newState = {contactList: []};\n if (topic.getType() == 'p2p') {\n // Fetch the other party in the p2p conversation.\n // Topic may not be ready yet, so check if user is found.\n const user2 = topic.subscriber(props.topic);\n if (user2) {\n newState.modeGiven2 = user2.acs.getGiven();\n newState.modeWant2 = user2.acs.getWant();\n } else {\n newState.modeGiven2 = NO_ACCESS_MODE;\n newState.modeWant2 = NO_ACCESS_MODE;\n }\n } else {\n topic.subscribers((sub) => {\n newState.contactList.push(sub);\n }, this);\n }\n\n this.setState(newState);\n }\n\n resetDesc(topic, props) {\n const defacs = topic.getDefaultAccess() || {};\n const acs = topic.getAccessMode();\n\n const badges = [];\n if (topic.trusted) {\n for (const [key, val] of Object.entries(topic.trusted)) {\n if (val) {\n badges.push(key);\n }\n }\n }\n\n this.setState({\n owner: acs && acs.isOwner(),\n admin: acs && acs.isAdmin(),\n sharer: acs && acs.isSharer(),\n muted: acs && acs.isMuted(),\n\n fullName: _clip(topic.public ? topic.public.fn : undefined, MAX_TITLE_LENGTH),\n description: _clip(topic.public ? topic.public.note : undefined, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(topic.public ? topic.public.photo : null),\n trustedBadges: badges,\n private: _clip(topic.private ? topic.private.comment : null, MAX_TITLE_LENGTH),\n address: topic.name,\n groupTopic: topic.isGroupType(),\n channel: topic.isChannelType() || topic.chan,\n access: acs ? acs.getMode() : undefined,\n modeGiven: acs ? acs.getGiven() : undefined,\n modeWant: acs ? acs.getWant() : undefined,\n auth: defacs.auth,\n anon: defacs.anon\n });\n\n if (topic.getType() == 'grp' && acs && acs.isOwner()) {\n // Requesting tags: owner is editing the topic.\n topic.getMeta(topic.startMetaQuery().withTags().build());\n }\n }\n\n onMetaDesc(desc) {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.resetDesc(topic, this.props);\n\n if (this.previousMetaDesc && this.previousMetaDesc != this.onMetaDesc) {\n this.previousMetaDesc(desc);\n }\n }\n\n onSubsUpdated(subs) {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n this.resetSubs(topic, this.props);\n\n if (this.previousSubsUpdated && this.previousSubsUpdated != this.onSubsUpdated) {\n this.previousSubsUpdated(subs);\n }\n }\n\n handleImageChanged(img) {\n this.setState({avatar: img});\n this.props.onTopicDescUpdate(this.props.topic, theCard(null, img || Tinode.DEL_CHAR), null);\n }\n\n handleMuted(ignored, checked) {\n this.setState({muted: checked});\n this.props.onChangePermissions(this.props.topic, checked ? '-P' : '+P');\n }\n\n handlePermissionsChanged(which, perm) {\n console.log(\"handlePermissionsChanged\", which, perm);\n switch (which) {\n case 'auth':\n this.props.onTopicDescUpdate(this.props.topic, null, null, {auth: perm});\n break;\n case 'anon':\n this.props.onTopicDescUpdate(this.props.topic, null, null, {anon: perm});\n break;\n case 'mode':\n case 'want':\n this.props.onChangePermissions(this.props.topic, perm);\n break;\n case 'given':\n this.props.onChangePermissions(this.props.topic, perm, this.props.topic);\n break;\n case 'user':\n this.props.onChangePermissions(this.props.topic, perm, this.state.userPermissionsEdited);\n break;\n }\n }\n\n handleLaunchPermissionsEditor(which, uid) {\n console.log(which, uid);\n const {formatMessage} = this.props.intl;\n let toEdit, toCompare, toSkip, titleEdit, titleCompare, userTitle, userAvatar;\n switch (which) {\n case 'mode':\n toEdit = this.state.access;\n break;\n case 'want':\n toEdit = this.state.modeWant;\n toCompare = this.state.modeGiven;\n if (this.state.owner) {\n // Don't allow owner to unset 'O' permission. All other permissions are OK.\n toSkip = 'O';\n } else {\n // Allow accepting any of 'ASDO' permissions but don't allow asking for them.\n toSkip = Tinode.AccessMode.encode(Tinode.AccessMode.diff('ASDO', this.state.modeGiven));\n if (this.state.channel) {\n // Channels are read-only.\n toSkip += 'W';\n }\n }\n titleEdit = formatMessage(messages.perm_want);\n titleCompare = formatMessage(messages.perm_given);\n break;\n case 'given':\n toEdit = this.state.modeGiven2;\n toCompare = this.state.modeWant2;\n toSkip = this.state.groupTopic ? (this.state.owner ? '' : 'O') : 'ASDO';\n titleEdit = formatMessage(messages.perm_given);\n titleCompare = formatMessage(messages.perm_want);\n break;\n case 'auth':\n toEdit = this.state.auth;\n toSkip = 'O';\n break;\n case 'anon':\n toEdit = this.state.anon;\n toSkip = 'O';\n break;\n case 'user': {\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n const user = topic.subscriber(uid);\n if (!user || !user.acs) {\n return;\n }\n toEdit = user.acs.getGiven();\n toCompare = user.acs.getWant();\n toSkip = this.state.owner ? '' : 'O';\n titleEdit = formatMessage(messages.perm_given);\n titleCompare = formatMessage(messages.perm_want);\n if (user.public) {\n userTitle = user.public.fn;\n userAvatar = user.public.photo;\n }\n break;\n }\n default:\n console.log(\"Unknown permission editing mode '\" + which + \"'\");\n return;\n }\n this.setState({\n userPermissionsEdited: uid,\n userPermissionsTitle: userTitle,\n userPermissionsAvatar: userAvatar,\n editedPermissions: toEdit,\n immutablePermissions: toCompare,\n editedPermissionsTitle: titleEdit,\n immutablePermissionsTitle: titleCompare,\n editedPermissionsSkipped: toSkip,\n });\n this.props.onNavigate(`perm/${which}`);\n }\n\n handleShowAddMembers(e) {\n e.preventDefault();\n this.props.onInitFind();\n this.props.onNavigate('members');\n }\n\n handleMemberUpdateRequest(members, added, removed) {\n this.props.onMemberUpdateRequest(this.props.topic, added, removed);\n this.props.onNavigate('info');\n }\n\n handleMemberSelected(uid) {\n this.setState({selectedContact: uid});\n }\n\n handleBackNavigate() {\n const args = (this.props.panel || 'info').split('/');\n if (args[0] == 'info') {\n this.props.onNavigate(null);\n } else if (args[0] == 'perm') {\n if (args[1] == 'user') {\n this.props.onNavigate('info');\n } else {\n this.props.onNavigate('security');\n }\n } else {\n this.props.onNavigate('info');\n }\n }\n\n handleContextMenu(params) {\n const {formatMessage} = this.props.intl;\n const topic = this.props.tinode.getTopic(this.props.topic);\n if (!topic) {\n return;\n }\n const user = topic.subscriber(params.topicName);\n if (!user || !user.acs) {\n return;\n }\n\n const menuItems = [\n {title: formatMessage(messages.edit_permissions), handler: () => {\n this.handleLaunchPermissionsEditor('user', params.topicName);\n }},\n 'member_delete',\n user.acs.isMuted() ? 'member_unmute' : 'member_mute',\n user.acs.isJoiner() ? 'member_block' : 'member_unblock'\n ];\n this.props.showContextMenu({\n topicName: this.props.topic,\n x: params.x,\n y: params.y,\n user: params.topicName}, menuItems);\n }\n\n render() {\n const args = (this.props.panel || 'info').split('/');\n console.log(\"args:\", args);\n const view = args[0];\n args.shift();\n\n const {formatMessage} = this.props.intl;\n const panelTitle = formatMessage((view == 'perm' ? messages['perm_' + args[0]] : messages[view])\n || messages['info']);\n\n return (\n
    \n
    \n
    {panelTitle}
    \n
    \n \n
    \n
    \n {this.props.displayMobile ?\n : null}\n {view == 'members' ?\n \n :\n view == 'perm' && args.length > 0 ?\n this.handlePermissionsChanged(args[0], mode)}\n onCancel={this.handleBackNavigate} />\n :\n view == 'general' ?\n \n :\n view == 'security' ?\n \n :\n
    \n
    \n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n
    \n \n
    \n
    \n
    \n
    {this.state.fullName}\n {this.state.channel ? \"channel\" : null}
    \n
    \n {this.state.private ?\n
    \n
    \n
    {this.state.private}
    \n
    \n : null\n }\n
    \n  \n {this.state.address}\n
    \n
    \n \n
    \n {this.state.description ?\n
    \n \n
    {this.state.description}
    \n
    : null}\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n {this.state.groupTopic && this.state.sharer ?\n <>\n
    \n
    \n
    \n \n
    \n \n {\n (no_members) => \n }\n
    \n \n :\n null\n }\n
    \n }\n
    \n );\n }\n};\n\nexport default injectIntl(InfoView);\n","// File uload/download progress indicator with a cancel inside.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class FileProgress extends React.PureComponent {\n render() {\n return (\n
    \n
    \n {this.props.progress < 0.999 ?\n {e.preventDefault(); this.props.onCancel();}}>\n close \n \n :\n \n }\n
    \n );\n }\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport FileProgress from './file-progress.jsx';\nimport { bytesToHumanSize } from '../lib/strformat.js';\nimport { isUrlRelative, sanitizeUrl } from '../lib/utils.js';\n\nexport default class Attachment extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n downloader: null,\n progress: 0\n };\n\n this.downloadFile = this.downloadFile.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n downloadFile(url, filename, mimetype) {\n if (!url) {\n this.props.onError(\"Invalid download URL '\" + url + \"'\");\n return;\n }\n\n const downloader = this.props.tinode.getLargeFileHelper();\n this.setState({downloader: downloader});\n downloader.download(url, filename, mimetype,\n (loaded) => {\n this.setState({progress: loaded / this.props.size});\n },\n (err) => {\n this.props.onError(err, 'err');\n }\n ).then(() => {\n this.setState({downloader: null, progress: 0});\n }).catch((err) => {\n if (err) {\n this.props.onError(\"Error downloading file: \" + err.message, 'err');\n }\n this.setState({downloader: null, progress: 0});\n });\n }\n\n handleCancel() {\n if (this.props.uploading) {\n this.props.onCancelUpload();\n } else if (this.state.downloader) {\n this.state.downloader.cancel();\n }\n }\n\n render() {\n let filename = this.props.filename || 'file_attachment';\n if (filename.length > 36) {\n filename = filename.substr(0, 16) + '...' + filename.substr(-16);\n }\n let size = this.props.size > 0 ?\n ({bytesToHumanSize(this.props.size)}) :\n null;\n\n // Detect if the download URL is relative or absolute.\n // If the URL is relative use LargeFileHelper to attach authentication\n // credentials to the request.\n let url, helperFunc;\n if (!this.props.uploading && !this.state.downloader && isUrlRelative(this.props.downloadUrl)) {\n // Relative URL. Use download helper.\n url = '#';\n helperFunc = (e) => {\n e.preventDefault();\n this.downloadFile(this.props.downloadUrl, this.props.filename, this.props.mimetype);\n };\n } else {\n url = sanitizeUrl(this.props.downloadUrl);\n helperFunc = null;\n }\n const downloadWidget = <>file_download ;\n return (\n
    \n
    insert_drive_file
    \n
    \n
    {filename} {size}
    \n {this.props.uploading || this.state.downloader ?\n \n :\n
    {url ?\n {downloadWidget}\n :\n {downloadWidget}\n }
    \n }\n
    \n
    \n );\n }\n};\n","// Image view with progress bar and a cancel button.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport FileProgress from './file-progress.jsx';\n\nexport default class UploadingImage extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
    \n {React.createElement('img', this.props)}\n
    \n \n
    \n
    \n );\n }\n};\n","// Single message, sent or received.\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport { Drafty } from 'tinode-sdk';\n\nimport Attachment from './attachment.jsx';\nimport LetterTile from './letter-tile.jsx';\nimport ReceivedMarker from './received-marker.jsx'\nimport UploadingImage from './uploading-image.jsx'\nimport { sanitizeImageUrl, sanitizeUrl } from '../lib/utils.js';\n\nclass ChatMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n progress: 0\n };\n\n if (props.uploader) {\n props.uploader.onProgress = this.handleProgress.bind(this);\n }\n\n this.handleImagePreview = this.handleImagePreview.bind(this);\n this.handleFormButtonClick = this.handleFormButtonClick.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n this.handleCancelUpload = this.handleCancelUpload.bind(this);\n\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n }\n\n handleImagePreview(e) {\n e.preventDefault();\n this.props.onImagePreview({\n url: e.target.src,\n filename: e.target.title,\n width: e.target.dataset.width,\n height: e.target.dataset.height,\n size: e.target.dataset.size,\n type: e.target.dataset.mime\n });\n }\n\n handleFormButtonClick(e) {\n e.preventDefault();\n const data = {\n seq: this.props.seq\n };\n data.resp = {};\n if (e.target.dataset.name) {\n data.resp[e.target.dataset.name] = e.target.dataset.val ? e.target.dataset.val :\n e.target.dataset.val === undefined ? 1 : '' + e.target.dataset.val;\n }\n if (e.target.dataset.act == 'url') {\n data.ref = sanitizeUrl(e.target.dataset.ref) || 'about:blank';\n }\n const text = e.target.dataset.title || 'unknown';\n this.props.onFormResponse(e.target.dataset.act, text, data);\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n const menuItems = this.props.received == Tinode.MESSAGE_STATUS_FAILED ? ['menu_item_send_retry'] : [];\n if (this.props.received >= Tinode.MESSAGE_STATUS_FAILED &&\n this.props.received < Tinode.MESSAGE_STATUS_DEL_RANGE) {\n menuItems.push('menu_item_reply');\n }\n this.props.showContextMenu({ seq: this.props.seq, content: this.props.content,\n y: e.pageY, x: e.pageX, pickReply: this.props.pickReply }, menuItems);\n }\n\n handleProgress(ratio) {\n this.setState({progress: ratio});\n }\n\n handleCancelUpload() {\n this.props.onCancelUpload(this.props.seq, this.props.uploader);\n }\n\n handleQuoteClick(e) {\n e.preventDefault();\n e.stopPropagation();\n const replyToSeq = this.props.replyToSeq;\n this.props.onQuoteClick(replyToSeq);\n }\n\n render() {\n const sideClass = this.props.deleted ? 'center' :\n (this.props.sequence + ' ' + (this.props.response ? 'left' : 'right'));\n const bubbleClass = (this.props.sequence == 'single' || this.props.sequence == 'last') ? 'bubble tip' : 'bubble';\n const avatar = this.props.deleted ? null : (this.props.userAvatar || true);\n const fullDisplay = (this.props.userFrom && this.props.response && !this.props.deleted &&\n (this.props.sequence == 'single' || this.props.sequence == 'last'));\n\n const msgId = 'msg-' + this.props.seq;\n let content = this.props.content;\n const attachments = [];\n if (this.props.mimeType == Drafty.getContentType() && Drafty.isValid(content)) {\n Drafty.attachments(content, function(att, i) {\n if (att.mime == 'application/json') {\n // Don't show json objects as attachments.\n // They are not meant for users.\n return;\n }\n attachments.push();\n }, this);\n\n let qte = [];\n if (content.qte) {\n qte = Drafty.format(content.qte, this.props.onFormatQuote, this);\n // Append a line break.\n const lf = Drafty.appendLineBreak(null);\n qte = qte.concat(Drafty.format(lf, draftyFormatter, this, qte.length));\n }\n let tree = Drafty.format(content, draftyFormatter, this, qte.length);\n tree = qte.concat(tree);\n content = React.createElement(React.Fragment, null, tree);\n } else if (this.props.deleted) {\n // Message represents a range of deleted messages.\n content = <>block \n \n \n } else if (typeof content != 'string') {\n content = <>\n error_outline \n \n \n }\n\n return (\n
  • \n {this.props.userFrom && this.props.response ?\n
    \n {fullDisplay ?\n :\n null}\n
    :\n null}\n
    \n
    \n
    \n
    \n {content}\n {attachments}\n
    \n {this.props.timestamp ?\n \n : null}\n
    \n {this.props.deleted || !this.props.showContextMenu ?\n null :\n \n \n expand_more\n \n \n }\n
    \n {fullDisplay ?\n
    \n {\n (notFound) => {return this.props.userName || {notFound}}\n }\n
    \n : null\n }\n
    \n
  • \n );\n }\n};\n\n// Convert Drafty object to a tree of React elements.\nimport { BROKEN_IMAGE_SIZE, REM_SIZE } from '../config.js';\nimport { fitImageSize } from '../lib/blob-helpers.js';\n\n// Converts Drafty elements into React classes.\n// 'this' is set by the caller.\nfunction draftyFormatter(style, data, values, key) {\n if (style == 'EX') {\n // attachments are handled elsewhere.\n return null;\n }\n\n let el = Drafty.tagName(style);\n if (el) {\n const attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch (style) {\n case 'HL':\n // Highlighted text. Assign class name.\n attr.className = 'highlight';\n break;\n case 'IM':\n // Additional processing for images\n if (data) {\n attr.className = 'inline-image';\n const dim = fitImageSize(data.width, data.height,\n Math.min(this.props.viewportWidth - REM_SIZE * 6.5, REM_SIZE * 34.5), REM_SIZE * 24, false) ||\n {dstWidth: BROKEN_IMAGE_SIZE, dstHeight: BROKEN_IMAGE_SIZE};\n attr.style = {\n width: dim.dstWidth + 'px',\n height: dim.dstHeight + 'px',\n // Looks like a Chrome bug: broken image does not respect 'width' and 'height'.\n minWidth: dim.dstWidth + 'px',\n minHeight: dim.dstHeight + 'px'\n };\n if (!Drafty.isProcessing(data)) {\n attr.src = this.props.tinode.authorizeURL(sanitizeImageUrl(attr.src));\n attr.alt = data.name;\n if (attr.src) {\n attr.onClick = this.handleImagePreview;\n attr.className += ' image-clickable';\n attr.loading = 'lazy';\n } else {\n attr.src = 'img/broken_image.png';\n }\n } else {\n // Use custom element instead of .\n el = UploadingImage;\n }\n }\n break;\n case 'BN':\n // Button\n attr.onClick = this.handleFormButtonClick;\n let inner = React.Children.map(values, (child) => {\n return typeof child == 'string' ? child : undefined;\n });\n if (!inner || inner.length == 0) {\n inner = [attr.name]\n }\n // Get text which will be sent back when the button is clicked.\n attr['data-title'] = inner.join('');\n break;\n case 'FM':\n // Form\n attr.className = 'bot-form';\n break;\n case 'RW':\n // Form element formatting is dependent on element content.\n break;\n case 'QQ':\n // Quote/citation.\n attr.className = 'reply-quote'\n attr.onClick = this.handleQuoteClick;\n break;\n case 'QH':\n // Quote header.\n attr.className = 'reply-quote-header';\n break;\n case 'QB':\n // Quote body.\n break;\n default:\n if (el == '_UNKN') {\n // Unknown element.\n // TODO: make it prettier.\n el = <>extension;\n }\n break;\n }\n return React.createElement(el, attr, values);\n } else {\n return values;\n }\n};\n\nexport default injectIntl(ChatMessage);\n","// Send message form.\nimport React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { Drafty } from 'tinode-sdk';\n\nimport { KEYPRESS_DELAY } from '../config.js';\nimport { filePasted } from '../lib/blob-helpers.js';\n\nconst messages = defineMessages({\n messaging_disabled: {\n id: 'messaging_disabled_prompt',\n defaultMessage: 'Messaging disabled',\n description: 'Prompt in SendMessage in read-only topic'\n },\n type_new_message: {\n id: 'new_message_prompt',\n defaultMessage: 'New message',\n description: 'Prompt in send message field'\n },\n add_image_caption: {\n id: 'image_caption_prompt',\n defaultMessage: 'Image caption',\n description: 'Prompt in SendMessage for attached image'\n },\n file_attachment_too_large: {\n id: 'file_attachment_too_large',\n defaultMessage: 'The file size {size} exceeds the {limit} limit.',\n description: 'Error message when attachment is too large'\n },\n cannot_initiate_upload: {\n id: 'cannot_initiate_file_upload',\n defaultMessage: 'Cannot initiate file upload.',\n description: 'Generic error messagewhen attachment fails'\n },\n});\n\nclass SendMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n message: '',\n // Make initial keypress time as if it happened 5001 milliseconds in the past.\n keypressTimestamp: new Date().getTime() - KEYPRESS_DELAY - 1\n };\n\n this.handlePasteEvent = this.handlePasteEvent.bind(this);\n this.handleAttachImage = this.handleAttachImage.bind(this);\n this.handleAttachFile = this.handleAttachFile.bind(this);\n this.handleSend = this.handleSend.bind(this);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.handleMessageTyping = this.handleMessageTyping.bind(this);\n\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n }\n\n componentDidMount() {\n if (this.messageEditArea) {\n this.messageEditArea.addEventListener('paste', this.handlePasteEvent, false);\n }\n }\n\n componentWillUnmount() {\n if (this.messageEditArea) {\n this.messageEditArea.removeEventListener('paste', this.handlePasteEvent, false);\n }\n }\n\n componentDidUpdate() {\n if (this.messageEditArea) {\n this.messageEditArea.focus();\n }\n }\n\n handlePasteEvent(e) {\n if (this.props.disabled) {\n return;\n }\n // FIXME: handle large files too.\n if (filePasted(e,\n (bits, mime, width, height, fname) => {\n this.props.onAttachImage(mime, bits, width, height, fname);\n },\n (mime, bits, fname) => {\n this.props.onAttachFile(mime, bits, fname);\n },\n this.props.onError)) {\n\n // If a file was pasted, don't paste base64 data into input field.\n e.preventDefault();\n }\n }\n\n handleAttachImage(e) {\n if (e.target.files && e.target.files.length > 0) {\n this.props.onAttachImage(e.target.files[0]);\n }\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n handleAttachFile(e) {\n const {formatMessage} = this.props.intl;\n if (e.target.files && e.target.files.length > 0) {\n this.props.onAttachFile(e.target.files[0]);\n }\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n handleSend(e) {\n e.preventDefault();\n const message = this.state.message.trim();\n if (message || this.props.acceptBlank || this.props.noInput) {\n this.props.onSendMessage(message);\n this.setState({message: ''});\n }\n }\n\n /* Send on Enter key */\n handleKeyPress(e) {\n // Remove this if you don't want Enter to trigger send\n if (e.key === 'Enter') {\n // Have Shift-Enter insert a line break instead\n if (!e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n\n this.handleSend(e);\n }\n }\n }\n\n handleMessageTyping(e) {\n const newState = {message: e.target.value};\n if (this.props.onKeyPress) {\n const now = new Date().getTime();\n if (now - this.state.keypressTimestamp > KEYPRESS_DELAY) {\n this.props.onKeyPress();\n newState.keypressTimestamp = now;\n }\n }\n this.setState(newState);\n }\n\n handleQuoteClick(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.props.replyTo) {\n //quote = Drafty.format(this.props.replyTo.content, quoteFormatter, this);\n //quote = Drafty.format(this.props.replyTo.content, this.props.onFormatQuote, this);\n const replyToSeq = this.props.replyTo.seq;\n this.props.onQuoteClick(replyToSeq);\n }\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n const prompt = this.props.disabled ?\n formatMessage(messages.messaging_disabled) :\n (this.props.messagePrompt ?\n formatMessage(messages[this.props.messagePrompt]) :\n formatMessage(messages.type_new_message));\n\n let quote = null;\n if (this.props.replyTo) {\n quote = Drafty.format(this.props.replyTo.content, this.props.onFormatQuote, this);\n }\n\n return (\n
    \n {quote ?\n \n :\n null}\n\n
    \n {!this.props.disabled ?\n <>\n {this.props.onAttachFile ?\n <>\n {e.preventDefault(); this.attachImage.click();}} title=\"Add image\">\n photo\n \n {e.preventDefault(); this.attachFile.click();}} title=\"Attach file\">\n attach_file\n \n \n :\n null}\n {this.props.noInput ?\n
    :\n