diff --git a/umd/399.prod.js b/umd/399.prod.js index 9f3654f5..f988e865 100644 --- a/umd/399.prod.js +++ b/umd/399.prod.js @@ -1 +1 @@ -"use strict";(self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[]).push([[399],{3399:function(e){e.exports=JSON.parse('{"action_block_contact":"Block Contact","action_cancel":"cancel","action_clear_messages":"Clear Messages","action_delete_messages":"Clear Messages for All","action_leave_chat":"Leave Conversation","action_report_chat":"Report Conversation","archived_contacts":"Archived contacts ({count})","badge_danger":"Untrustworthy","badge_owner":"owner","badge_staff":"Staff-managed","badge_verified":"Verified/official","badge_you":"you","block_contact_warning":"Are you sure you want to block this contact?","blocked_contacts_link":"Blocked contacts ({count})","button_add_members":"Add members","button_cancel":"Cancel","button_confirm":"Confirm","button_create":"Create","button_delete_account":"Delete account","button_edit":"Edit","button_logout":"Logout","button_ok":"OK","button_reset":"Reset","button_send_request":"Send request","button_sign_in":"Sign in","button_sign_up":"Sign up","button_subscribe":"Subscribe","button_update":"Update","cannot_initiate_file_upload":"Cannot initiate file upload.","channel":"channel","channel_prompt":"This is a channel","chat_invitation":"You are invited to start a new chat. What would you like to do?","chat_invitation_accept":"Accept","chat_invitation_block":"Block","chat_invitation_ignore":"Ignore","clear_messages_warning":"Are you sure you want to clear all messages? It cannot be undone.","code_doesnot_match":"Code does not match","contacts_not_found":"You have no chats
¯∖_(ツ)_/¯","contacts_not_found_short":"No contacts match \'\'{query}\'\'","credential_email_prompt":"Your registration email","delete_account":"Delete account","delete_account_warning":"Are you sure you want to delete your account? It cannot be undone.","delete_messages_warning":"Are you sure you want to delete all messages for everyone? It cannot be undone.","download_action":"download","drafty_attachment":"Attachment","drafty_form":"Form:","drafty_image":"Picture","email_dative":"email","email_prompt":"Email, e.g. jdoe@example.com","enable_peers_messaging":"Enable","enter_confirmation_code_prompt":"Confirmation code","error_invalid_id":"Invalid ID","file_attachment_too_large":"The file size {size} exceeds the {limit} limit.","forgot_password_link":"Forgot password?","full_name_prompt":"Full name, e.g. John Doe","granted_permissions":"Granted","group_has_no_members":"No members","group_user_id_prompt":"Group or User ID","image_caption_prompt":"Image caption","invalid_content":"invalid content","invalid_security_token":"Invalid security token","label_client":"Client:","label_content_type":"Content type:","label_default_access_mode":"Default access mode:","label_file_name":"File name:","label_group_members":"Group members:","label_incognito_mode":"Incognito mode:","label_message_sound":"Message sound:","label_muting_topic":"Muted:","label_other_user":"Other","label_password":"Password","label_permissions":"Permissions:","label_private":"Private comment","label_push_notifications":"Notification alerts:","label_push_notifications_disabled":"Notification alerts (requires HTTPS):","label_reset_password":"Send a password reset email:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server address:","label_server_to_use":"Server to use:","label_size":"Size:","label_topic_name":"Name","label_user_contacts":"Contacts","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"You:","label_your_name":"Your name","label_your_permissions":"Your permissions:","last_seen_timestamp":"Last seen","leave_chat_warning":"Are you sure you want to leave this conversation?","link_contact_us":"Contact Us","link_privacy_policy":"Privacy Policy","link_terms_of_service":"Terms of Service","login_prompt":"Login","menu_item_archive_topic":"Archive","menu_item_block":"Block","menu_item_clear_messages":"Clear messages","menu_item_clear_messages_for_all":"Clear for All","menu_item_delete":"Delete","menu_item_delete_for_all":"Delete for All","menu_item_delete_topic":"Delete","menu_item_edit_permissions":"Edit permissions","menu_item_info":"Info","menu_item_member_delete":"Remove","menu_item_mute":"Mute","menu_item_reply":"Reply","menu_item_restore_topic":"Restore","menu_item_send_retry":"Retry","menu_item_unblock":"Unblock","menu_item_unmute":"Unmute","message_sending":"sending...","message_sending_failed":"failed","messages_not_readable":"no access to messages","messaging_disabled_prompt":"Messaging disabled","more_online_members":"+{overflow} more","new_message_prompt":"New message","new_password_placeholder":"Enter new password","no_connection":"No connection","no_contacts":"You have no contacts :-(","numeric_confirmation_code_prompt":"Numbers only","online_now":"online now","password_prompt":"Password","password_unchanged_prompt":"Unchanged","peers_messaging_disabled":"Peer\'s messaging is disabled.","permission_admin":"Approve ({val})","permission_delete":"Delete ({val})","permission_join":"Join ({val})","permission_owner":"Owner ({val})","permission_pres":"Get notified ({val})","permission_read":"Read ({val})","permission_share":"Share ({val})","permission_write":"Write ({val})","phone_dative":"phone","private_editing_placeholder":"Visible to you only","push_init_failed":"Failed to initialize push notifications","reconnect_countdown":"Disconnected. Reconnecting in {seconds}…","reconnect_now":"Try now","reload_update":"Reload","report_chat_warning":"Are you sure you want to block and report this conversation?","requested_permissions":"Requested","save_attachment":"save","search_for_contacts":"Use search to find contacts","search_no_results":"Search returned no results","search_placeholder":"List like email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notifications","sidepanel_title_acc_support":"Support","sidepanel_title_account_settings":"Account Settings","sidepanel_title_archive":"Archived Chats","sidepanel_title_blocked":"Blocked Chats","sidepanel_title_cred":"Confirm Credentials","sidepanel_title_login":"Sign In","sidepanel_title_newtpk":"Start New Chat","sidepanel_title_register":"Create Account","sidepanel_title_reset":"Reset Password","sidepanel_title_settings":"Settings","stay_logged_in":"Stay logged in","tabtitle_find_user":"find","tabtitle_group_by_id":"by id","tabtitle_new_group":"new group","tags_editor_no_tags":"Add some tags","tags_not_found":"No tags defined. Add some.","title_all_contacts":"All Contacts","title_group_members":"Group Members","title_manage_tags":"Manage","title_not_found":"Not found","title_permissions":"Permissions","title_tag_manager":"Tags (search & discovery)","topic_block_warning":"Are you sure you want to block this conversation?","topic_delete_warning":"Are you sure you want to delete this conversation?","topic_name_editing_placeholder":"Freeform name of the group","unnamed_topic":"Unnamed","update_available":"Update available.","upload_finishing":"finishing...","user_not_found":"Not found","description_editing_placeholder":"Optional description","label_description":"Description","button_security":"Security","panel_title_crop":"Drag to Adjust","panel_title_general":"General","panel_title_members":"Members","panel_title_security":"Security","panel_title_info":"Info","permissions_anonymous":"Anonymous","permissions_authenticated":"Authenticated","topic_delete":"Delete Conversation","permissions_user":"User\'s Permissions","password_reset_email_sent":"An email with security code has been sent.","label_unarchive_topic":"Archived:","menu_item_forward":"Forward","forward_to":"Forward to","forward_to_search_placeholder":"Search contacts","label_new_password":"New password","drafty_unknown":"Unsupported","calls_incoming":"Incoming call","calls_outgoing":"Outgoing call","calls_you_label":"You","menu_item_video_call":"Video call","already_in_call":"You already in an ongoing call!","call_cancelled":"cancelled","call_missed":"missed","call_declined":"declined","call_disconnected":"disconnected","label_use_secure_connection":"Use secure connection","cred_confirmed_successfully":"Confirmed successfully","menu_item_edit":"Edit","editing_message":"Editing","message_edited_marker":", edited","icon_title_add_image":"Add image","icon_title_attach_file":"Attach file","icon_title_delete":"Delete","icon_title_pause":"Pause","icon_title_play":"Play","icon_title_record_voice":"Record voice message","icon_title_resume":"Resume","icon_title_send":"Send message","drag_file":"Drag file here","drafty_video":"Video recording","call_in_progress":"in progress","menu_item_audio_call":"Call","unrecognized_video_format":"Format of this video is not recognized","loading_note":"Loading...","password_i_have_code":"I have code","label_reset_password_tel":"Send a password reset SMS:","mobile_phone_number":"Mobile phone number","password_reset_sms_sent":"A text message with security code has been sent.","mobile_number_required":"Mobile phone number required","current_email":"Current email","current_phone":"Current phone number","new_email":"New email","new_phone_number":"New phone number","change_email":"Change email","change_phone":"Change phone number","call_busy":"busy","failed_to_init_audio":"Failed to initialize audio recording","pin_message":"Pin","unpin_message":"Unpin","password_reset_success":"Password reset successfully","scan_qr_code":"Scan QR Code","self_topic_comment":"Notes, messages, links, files saved for posterity","self_topic_name":"Saved messages","message_not_found":"message not found","message_deleted":"message deleted","alias_editing_placeholder":"Alias (optional)","label_alias":"Alias:","alias_already_taken":"(already taken)","alias_invalid":"(invalid)","label_alias_edit":"Alias","select_country":"Select country","text_copied":"Copied to clipboard","color_schema_dark":"Dark","color_schema_light":"Light","color_schema_system":"System default","label_color_schema":"Theme:","label_text_size":"Text size:","incognito_mode_description":"Hide your online status and typing indicators.","send_command":"Send on {key}","send_command_explained":"Press Enter for new line","send_plain":"Send on Enter","send_plain_explained":"Press Shift + Enter for new line","sidepanel_title_acc_general":"General","label_keyboard":"Keyboard:","pin_chat":"Pin","unpin_chat":"Unpin","subscriber_count":"{count, plural, one {{count, number} subscriber} other {{count, number} subscribers}}","label_member_count":"Members:","label_subscriber_count":"Subscribers:","member_count":"{count, plural, one {{count, number} member} other {{count, number} members}}"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[]).push([[399],{3399:function(e){e.exports=JSON.parse('{"action_block_contact":"Block Contact","action_cancel":"cancel","action_clear_messages":"Clear Messages","action_delete_messages":"Clear Messages for All","action_leave_chat":"Leave Conversation","action_report_chat":"Report Conversation","archived_contacts":"Archived contacts ({count})","badge_danger":"Untrustworthy","badge_owner":"owner","badge_staff":"Staff-managed","badge_verified":"Verified/official","badge_you":"you","block_contact_warning":"Are you sure you want to block this contact?","blocked_contacts_link":"Blocked contacts ({count})","button_add_members":"Add members","button_cancel":"Cancel","button_confirm":"Confirm","button_create":"Create","button_delete_account":"Delete account","button_edit":"Edit","button_logout":"Logout","button_ok":"OK","button_reset":"Reset","button_send_request":"Send request","button_sign_in":"Sign in","button_sign_up":"Sign up","button_subscribe":"Subscribe","button_update":"Update","cannot_initiate_file_upload":"Cannot initiate file upload.","channel":"channel","channel_prompt":"This is a channel","chat_invitation":"You are invited to start a new chat. What would you like to do?","chat_invitation_accept":"Accept","chat_invitation_block":"Block","chat_invitation_ignore":"Ignore","clear_messages_warning":"Are you sure you want to clear all messages? It cannot be undone.","code_doesnot_match":"Code does not match","contacts_not_found":"You have no chats
¯∖_(ツ)_/¯","contacts_not_found_short":"No contacts match \'\'{query}\'\'","credential_email_prompt":"Your registration email","delete_account":"Delete account","delete_account_warning":"Are you sure you want to delete your account? It cannot be undone.","delete_messages_warning":"Are you sure you want to delete all messages for everyone? It cannot be undone.","download_action":"download","drafty_attachment":"Attachment","drafty_form":"Form:","drafty_image":"Picture","email_dative":"email","email_prompt":"Email, e.g. jdoe@example.com","enable_peers_messaging":"Enable","enter_confirmation_code_prompt":"Confirmation code","error_invalid_id":"Invalid ID","file_attachment_too_large":"The file size {size} exceeds the {limit} limit.","forgot_password_link":"Forgot password?","full_name_prompt":"Full name, e.g. John Doe","granted_permissions":"Granted","group_has_no_members":"No members","group_user_id_prompt":"Group or User ID","image_caption_prompt":"Image caption","invalid_content":"invalid content","invalid_security_token":"Invalid security token","label_client":"Client:","label_content_type":"Content type:","label_default_access_mode":"Default access mode:","label_file_name":"File name:","label_group_members":"Group members:","label_incognito_mode":"Incognito mode:","label_message_sound":"Message sound:","label_muting_topic":"Muted:","label_other_user":"Other","label_password":"Password","label_permissions":"Permissions:","label_private":"Private comment","label_push_notifications":"Notification alerts:","label_push_notifications_disabled":"Notification alerts (requires HTTPS):","label_reset_password":"Send a password reset email:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server address:","label_server_to_use":"Server to use:","label_size":"Size:","label_topic_name":"Name","label_user_contacts":"Contacts","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"You:","label_your_name":"Your name","label_your_permissions":"Your permissions:","last_seen_timestamp":"Last seen","leave_chat_warning":"Are you sure you want to leave this conversation?","link_contact_us":"Contact Us","link_privacy_policy":"Privacy Policy","link_terms_of_service":"Terms of Service","login_prompt":"Login","menu_item_archive_topic":"Archive","menu_item_block":"Block","menu_item_clear_messages":"Clear messages","menu_item_clear_messages_for_all":"Clear for All","menu_item_delete":"Delete","menu_item_delete_for_all":"Delete for All","menu_item_delete_topic":"Delete","menu_item_edit_permissions":"Edit permissions","menu_item_info":"Info","menu_item_member_delete":"Remove","menu_item_mute":"Mute","menu_item_reply":"Reply","menu_item_restore_topic":"Restore","menu_item_send_retry":"Retry","menu_item_unblock":"Unblock","menu_item_unmute":"Unmute","message_sending":"sending...","message_sending_failed":"failed","messages_not_readable":"no access to messages","messaging_disabled_prompt":"Messaging disabled","more_online_members":"+{overflow} more","new_message_prompt":"New message","new_password_placeholder":"Enter new password","no_connection":"No connection","no_contacts":"You have no contacts :-(","numeric_confirmation_code_prompt":"Numbers only","online_now":"online now","password_prompt":"Password","password_unchanged_prompt":"Unchanged","peers_messaging_disabled":"Peer\'s messaging is disabled.","permission_admin":"Approve ({val})","permission_delete":"Delete ({val})","permission_join":"Join ({val})","permission_owner":"Owner ({val})","permission_pres":"Get notified ({val})","permission_read":"Read ({val})","permission_share":"Share ({val})","permission_write":"Write ({val})","phone_dative":"phone","private_editing_placeholder":"Visible to you only","push_init_failed":"Failed to initialize push notifications","reconnect_countdown":"Disconnected. Reconnecting in {seconds}…","reconnect_now":"Try now","reload_update":"Reload","report_chat_warning":"Are you sure you want to block and report this conversation?","requested_permissions":"Requested","save_attachment":"save","search_for_contacts":"Use search to find contacts","search_no_results":"Search returned no results","search_placeholder":"List like email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notifications","sidepanel_title_acc_support":"Support","sidepanel_title_account_settings":"Account Settings","sidepanel_title_archive":"Archived Chats","sidepanel_title_blocked":"Blocked Chats","sidepanel_title_cred":"Confirm Credentials","sidepanel_title_login":"Sign In","sidepanel_title_newtpk":"Start New Chat","sidepanel_title_register":"Create Account","sidepanel_title_reset":"Reset Password","sidepanel_title_settings":"Settings","stay_logged_in":"Stay logged in","tabtitle_find_user":"find","tabtitle_group_by_id":"by id","tabtitle_new_group":"new group","tags_editor_no_tags":"Add some tags","tags_not_found":"No tags defined. Add some.","title_all_contacts":"All Contacts","title_group_members":"Group Members","title_manage_tags":"Manage","title_not_found":"Not found","title_permissions":"Permissions","title_tag_manager":"Tags (search & discovery)","topic_block_warning":"Are you sure you want to block this conversation?","topic_delete_warning":"Are you sure you want to delete this conversation?","topic_name_editing_placeholder":"Freeform name of the group","unnamed_topic":"Unnamed","update_available":"Update available.","upload_finishing":"finishing...","user_not_found":"Not found","description_editing_placeholder":"Optional description","label_description":"Description","button_security":"Security","panel_title_crop":"Drag to Adjust","panel_title_general":"General","panel_title_members":"Members","panel_title_security":"Security","panel_title_info":"Info","permissions_anonymous":"Anonymous","permissions_authenticated":"Authenticated","topic_delete":"Delete Conversation","permissions_user":"User\'s Permissions","password_reset_email_sent":"An email with security code has been sent.","label_unarchive_topic":"Archived:","menu_item_forward":"Forward","forward_to":"Forward to","forward_to_search_placeholder":"Search contacts","label_new_password":"New password","drafty_unknown":"Unsupported","calls_incoming":"Incoming call","calls_outgoing":"Outgoing call","calls_you_label":"You","menu_item_video_call":"Video call","already_in_call":"You already in an ongoing call!","call_cancelled":"cancelled","call_missed":"missed","call_declined":"declined","call_disconnected":"disconnected","label_use_secure_connection":"Use secure connection","cred_confirmed_successfully":"Confirmed successfully","menu_item_edit":"Edit","editing_message":"Editing","message_edited_marker":", edited","icon_title_add_image":"Add image","icon_title_attach_file":"Attach file","icon_title_delete":"Delete","icon_title_pause":"Pause","icon_title_play":"Play","icon_title_record_voice":"Record voice message","icon_title_resume":"Resume","icon_title_send":"Send message","drag_file":"Drag file here","drafty_video":"Video recording","call_in_progress":"in progress","menu_item_audio_call":"Call","unrecognized_video_format":"Format of this video is not recognized","loading_note":"Loading...","password_i_have_code":"I have code","label_reset_password_tel":"Send a password reset SMS:","mobile_phone_number":"Mobile phone number","password_reset_sms_sent":"A text message with security code has been sent.","mobile_number_required":"Mobile phone number required","current_email":"Current email","current_phone":"Current phone number","new_email":"New email","new_phone_number":"New phone number","change_email":"Change email","change_phone":"Change phone number","call_busy":"busy","failed_to_init_audio":"Failed to initialize audio recording","pin_message":"Pin","unpin_message":"Unpin","password_reset_success":"Password reset successfully","scan_qr_code":"Scan QR Code","self_topic_comment":"Notes, messages, links, files saved for posterity","self_topic_name":"Saved messages","message_not_found":"message not found","message_deleted":"message deleted","alias_editing_placeholder":"Alias (optional)","label_alias":"Alias:","alias_already_taken":"(already taken)","alias_invalid":"(invalid)","label_alias_edit":"Alias","select_country":"Select country","text_copied":"Copied to clipboard","color_schema_dark":"Dark","color_schema_light":"Light","color_schema_system":"System default","label_color_schema":"Theme:","label_text_size":"Text size:","incognito_mode_description":"Hide your online status and typing indicators.","send_command":"Send on {key}","send_command_explained":"Press Enter for new line","send_plain":"Send on Enter","send_plain_explained":"Press Shift + Enter for new line","sidepanel_title_acc_general":"General","label_keyboard":"Keyboard:","pin_chat":"Pin","unpin_chat":"Unpin","subscriber_count":"{count, plural, one {{count, number} subscriber} other {{count, number} subscribers}}","label_member_count":"Members:","label_subscriber_count":"Subscribers:","member_count":"{count, plural, one {{count, number} member} other {{count, number} members}}","tabtitle_image":"image","tabtitle_pattern":"pattern","button_restore":"Restore default","wallpapers":"Wallpapers","label_blur_wallpaper":"Blur:"}')}}]); \ No newline at end of file diff --git a/umd/747.prod.js b/umd/747.prod.js index 9aa05b0f..b61c042b 100644 --- a/umd/747.prod.js +++ b/umd/747.prod.js @@ -1,2 +1,2 @@ -"use strict";(self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[]).push([[747],{6235:function(e,t,s){var a=s(1594),i=s.n(a),n=s(8181),l=s(1166),r=s(6005),o=s(6110);const c=(0,n.defineMessages)({joiner:{id:"permission_join",defaultMessage:[{type:0,value:"Join ("},{type:1,value:"val"},{type:0,value:")"}]},reader:{id:"permission_read",defaultMessage:[{type:0,value:"Read ("},{type:1,value:"val"},{type:0,value:")"}]},writer:{id:"permission_write",defaultMessage:[{type:0,value:"Write ("},{type:1,value:"val"},{type:0,value:")"}]},preser:{id:"permission_pres",defaultMessage:[{type:0,value:"Get notified ("},{type:1,value:"val"},{type:0,value:")"}]},approver:{id:"permission_admin",defaultMessage:[{type:0,value:"Approve ("},{type:1,value:"val"},{type:0,value:")"}]},sharer:{id:"permission_share",defaultMessage:[{type:0,value:"Share ("},{type:1,value:"val"},{type:0,value:")"}]},deleter:{id:"permission_delete",defaultMessage:[{type:0,value:"Delete ("},{type:1,value:"val"},{type:0,value:")"}]},owner:{id:"permission_owner",defaultMessage:[{type:0,value:"Owner ("},{type:1,value:"val"},{type:0,value:")"}]}});class p extends i().Component{constructor(e){super(e),this.state={mode:(e.mode||"").replace("N","")},this.handleChange=this.handleChange.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleCancel=this.handleCancel.bind(this)}handleChange(e){let t=this.state.mode;-1==t.indexOf(e)?t+=e:t=t.replace(e,""),this.setState({mode:t})}handleSubmit(){const e=(this.state.mode||"N").split("").sort().join("");e!==(this.props.mode||"N").split("").sort().join("")?this.props.onSubmit(e):this.props.onCancel()}handleCancel(){this.props.onCancel()}render(){const{formatMessage:e}=this.props.intl,t="JRWPASDO",s={J:e(c.joiner,{val:"J"}),R:e(c.reader,{val:"R"}),W:e(c.writer,{val:"W"}),P:e(c.preser,{val:"P"}),A:e(c.approver,{val:"A"}),S:e(c.sharer,{val:"S"}),D:e(c.deleter,{val:"D"}),O:e(c.owner,{val:"O"})};let a=this.props.skip||"",p=this.state.mode,d=(this.props.compare||"").replace("N",""),h=[];for(let e=0;e<8;e++){let n=t.charAt(e);a.indexOf(n)>=0&&p.indexOf(n)<0||h.push(i().createElement("tr",{key:n},i().createElement("td",null,s[n]),i().createElement("td",{className:"checkbox"},a.indexOf(n)<0?i().createElement(l.A,{name:n,checked:p.indexOf(n)>=0,onChange:this.handleChange}):i().createElement(l.A,{name:n,checked:p.indexOf(n)>=0})),this.props.compare?i().createElement("td",{className:"checkbox"},i().createElement(l.A,{name:n,checked:d.indexOf(n)>=0})):null))}return i().createElement("div",{className:"panel-form-column"},this.props.userTitle?i().createElement("ul",{className:"contact-box small"},i().createElement(r.A,{tinode:this.props.tinode,item:this.props.item,title:this.props.userTitle,small:!0,avatar:(0,o.to)(this.props.userAvatar?this.props.userAvatar:null)})):null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"title_permissions",defaultMessage:[{type:0,value:"Permissions"}]})),i().createElement("table",{className:"permission-editor"},this.props.compare?i().createElement("thead",null,i().createElement("tr",null,i().createElement("th",null),i().createElement("th",null,this.props.modeTitle),i().createElement("th",null,this.props.compareTitle))):null,i().createElement("tbody",null,h)),i().createElement("br",null),i().createElement("div",{className:"dialog-buttons"},i().createElement("button",{className:"outline",onClick:this.handleCancel},i().createElement(n.FormattedMessage,{id:"button_cancel",defaultMessage:[{type:0,value:"Cancel"}]})),i().createElement("button",{className:"primary",onClick:this.handleSubmit},i().createElement(n.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]}))))}}t.A=(0,n.injectIntl)(p)},7747:function(e,t,s){s.r(t),s.d(t,{default:function(){return P}});var a=s(1594),i=s.n(a),n=s(8181),l=s(4532),r=s(9418),o=s(635),c=s(1166),p=s(4152),d=s(1334),h=s(5874);const m=(0,n.defineMessages)({no_contacts:{id:"no_contacts",defaultMessage:[{type:0,value:"You have no contacts :-("}]},contacts_not_found_short:{id:"contacts_not_found_short",defaultMessage:[{type:0,value:"No contacts match '"},{type:1,value:"query"},{type:0,value:"'"}]}});class u extends i().Component{constructor(e){super(e),this.state={members:e.members,index:u.indexMembers(e.members),staticMembers:u.staticMembers(e.members,e.keepInitialMembers,e.requiredMember),contactFilter:"",noContactsMessage:e.intl.formatMessage(m.no_contacts),selectedContacts:u.selectedContacts(e.members)},this.handleContactSelected=this.handleContactSelected.bind(this),this.handleMemberRemoved=this.handleMemberRemoved.bind(this),this.handleContactFilter=this.handleContactFilter.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleCancel=this.handleCancel.bind(this)}static indexMembers(e){let t={};return e.forEach(e=>{t[e.user]={delta:0,present:!0}}),t}static staticMembers(e,t,s){let a=[];return e.forEach(e=>{(t||e.user==s)&&a.push(e.user)}),a}static selectedContacts(e){let t=[];return e.forEach(e=>{t.push(e.user)}),t}handleContactSelected(e,t){let s=this.state.index[e];if(s){if(s.present)return;s.delta+=1,s.present=!0}else s={delta:1,present:!0};let a=this.state.members.slice();a.push(this.props.contacts[t]);const i=u.selectedContacts(a),n=this.state.index;n[e]=s,this.setState({members:a,index:n,selectedContacts:i})}handleMemberRemoved(e,t){const s=this.state.index[e];if(!s||!s.present)return;s.present=!1,s.delta-=1;let a=this.state.members.slice();a.splice(t,1);const i=u.selectedContacts(a),n=this.state.index;n[e]=s,this.setState({members:a,index:n,selectedContacts:i})}handleContactFilter(e){const{formatMessage:t}=this.props.intl,s=e?t(m.contacts_not_found_short,{query:e}):t(m.no_contacts);this.setState({contactFilter:e,noContactsMessage:s})}static doContactFiltering(e,t){if(e){for(let s=0;s=0)return!0;return!1}return!0}handleSubmit(){const e=[],t=[],s=[];Object.keys(this.state.index).forEach(a=>{this.state.index[a].present&&e.push(a),this.state.index[a].delta>0?t.push(a):this.state.index[a].delta<0&&s.push(a)}),this.props.onSubmit(e,t,s)}handleCancel(){this.props.onCancel()}render(){return i().createElement("div",{id:"group-manager"},i().createElement("div",{className:"panel-form-row"},i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"title_group_members",defaultMessage:[{type:0,value:"Group Members"}]}))),i().createElement("div",{className:"panel-form-row"},i().createElement(h.A,{tinode:this.props.tinode,chips:this.state.members,staticMembers:this.state.staticMembers,prompt:"add members",filterFunc:this.handleContactFilter,onChipRemoved:this.handleMemberRemoved})),i().createElement("div",{className:"panel-form-row"},i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"title_all_contacts",defaultMessage:[{type:0,value:"All Contacts"}]}))),i().createElement(p.A,{tinode:this.props.tinode,contacts:this.props.contacts,myUserId:this.props.myUserId,topicSelected:this.state.selectedContacts,filter:this.state.contactFilter,filterFunc:u.doContactFiltering,emptyListMessage:this.state.noContactsMessage,showOnline:!1,showUnread:!1,onTopicSelected:this.handleContactSelected}),i().createElement("div",{id:"group-manager-buttons",className:"panel-form-row"},i().createElement("button",{className:"secondary",onClick:this.handleCancel},i().createElement(n.FormattedMessage,{id:"button_cancel",defaultMessage:[{type:0,value:"Cancel"}]})),i().createElement("button",{className:"primary",onClick:this.handleSubmit},i().createElement(n.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]}))))}}var v=(0,n.injectIntl)(u),g=s(3913),b=s(6235),f=s(9593),_=s.n(f),E=s(9027);class M extends i().PureComponent{constructor(e){super(e),this.qrCodeRef=i().createRef()}componentDidMount(){new(_())(this.qrCodeRef.current,{text:this.props.uri,width:E.Tn,height:E.Tn})}render(){return i().createElement("div",{className:"panel-form-column"},i().createElement("br",null),i().createElement("div",{className:"qr-code",ref:this.qrCodeRef}),i().createElement("div",{className:"dialog-buttons"},i().createElement("button",{className:"outline",onClick:this.props.onCancel},i().createElement(n.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]}))))}}var y=s(8089);const C=(0,n.defineMessages)({clear_messages:{id:"action_clear_messages",defaultMessage:[{type:0,value:"Clear Messages"}]},clear_messages_warning:{id:"clear_messages_warning",defaultMessage:[{type:0,value:"Are you sure you want to clear all messages? It cannot be undone."}]},delete_messages:{id:"action_delete_messages",defaultMessage:[{type:0,value:"Clear Messages for All"}]},delete_messages_warning:{id:"delete_messages_warning",defaultMessage:[{type:0,value:"Are you sure you want to delete all messages for everyone? It cannot be undone."}]},topic_delete:{id:"topic_delete",defaultMessage:[{type:0,value:"Delete Conversation"}]},topic_delete_warning:{id:"topic_delete_warning",defaultMessage:[{type:0,value:"Are you sure you want to delete this conversation? It cannot be undone."}]},leave_chat:{id:"action_leave_chat",defaultMessage:[{type:0,value:"Leave Conversation"}]},leave_chat_warning:{id:"leave_chat_warning",defaultMessage:[{type:0,value:"Are you sure you want to leave this conversation?"}]},block_contact:{id:"action_block_contact",defaultMessage:[{type:0,value:"Block Contact"}]},block_contact_warning:{id:"block_contact_warning",defaultMessage:[{type:0,value:"Are you sure you want to block this contact?"}]},report_chat:{id:"action_report_chat",defaultMessage:[{type:0,value:"Report Conversation"}]},report_chat_warning:{id:"report_chat_warning",defaultMessage:[{type:0,value:"Are you sure you want to block and report this conversation?"}]},other_user:{id:"label_other_user",defaultMessage:[{type:0,value:"Other"}]}});class N extends i().PureComponent{constructor(e){super(e),this.handleDeleteTopic=this.handleDeleteTopic.bind(this),this.handleDeleteMessages=this.handleDeleteMessages.bind(this),this.handleLeave=this.handleLeave.bind(this),this.handleBlock=this.handleBlock.bind(this),this.handleReport=this.handleReport.bind(this)}handleDeleteTopic(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(C.topic_delete),t(C.topic_delete_warning),e=>this.props.onDeleteTopic(this.props.topic),null,!0,null)}handleDeleteMessages(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(this.props.deleter?C.delete_messages:C.clear_messages),t(this.props.deleter?C.delete_messages_warning:C.clear_messages_warning),e=>this.props.onDeleteMessages(this.props.topic),null,!0,null)}handleLeave(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(C.leave_chat),t(C.leave_chat_warning),e=>this.props.onLeaveTopic(this.props.topic),null,!0,null)}handleBlock(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(C.block_contact),t(C.block_contact_warning),e=>this.props.onBlockTopic(this.props.topic),null,!0,null)}handleReport(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(C.report_chat),t(C.report_chat_warning),e=>{this.props.onReportTopic(this.props.topic)},null,!0,null)}render(){const{formatMessage:e}=this.props.intl;return i().createElement("div",{className:"scrollable-panel"},i().createElement("div",{className:"panel-form-column"},this.props.channel?null:i().createElement("a",{href:"#",className:"flat-button",onClick:this.handleDeleteMessages},i().createElement("i",{className:"material-icons"},"delete_outline"),"  ",e(this.props.deleter?C.delete_messages:C.clear_messages)),this.props.owner?i().createElement("a",{href:"#",className:"danger flat-button",onClick:this.handleDeleteTopic},i().createElement("i",{className:"material-icons"},"delete"),"  ",e(C.topic_delete)):i().createElement("a",{href:"#",className:"danger flat-button",onClick:this.handleLeave},i().createElement("i",{className:"material-icons"},"exit_to_app"),"  ",e(C.leave_chat)),this.props.groupTopic?null:i().createElement("a",{href:"#",className:"danger flat-button",onClick:this.handleBlock},i().createElement("i",{className:"material-icons"},"block"),"  ",e(C.block_contact)),this.props.owner?null:i().createElement("a",{href:"#",className:"danger flat-button",onClick:this.handleReport},i().createElement("i",{className:"material-icons"},"report"),"  ",e(C.report_chat))),i().createElement("div",{className:"hr"}),i().createElement("div",{className:"panel-form-column"},this.props.groupTopic?i().createElement(i().Fragment,null,i().createElement("div",{className:"group"},i().createElement("label",null,i().createElement(n.FormattedMessage,{id:"label_your_permissions",defaultMessage:[{type:0,value:"Your permissions:"}]}))," ",i().createElement("tt",{className:"clickable",onClick:e=>{e.preventDefault(),this.props.onLaunchPermissionsEditor("want")}},this.props.access)),this.props.channel?null:i().createElement("div",{className:"group"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_default_access_mode",defaultMessage:[{type:0,value:"Default access mode:"}]}))),i().createElement("div",{className:"quoted"},i().createElement("div",null,"Auth: ",i().createElement("tt",{className:this.props.owner?"clickable":null,onClick:e=>{e.preventDefault(),this.props.owner&&this.props.onLaunchPermissionsEditor("auth")}},this.props.auth)),i().createElement("div",null,"Anon: ",i().createElement("tt",{className:this.props.owner?"clickable":null,onClick:e=>{e.preventDefault(),this.props.owner&&this.props.onLaunchPermissionsEditor("anon")}},this.props.anon))))):i().createElement("div",{className:"group"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_permissions",defaultMessage:[{type:0,value:"Permissions:"}]}))),i().createElement("div",{className:"quoted"},i().createElement("div",null,i().createElement(n.FormattedMessage,{id:"label_you",defaultMessage:[{type:0,value:"You:"}]})," ",i().createElement("tt",{className:"clickable",onClick:e=>{e.preventDefault(),this.props.onLaunchPermissionsEditor("want")}},this.props.access)),i().createElement("div",null,this.props.fullName?this.props.fullName:e(C.other_user),":  ",i().createElement("tt",{className:"clickable",onClick:e=>{e.preventDefault(),this.props.onLaunchPermissionsEditor("given")}},this.props.modeGiven2))))))}}var w=(0,n.injectIntl)(N),S=s(6110),k=s(3540),T=s(8589);const D=(0,n.defineMessages)({info:{id:"panel_title_info",defaultMessage:[{type:0,value:"Info"}]},general:{id:"panel_title_general",defaultMessage:[{type:0,value:"General"}]},security:{id:"panel_title_security",defaultMessage:[{type:0,value:"Security"}]},members:{id:"panel_title_members",defaultMessage:[{type:0,value:"Members"}]},crop:{id:"panel_title_crop",defaultMessage:[{type:0,value:"Drag to Adjust"}]},perm_want:{id:"requested_permissions",defaultMessage:[{type:0,value:"Requested"}]},perm_given:{id:"granted_permissions",defaultMessage:[{type:0,value:"Granted"}]},perm_auth:{id:"permissions_authenticated",defaultMessage:[{type:0,value:"Authenticated"}]},perm_anon:{id:"permissions_anonymous",defaultMessage:[{type:0,value:"Anonymous"}]},perm_user:{id:"permissions_user",defaultMessage:[{type:0,value:"User's Permissions"}]},edit_permissions:{id:"menu_item_edit_permissions",defaultMessage:[{type:0,value:"Edit permissions"}]},qrcode:{id:"scan_qr_code",defaultMessage:[{type:0,value:"Scan QR Code"}]},text_copied:{id:"text_copied",defaultMessage:[{type:0,value:"Copied to clipboard"}]},self_topic_name:{id:"self_topic_name",defaultMessage:[{type:0,value:"Saved messages"}]},self_topic_comment:{id:"self_topic_comment",defaultMessage:[{type:0,value:"Notes, messages, links, files saved for posterity"}]}});class A extends i().Component{constructor(e){super(e),this.state={topic:null,owner:!1,admin:!1,sharer:!1,deleter:!1,muted:!1,address:null,groupTopic:void 0,isSelf:!1,channel:void 0,fullName:void 0,description:void 0,avatar:null,private:null,selectedContact:null,access:null,modeGiven:null,modeWant:null,modeGiven2:null,modeWant2:null,auth:null,anon:null,contactList:[],trustedBadges:[],previousMetaDesc:void 0,previousSubsUpdated:void 0},this.propsUpdated=this.propsUpdated.bind(this),this.resetSubs=this.resetSubs.bind(this),this.resetDesc=this.resetDesc.bind(this),this.resetTags=this.resetTags.bind(this),this.onMetaDesc=this.onMetaDesc.bind(this),this.onSubsUpdated=this.onSubsUpdated.bind(this),this.handleImageChanged=this.handleImageChanged.bind(this),this.handleMuted=this.handleMuted.bind(this),this.handleUnarchive=this.handleUnarchive.bind(this),this.handlePermissionsChanged=this.handlePermissionsChanged.bind(this),this.handleLaunchPermissionsEditor=this.handleLaunchPermissionsEditor.bind(this),this.handleShowQRCode=this.handleShowQRCode.bind(this),this.handleCopyToClipboard=this.handleCopyToClipboard.bind(this),this.handleShowAddMembers=this.handleShowAddMembers.bind(this),this.handleMemberUpdateRequest=this.handleMemberUpdateRequest.bind(this),this.handleMemberSelected=this.handleMemberSelected.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleBackNavigate=this.handleBackNavigate.bind(this)}propsUpdated(e){const t=this.props.tinode.getTopic(e.topic);t&&(this.onMetaDesc!=t.onMetaDesc&&(this.previousMetaDesc=t.onMetaDesc,t.onMetaDesc=this.onMetaDesc,this.previousSubsUpdated=t.onSubsUpdated,t.onSubsUpdated=this.onSubsUpdated),this.state.topic!=e.topic&&(this.setState({topic:e.topic}),this.resetDesc(t,e),this.resetSubs(t,e),this.resetTags(t)))}componentDidMount(){this.propsUpdated(this.props)}componentDidUpdate(e){this.propsUpdated(e)}componentWillUnmount(){const e=this.props.tinode.getTopic(this.props.topic);e&&(this.setState({topic:null}),e.onMetaDesc=this.previousMetaDesc,e.onSubsUpdated=this.previousSubsUpdated)}resetSubs(e,t){const s={contactList:[]};if("p2p"==e.getType()){const a=e.subscriber(t.topic);a?(s.modeGiven2=a.acs.getGiven(),s.modeWant2=a.acs.getWant()):(s.modeGiven2=E.D3,s.modeWant2=E.D3)}else e.subscribers(e=>{s.contactList.push(e)},this);this.setState(s)}resetDesc(e,t){const s=e.getDefaultAccess()||{},a=e.getAccessMode(),i=[];if(e.trusted)for(const[t,s]of Object.entries(e.trusted))s&&i.push(t);const n=e.isSelfType();this.setState({owner:a&&a.isOwner(),admin:a&&a.isAdmin(),sharer:a&&a.isSharer(),deleter:a&&a.isDeleter(),muted:a&&a.isMuted(),fullName:n?t.intl.formatMessage(D.self_topic_name):(0,T.W5)(e.public&&e.public.fn,E.tS),description:n?t.intl.formatMessage(D.self_topic_comment):(0,T.W5)(e.public&&e.public.note,E.lQ),avatar:(0,S.to)(e.public?e.public.photo:null),trustedBadges:i,private:(0,T.W5)(e.private&&e.private.comment,E.tS),archived:e.isArchived(),address:e.name,groupTopic:e.isGroupType(),isSelf:n,channel:e.isChannelType()||e.chan,access:a?a.getMode():void 0,modeGiven:a?a.getGiven():void 0,modeWant:a?a.getWant():void 0,auth:s.auth,anon:s.anon})}resetTags(e){if("grp"!=e.getType())return;const t=e.getAccessMode();t&&t.isOwner()&&e.getMeta(e.startMetaQuery().withTags().build())}onMetaDesc(e){const t=this.props.tinode.getTopic(this.props.topic);t&&(this.resetDesc(t,this.props),this.previousMetaDesc&&this.previousMetaDesc!=this.onMetaDesc&&this.previousMetaDesc(e))}onSubsUpdated(e){const t=this.props.tinode.getTopic(this.props.topic);t&&(this.resetSubs(t,this.props),this.previousSubsUpdated&&this.previousSubsUpdated!=this.onSubsUpdated&&this.previousSubsUpdated(e))}handleImageChanged(e,t){this.setState({avatar:t}),this.props.onTopicDescUpdate(this.props.topic,(0,k.k6)(null,t||l.Tinode.DEL_CHAR),null)}handleMuted(e,t){this.setState({muted:t}),this.props.onChangePermissions(this.props.topic,t?"-P":"+P")}handleUnarchive(e,t){this.props.onTopicUnArchive(this.props.topic)}handlePermissionsChanged(e,t){switch(e){case"auth":this.props.onTopicDescUpdateRequest(this.props.topic,null,null,{auth:t});break;case"anon":this.props.onTopicDescUpdateRequest(this.props.topic,null,null,{anon:t});break;case"mode":case"want":this.props.onChangePermissions(this.props.topic,t);break;case"given":this.props.onChangePermissions(this.props.topic,t,this.props.topic);break;case"user":this.props.onChangePermissions(this.props.topic,t,this.state.userPermissionsEdited)}this.handleBackNavigate()}handleLaunchPermissionsEditor(e,t){const{formatMessage:s}=this.props.intl;let a,i,n,r,o,c,p;switch(e){case"mode":a=this.state.access;break;case"want":a=this.state.modeWant,i=this.state.modeGiven,this.state.owner?n="O":(n=l.AccessMode.encode(l.AccessMode.diff("ASDO",this.state.modeGiven)),this.state.channel&&(n+="W")),r=s(D.perm_want),o=s(D.perm_given);break;case"given":a=this.state.modeGiven2,i=this.state.modeWant2,n=this.state.groupTopic?this.state.owner?"":"O":"ASDO",r=s(D.perm_given),o=s(D.perm_want);break;case"auth":a=this.state.auth,n="O";break;case"anon":a=this.state.anon,n="O";break;case"user":{const e=this.props.tinode.getTopic(this.props.topic);if(!e)return;const l=e.subscriber(t);if(!l||!l.acs)return;a=l.acs.getGiven(),i=l.acs.getWant(),n=this.state.owner?"":"O",r=s(D.perm_given),o=s(D.perm_want),l.public&&(c=l.public.fn,p=l.public.photo);break}default:return void console.error("Unknown permission editing mode '"+e+"'")}this.setState({userPermissionsEdited:t,userPermissionsTitle:c,userPermissionsAvatar:p,editedPermissions:a,immutablePermissions:i,editedPermissionsTitle:r,immutablePermissionsTitle:o,editedPermissionsSkipped:n}),this.props.onNavigate(`perm/${e}`)}handleShowQRCode(e){e.preventDefault(),this.props.onNavigate("qrcode")}handleCopyToClipboard(e,t){e.preventDefault(),navigator.clipboard.writeText(t).then(e=>{this.setState({toast:this.props.intl.formatMessage(D.text_copied)}),setTimeout(e=>{this.setState({toast:""})},E.bn)})}handleShowAddMembers(e){e.preventDefault(),this.props.onInitFind(),this.props.onNavigate("members")}handleMemberUpdateRequest(e,t,s){this.props.onMemberUpdateRequest(this.props.topic,t,s),this.props.onNavigate("info")}handleMemberSelected(e){this.setState({selectedContact:e})}handleBackNavigate(){const e=(this.props.panel||"info").split("/");"info"==e[0]?this.props.onNavigate(null):"perm"==e[0]?"user"==e[1]?this.props.onNavigate("info"):this.props.onNavigate("security"):this.props.onNavigate("info")}handleContextMenu(e){const{formatMessage:t}=this.props.intl,s=this.props.tinode.getTopic(this.props.topic);if(!s)return;const a=s.subscriber(e.topicName);if(!a||!a.acs)return;const i=this.props.tinode.isMe(e.topicName),n=[{title:t(D.edit_permissions),handler:t=>this.handleLaunchPermissionsEditor(i?"want":"user",e.topicName)}];i||n.push("member_delete"),n.push(a.acs.isMuted()?"member_unmute":"member_mute"),i||n.push(a.acs.isJoiner()?"member_block":"member_unblock"),this.props.showContextMenu({topicName:this.props.topic,x:e.x,y:e.y,user:e.topicName},n)}render(){const e=(this.props.panel||"info").split("/"),t=e[0];e.shift();const{formatMessage:s}=this.props.intl,a=s(("perm"==t?D["perm_"+e[0]]:D[t])||D.info),h=this.props.tinode.getTopic(this.state.topic),m=h&&h.alias();return i().createElement("div",{id:"info-view"},i().createElement("div",{className:"toast"+(this.state.toast?" show":"")},this.state.toast),i().createElement("div",{className:"caption-panel",id:"info-caption-panel"},i().createElement("div",{className:"panel-title",id:"info-title"},a),i().createElement("div",null,i().createElement(g.A,{onCancel:this.handleBackNavigate}))),this.props.displayMobile?i().createElement(d.A,{level:this.props.errorLevel,text:this.props.errorText,onClearError:this.props.onError}):null,"members"==t?i().createElement(v,{tinode:this.props.tinode,members:this.state.contactList,requiredMember:this.props.myUserId,keepInitialMembers:!this.state.admin&&!this.state.owner,myUserId:this.props.myUserId,contacts:this.props.searchableContacts,onCancel:this.handleBackNavigate,onSubmit:this.handleMemberUpdateRequest}):"perm"==t&&e.length>0?i().createElement(b.A,{tinode:this.props.tinode,mode:this.state.editedPermissions,compare:this.state.immutablePermissions,skip:this.state.editedPermissionsSkipped,modeTitle:this.state.editedPermissionsTitle,compareTitle:this.state.immutablePermissionsTitle,userTitle:this.state.userPermissionsTitle,item:this.state.userPermissionsEdited,userAvatar:this.state.userPermissionsAvatar,onSubmit:t=>this.handlePermissionsChanged(e[0],t),onCancel:this.handleBackNavigate}):"general"==t?i().createElement(y.A,{tinode:this.props.tinode,topic:this.props.topic,reqCredMethod:this.props.reqCredMethod,onCredAdd:this.props.onCredAdd,onUpdateTagsRequest:this.props.onTopicTagsUpdateRequest,onCredConfirm:this.props.onCredConfirm,onCredDelete:this.props.onCredDelete,onUpdateTopicDesc:this.props.onTopicDescUpdateRequest,onError:this.props.onError}):"security"==t?i().createElement(w,{topic:this.props.topic,owner:this.state.owner,admin:this.state.admin,sharer:this.state.sharer,deleter:this.state.deleter,muted:this.state.muted,groupTopic:this.state.groupTopic,channel:this.state.channel,access:this.state.access,modeGiven:this.state.modeGiven,modeWant:this.state.modeWant,modeGiven2:this.state.modeGiven2,modeWant2:this.state.modeWant2,auth:this.state.auth,anon:this.state.anon,onShowAlert:this.props.onShowAlert,onDeleteMessages:this.props.onDeleteMessages,onLeaveTopic:this.props.onLeaveTopic,onBlockTopic:this.props.onBlockTopic,onReportTopic:this.props.onReportTopic,onLaunchPermissionsEditor:this.handleLaunchPermissionsEditor,onNavigate:this.props.onNavigate}):"qrcode"==t?i().createElement(M,{uri:l.Tinode.URI_TOPIC_ID_PREFIX+this.props.topic,onCancel:this.handleBackNavigate}):i().createElement("div",{id:"info-view-content",className:"scrollable-panel"},i().createElement("div",{className:"panel-form-column"},this.state.isSelf?null:i().createElement("a",{href:"#",className:"flat-button float-right",onClick:e=>{e.preventDefault(),this.props.onNavigate("general")}},i().createElement("i",{className:"material-icons"},"edit")," ",i().createElement(n.FormattedMessage,{id:"button_edit",defaultMessage:[{type:0,value:"Edit"}]})),i().createElement("center",null,i().createElement(r.A,{tinode:this.props.tinode,avatar:this.state.avatar,readOnly:!0,uid:this.props.topic,title:this.state.fullName})),i().createElement("div",{className:"group"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_topic_name",defaultMessage:[{type:0,value:"Name"}]}))),i().createElement("div",{className:"large ellipsized"},this.state.fullName,this.state.channel?i().createElement("img",{src:"/img/channel.png",className:"channel",alt:"channel"}):null)),this.state.private?i().createElement("div",{className:"group"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_private",defaultMessage:[{type:0,value:"Private comment"}]}))),i().createElement("div",{className:"large ellipsized"},this.state.private)):null,this.state.isSelf?null:i().createElement(i().Fragment,null,i().createElement("div",{className:"panel-form-row"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_user_id",defaultMessage:[{type:0,value:"ID:"}]}))," ",i().createElement("tt",null,this.state.address)),i().createElement("div",{style:{marginLeft:"auto"}}," ",i().createElement("a",{href:"#",onClick:e=>{this.handleCopyToClipboard(e,this.state.address)}},i().createElement("i",{className:"material-icons"},"content_copy")),"   ",i().createElement("a",{href:"#",onClick:this.handleShowQRCode},i().createElement("i",{className:"material-icons"},"qr_code"))," ")),m?i().createElement("div",{className:"panel-form-row"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_alias",defaultMessage:[{type:0,value:"Alias:"}]}))," ",i().createElement("tt",null,m)),i().createElement("div",{style:{marginLeft:"auto"}}," ",i().createElement("a",{href:"#",onClick:e=>{this.handleCopyToClipboard(e,m)}},i().createElement("i",{className:"material-icons"},"content_copy")),"   ",i().createElement("i",{className:"material-icons",style:{opacity:0}},"qr_code")," ")):null),this.state.trustedBadges.length>0?i().createElement("div",{className:"group"},i().createElement(o.A,{trustedBadges:this.state.trustedBadges})):null,this.state.groupTopic&&h.subcnt>0?i().createElement("div",{className:"group"},i().createElement("label",{className:"small"},this.state.channel?i().createElement(n.FormattedMessage,{id:"label_subscriber_count",defaultMessage:[{type:0,value:"Subscribers:"}]}):i().createElement(n.FormattedMessage,{id:"label_member_count",defaultMessage:[{type:0,value:"Members:"}]}))," ",i().createElement(n.FormattedNumber,{value:h.subcnt})):null,this.state.description?i().createElement("div",{className:"group"},i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_description",defaultMessage:[{type:0,value:"Description"}]})),i().createElement("div",null,this.state.description)):null),this.state.isSelf?null:i().createElement(i().Fragment,null,i().createElement("div",{className:"hr"}),i().createElement("div",{className:"panel-form-row"},i().createElement("label",null,i().createElement(n.FormattedMessage,{id:"label_muting_topic",defaultMessage:[{type:0,value:"Muted:"}]})),i().createElement(c.A,{name:"P",checked:this.state.muted,onChange:this.handleMuted}))),this.state.archived?i().createElement("div",{className:"panel-form-row"},i().createElement("label",null,i().createElement(n.FormattedMessage,{id:"label_unarchive_topic",defaultMessage:[{type:0,value:"Archived:"}]})),i().createElement(c.A,{name:"archived",checked:!0,onChange:this.handleUnarchive})):null,this.state.isSelf?null:i().createElement(i().Fragment,null,i().createElement("div",{className:"hr"}),i().createElement("div",{className:"panel-form-row"},i().createElement("a",{href:"#",className:"flat-button",onClick:e=>{e.preventDefault(),this.props.onNavigate("security")}},i().createElement("i",{className:"material-icons"},"security")," ",i().createElement(n.FormattedMessage,{id:"button_security",defaultMessage:[{type:0,value:"Security"}]})))),this.state.groupTopic&&this.state.sharer?i().createElement(i().Fragment,null,i().createElement("div",{className:"hr"}),i().createElement("div",{className:"panel-form-row"},i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_group_members",defaultMessage:[{type:0,value:"Group members:"}]}))),i().createElement("div",{className:"panel-form-row"},i().createElement("a",{href:"#",className:"flat-button",onClick:this.handleShowAddMembers},i().createElement("i",{className:"material-icons"},"person_add"),"  ",i().createElement(n.FormattedMessage,{id:"button_add_members",defaultMessage:[{type:0,value:"Add members"}]}))),i().createElement(n.FormattedMessage,{id:"group_has_no_members",defaultMessage:[{type:0,value:"No members"}]},e=>i().createElement(p.A,{tinode:this.props.tinode,contacts:this.state.contactList,myUserId:this.props.myUserId,emptyListMessage:e,topicSelected:this.state.selectedContact,showOnline:!1,showUnread:!1,showMode:!0,noScroll:!0,onTopicSelected:this.handleMemberSelected,showContextMenu:!!this.state.admin&&this.handleContextMenu}))):null))}}var P=(0,n.injectIntl)(A)}}]); +"use strict";(self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[]).push([[747],{6235:function(e,t,s){var a=s(1594),i=s.n(a),n=s(8181),l=s(1166),r=s(6005),o=s(6110);const c=(0,n.defineMessages)({joiner:{id:"permission_join",defaultMessage:[{type:0,value:"Join ("},{type:1,value:"val"},{type:0,value:")"}]},reader:{id:"permission_read",defaultMessage:[{type:0,value:"Read ("},{type:1,value:"val"},{type:0,value:")"}]},writer:{id:"permission_write",defaultMessage:[{type:0,value:"Write ("},{type:1,value:"val"},{type:0,value:")"}]},preser:{id:"permission_pres",defaultMessage:[{type:0,value:"Get notified ("},{type:1,value:"val"},{type:0,value:")"}]},approver:{id:"permission_admin",defaultMessage:[{type:0,value:"Approve ("},{type:1,value:"val"},{type:0,value:")"}]},sharer:{id:"permission_share",defaultMessage:[{type:0,value:"Share ("},{type:1,value:"val"},{type:0,value:")"}]},deleter:{id:"permission_delete",defaultMessage:[{type:0,value:"Delete ("},{type:1,value:"val"},{type:0,value:")"}]},owner:{id:"permission_owner",defaultMessage:[{type:0,value:"Owner ("},{type:1,value:"val"},{type:0,value:")"}]}});class p extends i().Component{constructor(e){super(e),this.state={mode:(e.mode||"").replace("N","")},this.handleChange=this.handleChange.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleCancel=this.handleCancel.bind(this)}handleChange(e){let t=this.state.mode;-1==t.indexOf(e)?t+=e:t=t.replace(e,""),this.setState({mode:t})}handleSubmit(){const e=(this.state.mode||"N").split("").sort().join("");e!==(this.props.mode||"N").split("").sort().join("")?this.props.onSubmit(e):this.props.onCancel()}handleCancel(){this.props.onCancel()}render(){const{formatMessage:e}=this.props.intl,t="JRWPASDO",s={J:e(c.joiner,{val:"J"}),R:e(c.reader,{val:"R"}),W:e(c.writer,{val:"W"}),P:e(c.preser,{val:"P"}),A:e(c.approver,{val:"A"}),S:e(c.sharer,{val:"S"}),D:e(c.deleter,{val:"D"}),O:e(c.owner,{val:"O"})};let a=this.props.skip||"",p=this.state.mode,d=(this.props.compare||"").replace("N",""),h=[];for(let e=0;e<8;e++){let n=t.charAt(e);a.indexOf(n)>=0&&p.indexOf(n)<0||h.push(i().createElement("tr",{key:n},i().createElement("td",null,s[n]),i().createElement("td",{className:"checkbox"},a.indexOf(n)<0?i().createElement(l.A,{name:n,checked:p.indexOf(n)>=0,onChange:this.handleChange}):i().createElement(l.A,{name:n,checked:p.indexOf(n)>=0})),this.props.compare?i().createElement("td",{className:"checkbox"},i().createElement(l.A,{name:n,checked:d.indexOf(n)>=0})):null))}return i().createElement("div",{className:"panel-form-column"},this.props.userTitle?i().createElement("ul",{className:"contact-box small"},i().createElement(r.A,{tinode:this.props.tinode,item:this.props.item,title:this.props.userTitle,small:!0,avatar:(0,o.to)(this.props.userAvatar?this.props.userAvatar:null)})):null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"title_permissions",defaultMessage:[{type:0,value:"Permissions"}]})),i().createElement("table",{className:"permission-editor"},this.props.compare?i().createElement("thead",null,i().createElement("tr",null,i().createElement("th",null),i().createElement("th",null,this.props.modeTitle),i().createElement("th",null,this.props.compareTitle))):null,i().createElement("tbody",null,h)),i().createElement("br",null),i().createElement("div",{className:"dialog-buttons"},i().createElement("button",{className:"outline",onClick:this.handleCancel},i().createElement(n.FormattedMessage,{id:"button_cancel",defaultMessage:[{type:0,value:"Cancel"}]})),i().createElement("button",{className:"primary",onClick:this.handleSubmit},i().createElement(n.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]}))))}}t.A=(0,n.injectIntl)(p)},7747:function(e,t,s){s.r(t),s.d(t,{default:function(){return P}});var a=s(1594),i=s.n(a),n=s(8181),l=s(4532),r=s(9418),o=s(635),c=s(1166),p=s(4152),d=s(1334),h=s(5874);const m=(0,n.defineMessages)({no_contacts:{id:"no_contacts",defaultMessage:[{type:0,value:"You have no contacts :-("}]},contacts_not_found_short:{id:"contacts_not_found_short",defaultMessage:[{type:0,value:"No contacts match '"},{type:1,value:"query"},{type:0,value:"'"}]}});class u extends i().Component{constructor(e){super(e),this.state={members:e.members,index:u.indexMembers(e.members),staticMembers:u.staticMembers(e.members,e.keepInitialMembers,e.requiredMember),contactFilter:"",noContactsMessage:e.intl.formatMessage(m.no_contacts),selectedContacts:u.selectedContacts(e.members)},this.handleContactSelected=this.handleContactSelected.bind(this),this.handleMemberRemoved=this.handleMemberRemoved.bind(this),this.handleContactFilter=this.handleContactFilter.bind(this),this.handleSubmit=this.handleSubmit.bind(this),this.handleCancel=this.handleCancel.bind(this)}static indexMembers(e){let t={};return e.forEach(e=>{t[e.user]={delta:0,present:!0}}),t}static staticMembers(e,t,s){let a=[];return e.forEach(e=>{(t||e.user==s)&&a.push(e.user)}),a}static selectedContacts(e){let t=[];return e.forEach(e=>{t.push(e.user)}),t}handleContactSelected(e,t){let s=this.state.index[e];if(s){if(s.present)return;s.delta+=1,s.present=!0}else s={delta:1,present:!0};let a=this.state.members.slice();a.push(this.props.contacts[t]);const i=u.selectedContacts(a),n=this.state.index;n[e]=s,this.setState({members:a,index:n,selectedContacts:i})}handleMemberRemoved(e,t){const s=this.state.index[e];if(!s||!s.present)return;s.present=!1,s.delta-=1;let a=this.state.members.slice();a.splice(t,1);const i=u.selectedContacts(a),n=this.state.index;n[e]=s,this.setState({members:a,index:n,selectedContacts:i})}handleContactFilter(e){const{formatMessage:t}=this.props.intl,s=e?t(m.contacts_not_found_short,{query:e}):t(m.no_contacts);this.setState({contactFilter:e,noContactsMessage:s})}static doContactFiltering(e,t){if(e){for(let s=0;s=0)return!0;return!1}return!0}handleSubmit(){const e=[],t=[],s=[];Object.keys(this.state.index).forEach(a=>{this.state.index[a].present&&e.push(a),this.state.index[a].delta>0?t.push(a):this.state.index[a].delta<0&&s.push(a)}),this.props.onSubmit(e,t,s)}handleCancel(){this.props.onCancel()}render(){return i().createElement("div",{id:"group-manager"},i().createElement("div",{className:"panel-form-row"},i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"title_group_members",defaultMessage:[{type:0,value:"Group Members"}]}))),i().createElement("div",{className:"panel-form-row"},i().createElement(h.A,{tinode:this.props.tinode,chips:this.state.members,staticMembers:this.state.staticMembers,prompt:"add members",filterFunc:this.handleContactFilter,onChipRemoved:this.handleMemberRemoved})),i().createElement("div",{className:"panel-form-row"},i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"title_all_contacts",defaultMessage:[{type:0,value:"All Contacts"}]}))),i().createElement(p.A,{tinode:this.props.tinode,contacts:this.props.contacts,myUserId:this.props.myUserId,topicSelected:this.state.selectedContacts,filter:this.state.contactFilter,filterFunc:u.doContactFiltering,emptyListMessage:this.state.noContactsMessage,showOnline:!1,showUnread:!1,onTopicSelected:this.handleContactSelected}),i().createElement("div",{id:"group-manager-buttons",className:"panel-form-row"},i().createElement("button",{className:"secondary",onClick:this.handleCancel},i().createElement(n.FormattedMessage,{id:"button_cancel",defaultMessage:[{type:0,value:"Cancel"}]})),i().createElement("button",{className:"primary",onClick:this.handleSubmit},i().createElement(n.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]}))))}}var v=(0,n.injectIntl)(u),g=s(3913),b=s(6235),f=s(9593),_=s.n(f),E=s(9027);class M extends i().PureComponent{constructor(e){super(e),this.qrCodeRef=i().createRef()}componentDidMount(){new(_())(this.qrCodeRef.current,{text:this.props.uri,width:E.Tn,height:E.Tn})}render(){return i().createElement("div",{className:"panel-form-column"},i().createElement("br",null),i().createElement("div",{className:"qr-code",ref:this.qrCodeRef}),i().createElement("div",{className:"dialog-buttons"},i().createElement("button",{className:"outline",onClick:this.props.onCancel},i().createElement(n.FormattedMessage,{id:"button_ok",defaultMessage:[{type:0,value:"OK"}]}))))}}var y=s(8089);const C=(0,n.defineMessages)({clear_messages:{id:"action_clear_messages",defaultMessage:[{type:0,value:"Clear Messages"}]},clear_messages_warning:{id:"clear_messages_warning",defaultMessage:[{type:0,value:"Are you sure you want to clear all messages? It cannot be undone."}]},delete_messages:{id:"action_delete_messages",defaultMessage:[{type:0,value:"Clear Messages for All"}]},delete_messages_warning:{id:"delete_messages_warning",defaultMessage:[{type:0,value:"Are you sure you want to delete all messages for everyone? It cannot be undone."}]},topic_delete:{id:"topic_delete",defaultMessage:[{type:0,value:"Delete Conversation"}]},topic_delete_warning:{id:"topic_delete_warning",defaultMessage:[{type:0,value:"Are you sure you want to delete this conversation? It cannot be undone."}]},leave_chat:{id:"action_leave_chat",defaultMessage:[{type:0,value:"Leave Conversation"}]},leave_chat_warning:{id:"leave_chat_warning",defaultMessage:[{type:0,value:"Are you sure you want to leave this conversation?"}]},block_contact:{id:"action_block_contact",defaultMessage:[{type:0,value:"Block Contact"}]},block_contact_warning:{id:"block_contact_warning",defaultMessage:[{type:0,value:"Are you sure you want to block this contact?"}]},report_chat:{id:"action_report_chat",defaultMessage:[{type:0,value:"Report Conversation"}]},report_chat_warning:{id:"report_chat_warning",defaultMessage:[{type:0,value:"Are you sure you want to block and report this conversation?"}]},other_user:{id:"label_other_user",defaultMessage:[{type:0,value:"Other"}]}});class N extends i().PureComponent{constructor(e){super(e),this.handleDeleteTopic=this.handleDeleteTopic.bind(this),this.handleDeleteMessages=this.handleDeleteMessages.bind(this),this.handleLeave=this.handleLeave.bind(this),this.handleBlock=this.handleBlock.bind(this),this.handleReport=this.handleReport.bind(this)}handleDeleteTopic(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(C.topic_delete),t(C.topic_delete_warning),e=>this.props.onDeleteTopic(this.props.topic),null,!0,null)}handleDeleteMessages(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(this.props.deleter?C.delete_messages:C.clear_messages),t(this.props.deleter?C.delete_messages_warning:C.clear_messages_warning),e=>this.props.onDeleteMessages(this.props.topic),null,!0,null)}handleLeave(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(C.leave_chat),t(C.leave_chat_warning),e=>this.props.onLeaveTopic(this.props.topic),null,!0,null)}handleBlock(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(C.block_contact),t(C.block_contact_warning),e=>this.props.onBlockTopic(this.props.topic),null,!0,null)}handleReport(e){e.preventDefault();const{formatMessage:t}=this.props.intl;this.props.onShowAlert(t(C.report_chat),t(C.report_chat_warning),e=>{this.props.onReportTopic(this.props.topic)},null,!0,null)}render(){const{formatMessage:e}=this.props.intl;return i().createElement("div",{className:"scrollable-panel"},i().createElement("div",{className:"panel-form-column"},this.props.channel?null:i().createElement("a",{href:"#",className:"flat-button",onClick:this.handleDeleteMessages},i().createElement("i",{className:"material-icons"},"delete_outline"),"  ",e(this.props.deleter?C.delete_messages:C.clear_messages)),this.props.owner?i().createElement("a",{href:"#",className:"danger flat-button",onClick:this.handleDeleteTopic},i().createElement("i",{className:"material-icons"},"delete"),"  ",e(C.topic_delete)):i().createElement("a",{href:"#",className:"danger flat-button",onClick:this.handleLeave},i().createElement("i",{className:"material-icons"},"exit_to_app"),"  ",e(C.leave_chat)),this.props.groupTopic?null:i().createElement("a",{href:"#",className:"danger flat-button",onClick:this.handleBlock},i().createElement("i",{className:"material-icons"},"block"),"  ",e(C.block_contact)),this.props.owner?null:i().createElement("a",{href:"#",className:"danger flat-button",onClick:this.handleReport},i().createElement("i",{className:"material-icons"},"report"),"  ",e(C.report_chat))),i().createElement("div",{className:"hr"}),i().createElement("div",{className:"panel-form-column"},this.props.groupTopic?i().createElement(i().Fragment,null,i().createElement("div",{className:"group"},i().createElement("label",null,i().createElement(n.FormattedMessage,{id:"label_your_permissions",defaultMessage:[{type:0,value:"Your permissions:"}]}))," ",i().createElement("tt",{className:"clickable",onClick:e=>{e.preventDefault(),this.props.onLaunchPermissionsEditor("want")}},this.props.access)),this.props.channel?null:i().createElement("div",{className:"group"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_default_access_mode",defaultMessage:[{type:0,value:"Default access mode:"}]}))),i().createElement("div",{className:"quoted"},i().createElement("div",null,"Auth: ",i().createElement("tt",{className:this.props.owner?"clickable":null,onClick:e=>{e.preventDefault(),this.props.owner&&this.props.onLaunchPermissionsEditor("auth")}},this.props.auth)),i().createElement("div",null,"Anon: ",i().createElement("tt",{className:this.props.owner?"clickable":null,onClick:e=>{e.preventDefault(),this.props.owner&&this.props.onLaunchPermissionsEditor("anon")}},this.props.anon))))):i().createElement("div",{className:"group"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_permissions",defaultMessage:[{type:0,value:"Permissions:"}]}))),i().createElement("div",{className:"quoted"},i().createElement("div",null,i().createElement(n.FormattedMessage,{id:"label_you",defaultMessage:[{type:0,value:"You:"}]})," ",i().createElement("tt",{className:"clickable",onClick:e=>{e.preventDefault(),this.props.onLaunchPermissionsEditor("want")}},this.props.access)),i().createElement("div",null,this.props.fullName?this.props.fullName:e(C.other_user),":  ",i().createElement("tt",{className:"clickable",onClick:e=>{e.preventDefault(),this.props.onLaunchPermissionsEditor("given")}},this.props.modeGiven2))))))}}var w=(0,n.injectIntl)(N),S=s(6110),k=s(3540),T=s(8589);const D=(0,n.defineMessages)({info:{id:"panel_title_info",defaultMessage:[{type:0,value:"Info"}]},general:{id:"panel_title_general",defaultMessage:[{type:0,value:"General"}]},security:{id:"panel_title_security",defaultMessage:[{type:0,value:"Security"}]},members:{id:"panel_title_members",defaultMessage:[{type:0,value:"Members"}]},crop:{id:"panel_title_crop",defaultMessage:[{type:0,value:"Drag to Adjust"}]},perm_want:{id:"requested_permissions",defaultMessage:[{type:0,value:"Requested"}]},perm_given:{id:"granted_permissions",defaultMessage:[{type:0,value:"Granted"}]},perm_auth:{id:"permissions_authenticated",defaultMessage:[{type:0,value:"Authenticated"}]},perm_anon:{id:"permissions_anonymous",defaultMessage:[{type:0,value:"Anonymous"}]},perm_user:{id:"permissions_user",defaultMessage:[{type:0,value:"User's Permissions"}]},edit_permissions:{id:"menu_item_edit_permissions",defaultMessage:[{type:0,value:"Edit permissions"}]},qrcode:{id:"scan_qr_code",defaultMessage:[{type:0,value:"Scan QR Code"}]},text_copied:{id:"text_copied",defaultMessage:[{type:0,value:"Copied to clipboard"}]},self_topic_name:{id:"self_topic_name",defaultMessage:[{type:0,value:"Saved messages"}]},self_topic_comment:{id:"self_topic_comment",defaultMessage:[{type:0,value:"Notes, messages, links, files saved for posterity"}]}});class A extends i().Component{constructor(e){super(e),this.state={topic:null,owner:!1,admin:!1,sharer:!1,deleter:!1,muted:!1,address:null,groupTopic:void 0,isSelf:!1,channel:void 0,fullName:void 0,description:void 0,avatar:null,private:null,selectedContact:null,access:null,modeGiven:null,modeWant:null,modeGiven2:null,modeWant2:null,auth:null,anon:null,contactList:[],trustedBadges:[],previousMetaDesc:void 0,previousSubsUpdated:void 0},this.propsUpdated=this.propsUpdated.bind(this),this.resetSubs=this.resetSubs.bind(this),this.resetDesc=this.resetDesc.bind(this),this.resetTags=this.resetTags.bind(this),this.onMetaDesc=this.onMetaDesc.bind(this),this.onSubsUpdated=this.onSubsUpdated.bind(this),this.handleImageChanged=this.handleImageChanged.bind(this),this.handleMuted=this.handleMuted.bind(this),this.handleUnarchive=this.handleUnarchive.bind(this),this.handlePermissionsChanged=this.handlePermissionsChanged.bind(this),this.handleLaunchPermissionsEditor=this.handleLaunchPermissionsEditor.bind(this),this.handleShowQRCode=this.handleShowQRCode.bind(this),this.handleCopyToClipboard=this.handleCopyToClipboard.bind(this),this.handleShowAddMembers=this.handleShowAddMembers.bind(this),this.handleMemberUpdateRequest=this.handleMemberUpdateRequest.bind(this),this.handleMemberSelected=this.handleMemberSelected.bind(this),this.handleContextMenu=this.handleContextMenu.bind(this),this.handleBackNavigate=this.handleBackNavigate.bind(this)}propsUpdated(e){const t=this.props.tinode.getTopic(e.topic);t&&(this.onMetaDesc!=t.onMetaDesc&&(this.previousMetaDesc=t.onMetaDesc,t.onMetaDesc=this.onMetaDesc,this.previousSubsUpdated=t.onSubsUpdated,t.onSubsUpdated=this.onSubsUpdated),this.state.topic!=e.topic&&(this.setState({topic:e.topic}),this.resetDesc(t,e),this.resetSubs(t,e),this.resetTags(t)))}componentDidMount(){this.propsUpdated(this.props)}componentDidUpdate(e){this.propsUpdated(e)}componentWillUnmount(){const e=this.props.tinode.getTopic(this.props.topic);e&&(this.setState({topic:null}),e.onMetaDesc=this.previousMetaDesc,e.onSubsUpdated=this.previousSubsUpdated)}resetSubs(e,t){const s={contactList:[]};if("p2p"==e.getType()){const a=e.subscriber(t.topic);a?(s.modeGiven2=a.acs.getGiven(),s.modeWant2=a.acs.getWant()):(s.modeGiven2=E.D3,s.modeWant2=E.D3)}else e.subscribers(e=>{s.contactList.push(e)},this);this.setState(s)}resetDesc(e,t){const s=e.getDefaultAccess()||{},a=e.getAccessMode(),i=[];if(e.trusted)for(const[t,s]of Object.entries(e.trusted))s&&i.push(t);const n=e.isSelfType();this.setState({owner:a&&a.isOwner(),admin:a&&a.isAdmin(),sharer:a&&a.isSharer(),deleter:a&&a.isDeleter(),muted:a&&a.isMuted(),fullName:n?t.intl.formatMessage(D.self_topic_name):(0,T.W5)(e.public&&e.public.fn,E.tS),description:n?t.intl.formatMessage(D.self_topic_comment):(0,T.W5)(e.public&&e.public.note,E.lQ),avatar:(0,S.to)(e.public?e.public.photo:null),trustedBadges:i,private:(0,T.W5)(e.private&&e.private.comment,E.tS),archived:e.isArchived(),address:e.name,groupTopic:e.isGroupType(),isSelf:n,channel:e.isChannelType()||e.chan,access:a?a.getMode():void 0,modeGiven:a?a.getGiven():void 0,modeWant:a?a.getWant():void 0,auth:s.auth,anon:s.anon})}resetTags(e){if("grp"!=e.getType())return;const t=e.getAccessMode();t&&t.isOwner()&&e.getMeta(e.startMetaQuery().withTags().build())}onMetaDesc(e){const t=this.props.tinode.getTopic(this.props.topic);t&&(this.resetDesc(t,this.props),this.previousMetaDesc&&this.previousMetaDesc!=this.onMetaDesc&&this.previousMetaDesc(e))}onSubsUpdated(e){const t=this.props.tinode.getTopic(this.props.topic);t&&(this.resetSubs(t,this.props),this.previousSubsUpdated&&this.previousSubsUpdated!=this.onSubsUpdated&&this.previousSubsUpdated(e))}handleImageChanged(e,t){this.setState({avatar:t}),this.props.onTopicDescUpdate(this.props.topic,(0,k.k6)(null,t||l.Tinode.DEL_CHAR),null)}handleMuted(e,t){this.setState({muted:t}),this.props.onChangePermissions(this.props.topic,t?"-P":"+P")}handleUnarchive(e,t){this.props.onTopicUnArchive(this.props.topic)}handlePermissionsChanged(e,t){switch(e){case"auth":this.props.onTopicDescUpdateRequest(this.props.topic,null,null,{auth:t});break;case"anon":this.props.onTopicDescUpdateRequest(this.props.topic,null,null,{anon:t});break;case"mode":case"want":this.props.onChangePermissions(this.props.topic,t);break;case"given":this.props.onChangePermissions(this.props.topic,t,this.props.topic);break;case"user":this.props.onChangePermissions(this.props.topic,t,this.state.userPermissionsEdited)}this.handleBackNavigate()}handleLaunchPermissionsEditor(e,t){const{formatMessage:s}=this.props.intl;let a,i,n,r,o,c,p;switch(e){case"mode":a=this.state.access;break;case"want":a=this.state.modeWant,i=this.state.modeGiven,this.state.owner?n="O":(n=l.AccessMode.encode(l.AccessMode.diff("ASDO",this.state.modeGiven)),this.state.channel&&(n+="W")),r=s(D.perm_want),o=s(D.perm_given);break;case"given":a=this.state.modeGiven2,i=this.state.modeWant2,n=this.state.groupTopic?this.state.owner?"":"O":"ASDO",r=s(D.perm_given),o=s(D.perm_want);break;case"auth":a=this.state.auth,n="O";break;case"anon":a=this.state.anon,n="O";break;case"user":{const e=this.props.tinode.getTopic(this.props.topic);if(!e)return;const l=e.subscriber(t);if(!l||!l.acs)return;a=l.acs.getGiven(),i=l.acs.getWant(),n=this.state.owner?"":"O",r=s(D.perm_given),o=s(D.perm_want),l.public&&(c=l.public.fn,p=l.public.photo);break}default:return void console.error("Unknown permission editing mode '"+e+"'")}this.setState({userPermissionsEdited:t,userPermissionsTitle:c,userPermissionsAvatar:p,editedPermissions:a,immutablePermissions:i,editedPermissionsTitle:r,immutablePermissionsTitle:o,editedPermissionsSkipped:n}),this.props.onNavigate(`perm/${e}`)}handleShowQRCode(e){e.preventDefault(),this.props.onNavigate("qrcode")}handleCopyToClipboard(e,t){e.preventDefault(),navigator.clipboard.writeText(t).then(e=>{this.setState({toast:this.props.intl.formatMessage(D.text_copied)}),setTimeout(e=>{this.setState({toast:""})},E.bn)})}handleShowAddMembers(e){e.preventDefault(),this.props.onInitFind(),this.props.onNavigate("members")}handleMemberUpdateRequest(e,t,s){this.props.onMemberUpdateRequest(this.props.topic,t,s),this.props.onNavigate("info")}handleMemberSelected(e){this.setState({selectedContact:e})}handleBackNavigate(){const e=(this.props.panel||"info").split("/");"info"==e[0]?this.props.onNavigate(null):"perm"==e[0]?"user"==e[1]?this.props.onNavigate("info"):this.props.onNavigate("security"):this.props.onNavigate("info")}handleContextMenu(e){const{formatMessage:t}=this.props.intl,s=this.props.tinode.getTopic(this.props.topic);if(!s)return;const a=s.subscriber(e.topicName);if(!a||!a.acs)return;const i=this.props.tinode.isMe(e.topicName),n=[{title:t(D.edit_permissions),handler:t=>this.handleLaunchPermissionsEditor(i?"want":"user",e.topicName)}];i||n.push("member_delete"),n.push(a.acs.isMuted()?"member_unmute":"member_mute"),i||n.push(a.acs.isJoiner()?"member_block":"member_unblock"),this.props.showContextMenu({topicName:this.props.topic,x:e.x,y:e.y,user:e.topicName},n)}render(){const e=(this.props.panel||"info").split("/"),t=e[0];e.shift();const{formatMessage:s}=this.props.intl,a=s(("perm"==t?D["perm_"+e[0]]:D[t])||D.info),h=this.props.tinode.getTopic(this.state.topic),m=h&&h.alias();return i().createElement("div",{id:"info-view"},i().createElement("div",{className:"toast"+(this.state.toast?" show":"")},this.state.toast),i().createElement("div",{className:"caption-panel",id:"info-caption-panel"},i().createElement("div",{className:"panel-title",id:"info-title"},a),i().createElement("div",null,i().createElement(g.A,{onCancel:this.handleBackNavigate}))),this.props.displayMobile?i().createElement(d.A,{level:this.props.errorLevel,text:this.props.errorText,onClearError:this.props.onError}):null,"members"==t?i().createElement(v,{tinode:this.props.tinode,members:this.state.contactList,requiredMember:this.props.myUserId,keepInitialMembers:!this.state.admin&&!this.state.owner,myUserId:this.props.myUserId,contacts:this.props.searchableContacts,onCancel:this.handleBackNavigate,onSubmit:this.handleMemberUpdateRequest}):"perm"==t&&e.length>0?i().createElement(b.A,{tinode:this.props.tinode,mode:this.state.editedPermissions,compare:this.state.immutablePermissions,skip:this.state.editedPermissionsSkipped,modeTitle:this.state.editedPermissionsTitle,compareTitle:this.state.immutablePermissionsTitle,userTitle:this.state.userPermissionsTitle,item:this.state.userPermissionsEdited,userAvatar:this.state.userPermissionsAvatar,onSubmit:t=>this.handlePermissionsChanged(e[0],t),onCancel:this.handleBackNavigate}):"general"==t?i().createElement(y.A,{tinode:this.props.tinode,topic:this.props.topic,reqCredMethod:this.props.reqCredMethod,onCredAdd:this.props.onCredAdd,onUpdateTagsRequest:this.props.onTopicTagsUpdateRequest,onCredConfirm:this.props.onCredConfirm,onCredDelete:this.props.onCredDelete,onUpdateTopicDesc:this.props.onTopicDescUpdateRequest,onError:this.props.onError}):"security"==t?i().createElement(w,{topic:this.props.topic,owner:this.state.owner,admin:this.state.admin,sharer:this.state.sharer,deleter:this.state.deleter,muted:this.state.muted,groupTopic:this.state.groupTopic,channel:this.state.channel,access:this.state.access,modeGiven:this.state.modeGiven,modeWant:this.state.modeWant,modeGiven2:this.state.modeGiven2,modeWant2:this.state.modeWant2,auth:this.state.auth,anon:this.state.anon,onShowAlert:this.props.onShowAlert,onDeleteMessages:this.props.onDeleteMessages,onLeaveTopic:this.props.onLeaveTopic,onBlockTopic:this.props.onBlockTopic,onReportTopic:this.props.onReportTopic,onLaunchPermissionsEditor:this.handleLaunchPermissionsEditor,onNavigate:this.props.onNavigate}):"qrcode"==t?i().createElement(M,{uri:l.Tinode.URI_TOPIC_ID_PREFIX+this.props.topic,onCancel:this.handleBackNavigate}):i().createElement("div",{id:"info-view-content",className:"scrollable-panel"},i().createElement("div",{className:"panel-form-column"},this.state.isSelf?null:i().createElement("a",{href:"#",className:"flat-button float-right",onClick:e=>{e.preventDefault(),this.props.onNavigate("general")}},i().createElement("i",{className:"material-icons"},"edit")," ",i().createElement(n.FormattedMessage,{id:"button_edit",defaultMessage:[{type:0,value:"Edit"}]})),i().createElement("center",null,i().createElement(r.A,{tinode:this.props.tinode,avatar:this.state.avatar,readOnly:!0,uid:this.props.topic,title:this.state.fullName})),i().createElement("div",{className:"group"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_topic_name",defaultMessage:[{type:0,value:"Name"}]}))),i().createElement("div",{className:"large ellipsized"},this.state.fullName," ",this.state.channel?i().createElement("i",{className:"material-icons"},"podcasts"):null)),this.state.private?i().createElement("div",{className:"group"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_private",defaultMessage:[{type:0,value:"Private comment"}]}))),i().createElement("div",{className:"large ellipsized"},this.state.private)):null,this.state.isSelf?null:i().createElement(i().Fragment,null,i().createElement("div",{className:"panel-form-row"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_user_id",defaultMessage:[{type:0,value:"ID:"}]}))," ",i().createElement("tt",null,this.state.address)),i().createElement("div",{style:{marginLeft:"auto"}}," ",i().createElement("a",{href:"#",onClick:e=>{this.handleCopyToClipboard(e,this.state.address)}},i().createElement("i",{className:"material-icons"},"content_copy")),"   ",i().createElement("a",{href:"#",onClick:this.handleShowQRCode},i().createElement("i",{className:"material-icons"},"qr_code"))," ")),m?i().createElement("div",{className:"panel-form-row"},i().createElement("div",null,i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_alias",defaultMessage:[{type:0,value:"Alias:"}]}))," ",i().createElement("tt",null,m)),i().createElement("div",{style:{marginLeft:"auto"}}," ",i().createElement("a",{href:"#",onClick:e=>{this.handleCopyToClipboard(e,m)}},i().createElement("i",{className:"material-icons"},"content_copy")),"   ",i().createElement("i",{className:"material-icons",style:{opacity:0}},"qr_code")," ")):null),this.state.trustedBadges.length>0?i().createElement("div",{className:"group"},i().createElement(o.A,{trustedBadges:this.state.trustedBadges})):null,this.state.groupTopic&&h.subcnt>0?i().createElement("div",{className:"group"},i().createElement("label",{className:"small"},this.state.channel?i().createElement(n.FormattedMessage,{id:"label_subscriber_count",defaultMessage:[{type:0,value:"Subscribers:"}]}):i().createElement(n.FormattedMessage,{id:"label_member_count",defaultMessage:[{type:0,value:"Members:"}]}))," ",i().createElement(n.FormattedNumber,{value:h.subcnt})):null,this.state.description?i().createElement("div",{className:"group"},i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_description",defaultMessage:[{type:0,value:"Description"}]})),i().createElement("div",null,this.state.description)):null),this.state.isSelf?null:i().createElement(i().Fragment,null,i().createElement("div",{className:"hr"}),i().createElement("div",{className:"panel-form-row"},i().createElement("label",null,i().createElement(n.FormattedMessage,{id:"label_muting_topic",defaultMessage:[{type:0,value:"Muted:"}]})),i().createElement(c.A,{name:"P",checked:this.state.muted,onChange:this.handleMuted}))),this.state.archived?i().createElement("div",{className:"panel-form-row"},i().createElement("label",null,i().createElement(n.FormattedMessage,{id:"label_unarchive_topic",defaultMessage:[{type:0,value:"Archived:"}]})),i().createElement(c.A,{name:"archived",checked:!0,onChange:this.handleUnarchive})):null,this.state.isSelf?null:i().createElement(i().Fragment,null,i().createElement("div",{className:"hr"}),i().createElement("div",{className:"panel-form-row"},i().createElement("a",{href:"#",className:"flat-button",onClick:e=>{e.preventDefault(),this.props.onNavigate("security")}},i().createElement("i",{className:"material-icons"},"security")," ",i().createElement(n.FormattedMessage,{id:"button_security",defaultMessage:[{type:0,value:"Security"}]})))),this.state.groupTopic&&this.state.sharer?i().createElement(i().Fragment,null,i().createElement("div",{className:"hr"}),i().createElement("div",{className:"panel-form-row"},i().createElement("label",{className:"small"},i().createElement(n.FormattedMessage,{id:"label_group_members",defaultMessage:[{type:0,value:"Group members:"}]}))),i().createElement("div",{className:"panel-form-row"},i().createElement("a",{href:"#",className:"flat-button",onClick:this.handleShowAddMembers},i().createElement("i",{className:"material-icons"},"person_add"),"  ",i().createElement(n.FormattedMessage,{id:"button_add_members",defaultMessage:[{type:0,value:"Add members"}]}))),i().createElement(n.FormattedMessage,{id:"group_has_no_members",defaultMessage:[{type:0,value:"No members"}]},e=>i().createElement(p.A,{tinode:this.props.tinode,contacts:this.state.contactList,myUserId:this.props.myUserId,emptyListMessage:e,topicSelected:this.state.selectedContact,showOnline:!1,showUnread:!1,showMode:!0,noScroll:!0,onTopicSelected:this.handleMemberSelected,showContextMenu:!!this.state.admin&&this.handleContextMenu}))):null))}}var P=(0,n.injectIntl)(A)}}]); //# sourceMappingURL=747.prod.js.map \ No newline at end of file diff --git a/umd/747.prod.js.map b/umd/747.prod.js.map index 3168e6c3..6c381aa9 100644 --- a/umd/747.prod.js.map +++ b/umd/747.prod.js.map @@ -1 +1 @@ -{"version":3,"file":"747.prod.js","mappings":"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","sources":["webpack://tinode-webapp/./src/widgets/permissions-editor.jsx","webpack://tinode-webapp/./src/widgets/group-manager.jsx","webpack://tinode-webapp/./src/widgets/show-qrcode.jsx","webpack://tinode-webapp/./src/widgets/topic-security.jsx","webpack://tinode-webapp/./src/views/info-view.jsx"],"sourcesContent":["// 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","// 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.forEach(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.forEach(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.forEach(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 const members = [];\n const added = [];\n const removed = [];\n\n const keys = Object.keys(this.state.index);\n keys.forEach(k => {\n if (this.state.index[k].present) {\n members.push(k);\n }\n\n if (this.state.index[k].delta > 0) {\n added.push(k);\n } else if (this.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 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","import QRCode from 'qrcodejs';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { QRCODE_SIZE } from '../config';\n\nexport default class ShowQRCode extends React.PureComponent {\n constructor(props) {\n super(props);\n this.qrCodeRef = React.createRef();\n }\n\n componentDidMount() {\n new QRCode(this.qrCodeRef.current, {\n text: this.props.uri,\n width: QRCODE_SIZE,\n height: QRCODE_SIZE,\n });\n }\n\n render() {\n return (\n
\n
\n
\n
\n \n
\n
\n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\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.PureComponent {\n constructor(props) {\n super(props);\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.props.deleter ? messages.delete_messages : messages.clear_messages), // title\n formatMessage(this.props.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.props.groupTopic ?\n <>\n
\n {e.preventDefault(); this.props.onLaunchPermissionsEditor('want')}}>\n {this.props.access}\n \n
\n {!this.props.channel ?\n
\n
\n \n
\n
\n
Auth: {\n e.preventDefault();\n if (this.props.owner) {\n this.props.onLaunchPermissionsEditor('auth');\n }\n }}>{this.props.auth}\n
\n
Anon: {\n e.preventDefault();\n if (this.props.owner) {\n this.props.onLaunchPermissionsEditor('anon');\n }\n }}>{this.props.anon}\n
\n
\n
\n :\n null\n }\n \n :\n
\n
\n \n
\n
\n
\n {e.preventDefault(); this.props.onLaunchPermissionsEditor('want')}}>\n {this.props.access}\n \n
\n
{this.props.fullName ? this.props.fullName : formatMessage(messages.other_user)}:\n   {e.preventDefault(); this.props.onLaunchPermissionsEditor('given')}}>\n {this.props.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, FormattedNumber, defineMessages, injectIntl } from 'react-intl';\n\nimport { AccessMode, 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 ShowQRCode from '../widgets/show-qrcode.jsx';\nimport TopicCommonView from './topic-common-view.jsx';\nimport TopicSecurity from '../widgets/topic-security.jsx';\n\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH,\n NO_ACCESS_MODE, TOAST_DURATION } from '../config.js';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { theCard } from '../lib/utils.js';\nimport { truncateString } from '../lib/strformat.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 qrcode: {\n id: 'scan_qr_code',\n defaultMessage: 'Scan QR Code',\n description: 'Title for scanning QR code'\n },\n text_copied: {\n id: 'text_copied',\n defaultMessage: 'Copied to clipboard',\n description: 'Notification that text has been copied to clipboard'\n },\n self_topic_name: {\n id: 'self_topic_name',\n defaultMessage: 'Saved messages',\n description: 'Name of self topic for UI',\n },\n self_topic_comment: {\n id: 'self_topic_comment',\n defaultMessage: 'Notes, messages, links, files saved for posterity',\n description: 'Comment for self topic for UI',\n },\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 deleter: false,\n muted: false,\n address: null,\n groupTopic: undefined,\n isSelf: false,\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.propsUpdated = this.propsUpdated.bind(this);\n this.resetSubs = this.resetSubs.bind(this);\n this.resetDesc = this.resetDesc.bind(this);\n this.resetTags = this.resetTags.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.handleUnarchive = this.handleUnarchive.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleShowQRCode = this.handleShowQRCode.bind(this);\n this.handleCopyToClipboard = this.handleCopyToClipboard.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 propsUpdated(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 this.resetTags(topic);\n }\n }\n\n // Must provide this for lazy loaded components.\n componentDidMount() {\n this.propsUpdated(this.props);\n }\n\n componentDidUpdate(props) {\n this.propsUpdated(props);\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 const isSelf = topic.isSelfType();\n\n this.setState({\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 fullName: isSelf ?\n props.intl.formatMessage(messages.self_topic_name) :\n truncateString(topic.public && topic.public.fn, MAX_TITLE_LENGTH),\n description: isSelf ?\n props.intl.formatMessage(messages.self_topic_comment) :\n truncateString(topic.public && topic.public.note, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(topic.public ? topic.public.photo : null),\n trustedBadges: badges,\n private: truncateString(topic.private && topic.private.comment, MAX_TITLE_LENGTH),\n archived: topic.isArchived(),\n address: topic.name,\n groupTopic: topic.isGroupType(),\n isSelf: isSelf,\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\n resetTags(topic) {\n if (topic.getType() != 'grp') {\n return;\n }\n\n const acs = topic.getAccessMode();\n if (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(mime, 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 handleUnarchive(ignored, ignored2) {\n this.props.onTopicUnArchive(this.props.topic);\n }\n\n handlePermissionsChanged(which, perm) {\n switch (which) {\n case 'auth':\n this.props.onTopicDescUpdateRequest(this.props.topic, null, null, {auth: perm});\n break;\n case 'anon':\n this.props.onTopicDescUpdateRequest(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 this.handleBackNavigate();\n }\n\n handleLaunchPermissionsEditor(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 = AccessMode.encode(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.error(\"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 handleShowQRCode(e) {\n e.preventDefault();\n this.props.onNavigate('qrcode');\n }\n\n handleCopyToClipboard(e, text) {\n e.preventDefault();\n navigator.clipboard.writeText(text).then(_ => {\n this.setState({toast: this.props.intl.formatMessage(messages.text_copied)});\n setTimeout(_ => { this.setState({toast: ''}); }, TOAST_DURATION);\n });\n\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 isMe = this.props.tinode.isMe(params.topicName);\n const menuItems = [{\n title: formatMessage(messages.edit_permissions),\n handler: _ => this.handleLaunchPermissionsEditor(isMe ? 'want' : 'user', params.topicName)\n }];\n if (!isMe) {\n menuItems.push('member_delete');\n }\n menuItems.push(user.acs.isMuted() ? 'member_unmute' : 'member_mute');\n if (!isMe) {\n menuItems.push(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 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 const topic = this.props.tinode.getTopic(this.state.topic);\n const alias = topic && topic.alias();\n\n return (\n
\n
{this.state.toast}
\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 view == 'qrcode' ?\n \n :\n
\n
\n {!this.state.isSelf ?\n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n : null\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 {!this.state.isSelf ?\n <>\n \n {alias ?\n
\n
\n  \n {alias}\n
\n \n
\n : null}\n \n : null\n }\n {this.state.trustedBadges.length > 0 ?\n
\n \n
\n : null\n }\n {this.state.groupTopic && topic.subcnt > 0 ?\n
 
\n : null\n }\n {this.state.description ?\n
\n \n
{this.state.description}
\n
: null}\n
\n {!this.state.isSelf ?\n <>
\n
\n \n \n
\n : null\n }\n {this.state.archived ?\n
\n \n \n
\n :\n null\n }\n {!this.state.isSelf ?\n <>
\n \n : null\n }\n {this.state.groupTopic && this.state.sharer ?\n <>\n
\n
\n \n
\n \n {\n (no_members) => \n }\n \n :\n null\n }\n
\n }\n
\n );\n }\n};\n\nexport default injectIntl(InfoView);\n"],"names":["messages","defineMessages","joiner","id","defaultMessage","reader","writer","preser","approver","sharer","deleter","owner","PermissionsEditor","React","constructor","props","super","this","state","mode","replace","handleChange","bind","handleSubmit","handleCancel","val","indexOf","setState","split","sort","join","onSubmit","onCancel","render","formatMessage","intl","all","names","skip","compare","items","i","c","charAt","push","key","className","CheckBox","name","checked","onChange","userTitle","Contact","tinode","item","title","small","avatar","makeImageUrl","userAvatar","FormattedMessage","modeTitle","compareTitle","onClick","injectIntl","no_contacts","contacts_not_found_short","GroupManager","members","index","indexMembers","staticMembers","keepInitialMembers","requiredMember","contactFilter","noContactsMessage","selectedContacts","handleContactSelected","handleMemberRemoved","handleContactFilter","forEach","m","user","delta","present","keepInitial","stat","sel","userId","status","slice","contacts","splice","msg","query","doContactFiltering","filter","values","length","added","removed","Object","keys","k","ChipInput","chips","prompt","filterFunc","onChipRemoved","ContactList","myUserId","topicSelected","emptyListMessage","showOnline","showUnread","onTopicSelected","ShowQRCode","qrCodeRef","componentDidMount","QRCode","current","text","uri","width","QRCODE_SIZE","height","ref","clear_messages","clear_messages_warning","delete_messages","delete_messages_warning","topic_delete","topic_delete_warning","leave_chat","leave_chat_warning","block_contact","block_contact_warning","report_chat","report_chat_warning","other_user","TopicSecurity","handleDeleteTopic","handleDeleteMessages","handleLeave","handleBlock","handleReport","e","preventDefault","onShowAlert","_","onDeleteTopic","topic","onDeleteMessages","onLeaveTopic","onBlockTopic","onReportTopic","channel","href","groupTopic","onLaunchPermissionsEditor","access","auth","anon","fullName","modeGiven2","info","general","security","crop","perm_want","perm_given","perm_auth","perm_anon","perm_user","edit_permissions","qrcode","text_copied","self_topic_name","self_topic_comment","InfoView","admin","muted","address","undefined","isSelf","description","private","selectedContact","modeGiven","modeWant","modeWant2","contactList","trustedBadges","previousMetaDesc","previousSubsUpdated","propsUpdated","resetSubs","resetDesc","resetTags","onMetaDesc","onSubsUpdated","handleImageChanged","handleMuted","handleUnarchive","handlePermissionsChanged","handleLaunchPermissionsEditor","handleShowQRCode","handleCopyToClipboard","handleShowAddMembers","handleMemberUpdateRequest","handleMemberSelected","handleContextMenu","handleBackNavigate","getTopic","componentDidUpdate","componentWillUnmount","newState","getType","user2","subscriber","acs","getGiven","getWant","NO_ACCESS_MODE","subscribers","sub","defacs","getDefaultAccess","getAccessMode","badges","trusted","entries","isSelfType","isOwner","isAdmin","isSharer","isDeleter","isMuted","truncateString","public","fn","MAX_TITLE_LENGTH","note","MAX_TOPIC_DESCRIPTION_LENGTH","photo","comment","archived","isArchived","isGroupType","isChannelType","chan","getMode","getMeta","startMetaQuery","withTags","build","desc","subs","mime","img","onTopicDescUpdate","theCard","Tinode","DEL_CHAR","ignored","onChangePermissions","ignored2","onTopicUnArchive","which","perm","onTopicDescUpdateRequest","userPermissionsEdited","uid","toEdit","toCompare","toSkip","titleEdit","titleCompare","AccessMode","encode","diff","console","error","userPermissionsTitle","userPermissionsAvatar","editedPermissions","immutablePermissions","editedPermissionsTitle","immutablePermissionsTitle","editedPermissionsSkipped","onNavigate","navigator","clipboard","writeText","then","toast","setTimeout","TOAST_DURATION","onInitFind","onMemberUpdateRequest","args","panel","params","topicName","isMe","menuItems","handler","isJoiner","showContextMenu","x","y","view","shift","panelTitle","alias","MenuCancel","displayMobile","ErrorPanel","level","errorLevel","errorText","onClearError","onError","searchableContacts","TopicCommonView","reqCredMethod","onCredAdd","onUpdateTagsRequest","onTopicTagsUpdateRequest","onCredConfirm","onCredDelete","onUpdateTopicDesc","URI_TOPIC_ID_PREFIX","AvatarUpload","readOnly","src","alt","style","marginLeft","opacity","BadgeList","subcnt","FormattedNumber","value","no_members","showMode","noScroll"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"747.prod.js","mappings":"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","sources":["webpack://tinode-webapp/./src/widgets/permissions-editor.jsx","webpack://tinode-webapp/./src/widgets/group-manager.jsx","webpack://tinode-webapp/./src/widgets/show-qrcode.jsx","webpack://tinode-webapp/./src/widgets/topic-security.jsx","webpack://tinode-webapp/./src/views/info-view.jsx"],"sourcesContent":["// 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","// 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.forEach(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.forEach(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.forEach(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 const members = [];\n const added = [];\n const removed = [];\n\n const keys = Object.keys(this.state.index);\n keys.forEach(k => {\n if (this.state.index[k].present) {\n members.push(k);\n }\n\n if (this.state.index[k].delta > 0) {\n added.push(k);\n } else if (this.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 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","import QRCode from 'qrcodejs';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { QRCODE_SIZE } from '../config';\n\nexport default class ShowQRCode extends React.PureComponent {\n constructor(props) {\n super(props);\n this.qrCodeRef = React.createRef();\n }\n\n componentDidMount() {\n new QRCode(this.qrCodeRef.current, {\n text: this.props.uri,\n width: QRCODE_SIZE,\n height: QRCODE_SIZE,\n });\n }\n\n render() {\n return (\n
\n
\n
\n
\n \n
\n
\n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\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.PureComponent {\n constructor(props) {\n super(props);\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.props.deleter ? messages.delete_messages : messages.clear_messages), // title\n formatMessage(this.props.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.props.groupTopic ?\n <>\n
\n {e.preventDefault(); this.props.onLaunchPermissionsEditor('want')}}>\n {this.props.access}\n \n
\n {!this.props.channel ?\n
\n
\n \n
\n
\n
Auth: {\n e.preventDefault();\n if (this.props.owner) {\n this.props.onLaunchPermissionsEditor('auth');\n }\n }}>{this.props.auth}\n
\n
Anon: {\n e.preventDefault();\n if (this.props.owner) {\n this.props.onLaunchPermissionsEditor('anon');\n }\n }}>{this.props.anon}\n
\n
\n
\n :\n null\n }\n \n :\n
\n
\n \n
\n
\n
\n {e.preventDefault(); this.props.onLaunchPermissionsEditor('want')}}>\n {this.props.access}\n \n
\n
{this.props.fullName ? this.props.fullName : formatMessage(messages.other_user)}:\n   {e.preventDefault(); this.props.onLaunchPermissionsEditor('given')}}>\n {this.props.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, FormattedNumber, defineMessages, injectIntl } from 'react-intl';\n\nimport { AccessMode, 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 ShowQRCode from '../widgets/show-qrcode.jsx';\nimport TopicCommonView from './topic-common-view.jsx';\nimport TopicSecurity from '../widgets/topic-security.jsx';\n\nimport { MAX_TITLE_LENGTH, MAX_TOPIC_DESCRIPTION_LENGTH,\n NO_ACCESS_MODE, TOAST_DURATION } from '../config.js';\n\nimport { makeImageUrl } from '../lib/blob-helpers.js';\nimport { theCard } from '../lib/utils.js';\nimport { truncateString } from '../lib/strformat.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 qrcode: {\n id: 'scan_qr_code',\n defaultMessage: 'Scan QR Code',\n description: 'Title for scanning QR code'\n },\n text_copied: {\n id: 'text_copied',\n defaultMessage: 'Copied to clipboard',\n description: 'Notification that text has been copied to clipboard'\n },\n self_topic_name: {\n id: 'self_topic_name',\n defaultMessage: 'Saved messages',\n description: 'Name of self topic for UI',\n },\n self_topic_comment: {\n id: 'self_topic_comment',\n defaultMessage: 'Notes, messages, links, files saved for posterity',\n description: 'Comment for self topic for UI',\n },\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 deleter: false,\n muted: false,\n address: null,\n groupTopic: undefined,\n isSelf: false,\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.propsUpdated = this.propsUpdated.bind(this);\n this.resetSubs = this.resetSubs.bind(this);\n this.resetDesc = this.resetDesc.bind(this);\n this.resetTags = this.resetTags.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.handleUnarchive = this.handleUnarchive.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleShowQRCode = this.handleShowQRCode.bind(this);\n this.handleCopyToClipboard = this.handleCopyToClipboard.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 propsUpdated(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 this.resetTags(topic);\n }\n }\n\n // Must provide this for lazy loaded components.\n componentDidMount() {\n this.propsUpdated(this.props);\n }\n\n componentDidUpdate(props) {\n this.propsUpdated(props);\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 const isSelf = topic.isSelfType();\n\n this.setState({\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 fullName: isSelf ?\n props.intl.formatMessage(messages.self_topic_name) :\n truncateString(topic.public && topic.public.fn, MAX_TITLE_LENGTH),\n description: isSelf ?\n props.intl.formatMessage(messages.self_topic_comment) :\n truncateString(topic.public && topic.public.note, MAX_TOPIC_DESCRIPTION_LENGTH),\n avatar: makeImageUrl(topic.public ? topic.public.photo : null),\n trustedBadges: badges,\n private: truncateString(topic.private && topic.private.comment, MAX_TITLE_LENGTH),\n archived: topic.isArchived(),\n address: topic.name,\n groupTopic: topic.isGroupType(),\n isSelf: isSelf,\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\n resetTags(topic) {\n if (topic.getType() != 'grp') {\n return;\n }\n\n const acs = topic.getAccessMode();\n if (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(mime, 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 handleUnarchive(ignored, ignored2) {\n this.props.onTopicUnArchive(this.props.topic);\n }\n\n handlePermissionsChanged(which, perm) {\n switch (which) {\n case 'auth':\n this.props.onTopicDescUpdateRequest(this.props.topic, null, null, {auth: perm});\n break;\n case 'anon':\n this.props.onTopicDescUpdateRequest(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 this.handleBackNavigate();\n }\n\n handleLaunchPermissionsEditor(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 = AccessMode.encode(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.error(\"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 handleShowQRCode(e) {\n e.preventDefault();\n this.props.onNavigate('qrcode');\n }\n\n handleCopyToClipboard(e, text) {\n e.preventDefault();\n navigator.clipboard.writeText(text).then(_ => {\n this.setState({toast: this.props.intl.formatMessage(messages.text_copied)});\n setTimeout(_ => { this.setState({toast: ''}); }, TOAST_DURATION);\n });\n\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 isMe = this.props.tinode.isMe(params.topicName);\n const menuItems = [{\n title: formatMessage(messages.edit_permissions),\n handler: _ => this.handleLaunchPermissionsEditor(isMe ? 'want' : 'user', params.topicName)\n }];\n if (!isMe) {\n menuItems.push('member_delete');\n }\n menuItems.push(user.acs.isMuted() ? 'member_unmute' : 'member_mute');\n if (!isMe) {\n menuItems.push(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 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 const topic = this.props.tinode.getTopic(this.state.topic);\n const alias = topic && topic.alias();\n\n return (\n
\n
{this.state.toast}
\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 view == 'qrcode' ?\n \n :\n
\n
\n {!this.state.isSelf ?\n {e.preventDefault(); this.props.onNavigate('general');}}>\n edit \n \n \n : null\n }\n
\n \n
\n
\n
\n
{this.state.fullName} \n {this.state.channel ? podcasts : null}
\n
\n {this.state.private ?\n
\n
\n
{this.state.private}
\n
\n : null\n }\n {!this.state.isSelf ?\n <>\n \n {alias ?\n
\n
\n  \n {alias}\n
\n \n
\n : null}\n \n : null\n }\n {this.state.trustedBadges.length > 0 ?\n
\n \n
\n : null\n }\n {this.state.groupTopic && topic.subcnt > 0 ?\n
 
\n : null\n }\n {this.state.description ?\n
\n \n
{this.state.description}
\n
: null}\n
\n {!this.state.isSelf ?\n <>
\n
\n \n \n
\n : null\n }\n {this.state.archived ?\n
\n \n \n
\n :\n null\n }\n {!this.state.isSelf ?\n <>
\n \n : null\n }\n {this.state.groupTopic && this.state.sharer ?\n <>\n
\n
\n \n
\n \n {\n (no_members) => \n }\n \n :\n null\n }\n
\n }\n
\n );\n }\n};\n\nexport default injectIntl(InfoView);\n"],"names":["messages","defineMessages","joiner","id","defaultMessage","reader","writer","preser","approver","sharer","deleter","owner","PermissionsEditor","React","constructor","props","super","this","state","mode","replace","handleChange","bind","handleSubmit","handleCancel","val","indexOf","setState","split","sort","join","onSubmit","onCancel","render","formatMessage","intl","all","names","skip","compare","items","i","c","charAt","push","key","className","CheckBox","name","checked","onChange","userTitle","Contact","tinode","item","title","small","avatar","makeImageUrl","userAvatar","FormattedMessage","modeTitle","compareTitle","onClick","injectIntl","no_contacts","contacts_not_found_short","GroupManager","members","index","indexMembers","staticMembers","keepInitialMembers","requiredMember","contactFilter","noContactsMessage","selectedContacts","handleContactSelected","handleMemberRemoved","handleContactFilter","forEach","m","user","delta","present","keepInitial","stat","sel","userId","status","slice","contacts","splice","msg","query","doContactFiltering","filter","values","length","added","removed","Object","keys","k","ChipInput","chips","prompt","filterFunc","onChipRemoved","ContactList","myUserId","topicSelected","emptyListMessage","showOnline","showUnread","onTopicSelected","ShowQRCode","qrCodeRef","componentDidMount","QRCode","current","text","uri","width","QRCODE_SIZE","height","ref","clear_messages","clear_messages_warning","delete_messages","delete_messages_warning","topic_delete","topic_delete_warning","leave_chat","leave_chat_warning","block_contact","block_contact_warning","report_chat","report_chat_warning","other_user","TopicSecurity","handleDeleteTopic","handleDeleteMessages","handleLeave","handleBlock","handleReport","e","preventDefault","onShowAlert","_","onDeleteTopic","topic","onDeleteMessages","onLeaveTopic","onBlockTopic","onReportTopic","channel","href","groupTopic","onLaunchPermissionsEditor","access","auth","anon","fullName","modeGiven2","info","general","security","crop","perm_want","perm_given","perm_auth","perm_anon","perm_user","edit_permissions","qrcode","text_copied","self_topic_name","self_topic_comment","InfoView","admin","muted","address","undefined","isSelf","description","private","selectedContact","modeGiven","modeWant","modeWant2","contactList","trustedBadges","previousMetaDesc","previousSubsUpdated","propsUpdated","resetSubs","resetDesc","resetTags","onMetaDesc","onSubsUpdated","handleImageChanged","handleMuted","handleUnarchive","handlePermissionsChanged","handleLaunchPermissionsEditor","handleShowQRCode","handleCopyToClipboard","handleShowAddMembers","handleMemberUpdateRequest","handleMemberSelected","handleContextMenu","handleBackNavigate","getTopic","componentDidUpdate","componentWillUnmount","newState","getType","user2","subscriber","acs","getGiven","getWant","NO_ACCESS_MODE","subscribers","sub","defacs","getDefaultAccess","getAccessMode","badges","trusted","entries","isSelfType","isOwner","isAdmin","isSharer","isDeleter","isMuted","truncateString","public","fn","MAX_TITLE_LENGTH","note","MAX_TOPIC_DESCRIPTION_LENGTH","photo","comment","archived","isArchived","isGroupType","isChannelType","chan","getMode","getMeta","startMetaQuery","withTags","build","desc","subs","mime","img","onTopicDescUpdate","theCard","Tinode","DEL_CHAR","ignored","onChangePermissions","ignored2","onTopicUnArchive","which","perm","onTopicDescUpdateRequest","userPermissionsEdited","uid","toEdit","toCompare","toSkip","titleEdit","titleCompare","AccessMode","encode","diff","console","error","userPermissionsTitle","userPermissionsAvatar","editedPermissions","immutablePermissions","editedPermissionsTitle","immutablePermissionsTitle","editedPermissionsSkipped","onNavigate","navigator","clipboard","writeText","then","toast","setTimeout","TOAST_DURATION","onInitFind","onMemberUpdateRequest","args","panel","params","topicName","isMe","menuItems","handler","isJoiner","showContextMenu","x","y","view","shift","panelTitle","alias","MenuCancel","displayMobile","ErrorPanel","level","errorLevel","errorText","onClearError","onError","searchableContacts","TopicCommonView","reqCredMethod","onCredAdd","onUpdateTagsRequest","onTopicTagsUpdateRequest","onCredConfirm","onCredDelete","onUpdateTopicDesc","URI_TOPIC_ID_PREFIX","AvatarUpload","readOnly","style","marginLeft","opacity","BadgeList","subcnt","FormattedNumber","value","no_members","showMode","noScroll"],"sourceRoot":""} \ No newline at end of file diff --git a/umd/827.prod.js b/umd/827.prod.js new file mode 100644 index 00000000..3bf2115d --- /dev/null +++ b/umd/827.prod.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[]).push([[827],{3827:function(e,a,t){t.r(a),t.d(a,{default:function(){return d}});var l=t(1594),s=t.n(l),r=t(8181),n=t(7151),i=t(9027),c=t(1781);class d extends s().PureComponent{constructor(e){super(e),this.state={tab:i.S.type,wallpaper:c[i.S.type][i.S.index].name,blur:0},this.blurValues=[0,1,2,4,8,16],this.handleTabClick=this.handleTabClick.bind(this),this.handleWallpaperSelected=this.handleWallpaperSelected.bind(this),this.handleBlurChanged=this.handleBlurChanged.bind(this)}handleTabClick(e){e.preventDefault(),n.A.navigateTo(n.A.addUrlParam(window.location.hash,"tab",e.currentTarget.dataset.id)),this.setState({tab:e.currentTarget.dataset.id})}handleWallpaperSelected(e){let a,t,l;e?(e.preventDefault(),t=this.state.tab,a=e.currentTarget.dataset.id,l=this.state.blur):(t=i.S.type,a=i.S.index,l=0);const s=c[t][a].name,r="patt"==t?c[t][a].size:0;this.setState({tab:t,wallpaper:s,blur:0}),this.props.onWallpaperSelected(`../${i.S.path}${s}`,r,this.blurValues[l])}handleBlurChanged(e){e.preventDefault();const a=e.currentTarget.value;this.setState({blur:a}),this.props.onWallpaperSelected(`../${i.S.path}${this.state.wallpaper}`,0,this.blurValues[a])}render(){return s().createElement("div",{className:"flex-column"},s().createElement("div",{className:"panel-form-row clean-clickable"},s().createElement("a",{className:"flat-button",onClick:()=>this.handleWallpaperSelected(null)},s().createElement("i",{className:"material-icons"},"undo")," ",s().createElement(r.FormattedMessage,{id:"button_restore",defaultMessage:[{type:0,value:"Restore default"}]}))),s().createElement("ul",{className:"tabbar"},s().createElement("li",{className:"patt"===this.state.tab?"active":null},s().createElement("a",{href:"#","data-id":"patt",onClick:this.handleTabClick},s().createElement(r.FormattedMessage,{id:"tabtitle_pattern",defaultMessage:[{type:0,value:"pattern"}]}))),s().createElement("li",{className:"img"===this.state.tab?"active":null},s().createElement("a",{href:"#","data-id":"img",onClick:this.handleTabClick},s().createElement(r.FormattedMessage,{id:"tabtitle_image",defaultMessage:[{type:0,value:"image"}]})))),s().createElement("div",{id:"settings-form",className:"scrollable-panel"},"patt"===this.state.tab?s().createElement("div",{className:"image-grid"},c.patt.map((e,a)=>{const t=this.state.wallpaper===e.name?" selected":"";return s().createElement("div",{key:a,"data-id":a,className:`image-grid-cell${t}`,onClick:this.handleWallpaperSelected},s().createElement("img",{src:i.S.path+e.name,alt:e.name,style:{width:`${e.size}px`,height:`${e.size}px`}}))})):s().createElement(s().Fragment,null,s().createElement("div",{className:"panel-form-column"},s().createElement("div",{className:"panel-form-row"},s().createElement("label",{className:"small"},s().createElement(r.FormattedMessage,{id:"label_blur_wallpaper",defaultMessage:[{type:0,value:"Blur:"}]}))),s().createElement("div",{className:"panel-form-row"},s().createElement("input",{type:"range",id:"blur",name:"blur",min:"0",max:"5",step:"1",value:this.state.blur,onChange:this.handleBlurChanged}))),s().createElement("div",{className:"image-grid"},c.img.map((e,a)=>{const t=this.state.wallpaper===e.name?" selected":"";return s().createElement("div",{key:a,"data-id":a,className:`image-grid-cell${t}`,onClick:this.handleWallpaperSelected},s().createElement("img",{src:i.S.path+e.pr,alt:e.name,style:{width:"100%",height:"100%"}}))})))))}}}}]); +//# sourceMappingURL=827.prod.js.map \ No newline at end of file diff --git a/umd/827.prod.js.map b/umd/827.prod.js.map new file mode 100644 index 00000000..dd71d9c9 --- /dev/null +++ b/umd/827.prod.js.map @@ -0,0 +1 @@ +{"version":3,"file":"827.prod.js","mappings":"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","sources":["webpack://tinode-webapp/./src/views/wallpapers.jsx"],"sourcesContent":["// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport HashNavigation from '../lib/navigation.js';\nimport { WALLPAPER_DEFAULTS } from '../config.js';\nimport imageIndex from '../../img/bkg/index.json';\n\nexport default class WallpapersView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n tab: WALLPAPER_DEFAULTS.type, // 'patt' | 'img'\n wallpaper: imageIndex[WALLPAPER_DEFAULTS.type][WALLPAPER_DEFAULTS.index].name,\n blur: 0,\n };\n\n this.blurValues = [0, 1, 2, 4, 8, 16];\n\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleWallpaperSelected = this.handleWallpaperSelected.bind(this);\n this.handleBlurChanged = this.handleBlurChanged.bind(this);\n }\n\n handleTabClick(e) {\n e.preventDefault();\n HashNavigation.navigateTo(HashNavigation.addUrlParam(window.location.hash, 'tab', e.currentTarget.dataset.id));\n this.setState({tab: e.currentTarget.dataset.id});\n }\n\n handleWallpaperSelected(e) {\n let index, type, blur\n if (!e) {\n // Restore default.\n type = WALLPAPER_DEFAULTS.type;\n index = WALLPAPER_DEFAULTS.index;\n blur = 0;\n } else {\n e.preventDefault();\n type = this.state.tab;\n index = e.currentTarget.dataset.id;\n blur = this.state.blur;\n }\n const fname = imageIndex[type][index].name;\n const size = type == 'patt' ? imageIndex[type][index].size : 0;\n this.setState({tab: type, wallpaper: fname, blur: 0});\n this.props.onWallpaperSelected(`../${WALLPAPER_DEFAULTS.path}${fname}`, size, this.blurValues[blur]);\n }\n\n handleBlurChanged(e) {\n e.preventDefault();\n const blur = e.currentTarget.value;\n this.setState({blur: blur});\n // Path relative to CSS file.\n this.props.onWallpaperSelected(`../${WALLPAPER_DEFAULTS.path}${this.state.wallpaper}`, 0, this.blurValues[blur]);\n }\n\n render() {\n return (\n
\n \n \n
\n {this.state.tab === 'patt' ?\n
\n {imageIndex.patt.map((img, idx) => {\n const selected = this.state.wallpaper === img.name ? ' selected' : '';\n return
\n {img.name}\n\n
\n })}\n
:\n <>\n
\n
\n \n
\n
\n \n
\n
\n
\n {imageIndex.img.map((img, idx) => {\n const selected = this.state.wallpaper === img.name ? ' selected' : '';\n return
\n {img.name}\n
\n })}\n
\n \n }
\n
\n );\n }\n}\n"],"names":["WallpapersView","React","constructor","props","super","this","state","tab","WALLPAPER_DEFAULTS","type","wallpaper","imageIndex","index","name","blur","blurValues","handleTabClick","bind","handleWallpaperSelected","handleBlurChanged","e","preventDefault","HashNavigation","navigateTo","addUrlParam","window","location","hash","currentTarget","dataset","id","setState","fname","size","onWallpaperSelected","path","value","render","className","onClick","FormattedMessage","defaultMessage","href","map","img","idx","selected","key","src","alt","style","width","height","min","max","step","onChange","pr"],"sourceRoot":""} \ No newline at end of file diff --git a/umd/978.prod.js b/umd/978.prod.js new file mode 100644 index 00000000..66561928 --- /dev/null +++ b/umd/978.prod.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunktinode_webapp=self.webpackChunktinode_webapp||[]).push([[978],{3978:function(e,a,t){t.r(a),t.d(a,{default:function(){return m}});var l=t(1594),p=t.n(l),n=t(8181),r=t(7151),s=t(9027),i=JSON.parse('{"patt":[{"name":"a00.png","size":200},{"name":"a01.jpg","size":384},{"name":"a02.jpg","size":384},{"name":"a03.jpg","size":384},{"name":"a04.png","size":400},{"name":"a05.jpg","size":400},{"name":"a06.jpg","size":256},{"name":"a07.jpg","size":384},{"name":"a08.jpg","size":384},{"name":"a09.jpg","size":400},{"name":"a10.jpg","size":256},{"name":"a11.png","size":200}],"img":[{"name":"w01.jpg","pr":"p01.jpg"},{"name":"w02.jpg","pr":"p02.jpg"},{"name":"w03.jpg","pr":"p03.jpg"},{"name":"w04.jpg","pr":"p04.jpg"},{"name":"w05.jpg","pr":"p05.jpg"},{"name":"w06.jpg","pr":"p06.jpg"},{"name":"w07.jpg","pr":"p07.jpg"},{"name":"w08.jpg","pr":"p08.jpg"},{"name":"w09.jpg","pr":"p09.jpg"},{"name":"w10.jpg","pr":"p10.jpg"},{"name":"w11.jpg","pr":"p11.jpg"},{"name":"w12.jpg","pr":"p12.jpg"},{"name":"w13.jpg","pr":"p13.jpg"},{"name":"w14.jpg","pr":"p14.jpg"},{"name":"w15.jpg","pr":"p15.jpg"},{"name":"w16.jpg","pr":"p16.jpg"},{"name":"w17.jpg","pr":"p17.jpg"},{"name":"w18.jpg","pr":"p18.jpg"},{"name":"w19.jpg","pr":"p19.jpg"},{"name":"w20.jpg","pr":"p20.jpg"},{"name":"w21.jpg","pr":"p21.jpg"},{"name":"w22.jpg","pr":"p22.jpg"},{"name":"w23.jpg","pr":"p23.jpg"},{"name":"w24.jpg","pr":"p24.jpg"}]}');class m extends p().PureComponent{constructor(e){super(e),this.state={tab:s.Vn.type,wallpaper:i[s.Vn.type][s.Vn.index].name,blur:0},this.blurValues=[0,1,2,4,8,16],this.handleTabClick=this.handleTabClick.bind(this),this.handleWallpaperSelected=this.handleWallpaperSelected.bind(this),this.handleBlurChanged=this.handleBlurChanged.bind(this)}handleTabClick(e){e.preventDefault(),r.A.navigateTo(r.A.addUrlParam(window.location.hash,"tab",e.currentTarget.dataset.id)),this.setState({tab:e.currentTarget.dataset.id})}handleWallpaperSelected(e){let a,t,l;e?(e.preventDefault(),t=this.state.tab,a=e.currentTarget.dataset.id,l=this.state.blur):(t=s.Vn.type,a=s.Vn.index,l=0);const p=i[t][a].name,n="patt"==t?i[t][a].size:0;this.setState({tab:t,wallpaper:p,blur:0}),this.props.onWallpaperSelected(`../${s.nH}${p}`,n,this.blurValues[l])}handleBlurChanged(e){e.preventDefault();const a=e.currentTarget.value;this.setState({blur:a}),this.props.onWallpaperSelected(`../${s.nH}${this.state.wallpaper}`,0,this.blurValues[a])}render(){return p().createElement("div",{className:"flex-column"},p().createElement("div",{className:"panel-form-row clean-clickable"},p().createElement("a",{className:"flat-button",onClick:()=>this.handleWallpaperSelected(null)},p().createElement("i",{className:"material-icons"},"undo")," ",p().createElement(n.FormattedMessage,{id:"button_restore",defaultMessage:[{type:0,value:"Restore default"}]}))),p().createElement("ul",{className:"tabbar"},p().createElement("li",{className:"patt"===this.state.tab?"active":null},p().createElement("a",{href:"#","data-id":"patt",onClick:this.handleTabClick},p().createElement(n.FormattedMessage,{id:"tabtitle_pattern",defaultMessage:[{type:0,value:"pattern"}]}))),p().createElement("li",{className:"img"===this.state.tab?"active":null},p().createElement("a",{href:"#","data-id":"img",onClick:this.handleTabClick},p().createElement(n.FormattedMessage,{id:"tabtitle_image",defaultMessage:[{type:0,value:"image"}]})))),p().createElement("div",{id:"settings-form",className:"scrollable-panel"},"patt"===this.state.tab?p().createElement("div",{className:"image-grid"},i.patt.map((e,a)=>{const t=this.state.wallpaper===e.name?" selected":"";return p().createElement("div",{key:a,"data-id":a,className:`image-grid-cell${t}`,onClick:this.handleWallpaperSelected},p().createElement("img",{src:s.nH+e.name,alt:e.name,style:{width:`${e.size}px`,height:`${e.size}px`}}))})):p().createElement(p().Fragment,null,p().createElement("div",{className:"panel-form-column"},p().createElement("div",{className:"panel-form-row"},p().createElement("label",{className:"small"},p().createElement(n.FormattedMessage,{id:"label_blur_wallpaper",defaultMessage:[{type:0,value:"Blur:"}]}))),p().createElement("div",{className:"panel-form-row"},p().createElement("input",{type:"range",id:"blur",name:"blur",min:"0",max:"5",step:"1",value:this.state.blur,onChange:this.handleBlurChanged}))),p().createElement("div",{className:"image-grid"},i.img.map((e,a)=>{const t=this.state.wallpaper===e.name?" selected":"";return p().createElement("div",{key:a,"data-id":a,className:`image-grid-cell${t}`,onClick:this.handleWallpaperSelected},p().createElement("img",{src:s.nH+e.pr,alt:e.name,style:{width:"100%",height:"100%"}}))})))))}}}}]); +//# sourceMappingURL=978.prod.js.map \ No newline at end of file diff --git a/umd/978.prod.js.map b/umd/978.prod.js.map new file mode 100644 index 00000000..498250a4 --- /dev/null +++ b/umd/978.prod.js.map @@ -0,0 +1 @@ +{"version":3,"file":"978.prod.js","mappings":"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","sources":["webpack://tinode-webapp/./src/views/wallpapers.jsx"],"sourcesContent":["// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport HashNavigation from '../lib/navigation.js';\nimport { WALLPAPER_DEFAULT, WALLPAPER_PATH } from '../config.js';\nimport imageIndex from '../../img/bkg/index.json';\n\nexport default class WallpapersView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.state = {\n tab: WALLPAPER_DEFAULT.type, // 'patt' | 'img'\n wallpaper: imageIndex[WALLPAPER_DEFAULT.type][WALLPAPER_DEFAULT.index].name,\n blur: 0,\n };\n\n this.blurValues = [0, 1, 2, 4, 8, 16];\n\n this.handleTabClick = this.handleTabClick.bind(this);\n this.handleWallpaperSelected = this.handleWallpaperSelected.bind(this);\n this.handleBlurChanged = this.handleBlurChanged.bind(this);\n }\n\n handleTabClick(e) {\n e.preventDefault();\n HashNavigation.navigateTo(HashNavigation.addUrlParam(window.location.hash, 'tab', e.currentTarget.dataset.id));\n this.setState({tab: e.currentTarget.dataset.id});\n }\n\n handleWallpaperSelected(e) {\n let index, type, blur\n if (!e) {\n // Restore default.\n type = WALLPAPER_DEFAULT.type;\n index = WALLPAPER_DEFAULT.index;\n blur = 0;\n } else {\n e.preventDefault();\n type = this.state.tab;\n index = e.currentTarget.dataset.id;\n blur = this.state.blur;\n }\n const fname = imageIndex[type][index].name;\n const size = type == 'patt' ? imageIndex[type][index].size : 0;\n this.setState({tab: type, wallpaper: fname, blur: 0});\n this.props.onWallpaperSelected(`../${WALLPAPER_PATH}${fname}`, size, this.blurValues[blur]);\n }\n\n handleBlurChanged(e) {\n e.preventDefault();\n const blur = e.currentTarget.value;\n this.setState({blur: blur});\n // Path relative to CSS file.\n this.props.onWallpaperSelected(`../${WALLPAPER_PATH}${this.state.wallpaper}`, 0, this.blurValues[blur]);\n }\n\n render() {\n return (\n
\n \n \n
\n {this.state.tab === 'patt' ?\n
\n {imageIndex.patt.map((img, idx) => {\n const selected = this.state.wallpaper === img.name ? ' selected' : '';\n return
\n {img.name}\n\n
\n })}\n
:\n <>\n
\n
\n \n
\n
\n \n
\n
\n
\n {imageIndex.img.map((img, idx) => {\n const selected = this.state.wallpaper === img.name ? ' selected' : '';\n return
\n {img.name}\n
\n })}\n
\n \n }
\n
\n );\n }\n}\n"],"names":["WallpapersView","React","constructor","props","super","this","state","tab","WALLPAPER_DEFAULT","type","wallpaper","imageIndex","index","name","blur","blurValues","handleTabClick","bind","handleWallpaperSelected","handleBlurChanged","e","preventDefault","HashNavigation","navigateTo","addUrlParam","window","location","hash","currentTarget","dataset","id","setState","fname","size","onWallpaperSelected","WALLPAPER_PATH","value","render","className","onClick","FormattedMessage","defaultMessage","href","map","img","idx","selected","key","src","alt","style","width","height","min","max","step","onChange","pr"],"sourceRoot":""} \ No newline at end of file diff --git a/umd/index.dev.js b/umd/index.dev.js index 0e0fa64c..46331781 100644 --- a/umd/index.dev.js +++ b/umd/index.dev.js @@ -2,6 +2,16 @@ /******/ "use strict"; /******/ var __webpack_modules__ = ({ +/***/ "./img/bkg/index.json": +/*!****************************!*\ + !*** ./img/bkg/index.json ***! + \****************************/ +/***/ (function(module) { + +module.exports = /*#__PURE__*/JSON.parse('{"patt":[{"name":"a00.png","size":200},{"name":"a01.jpg","size":384},{"name":"a02.jpg","size":384},{"name":"a03.jpg","size":384},{"name":"a04.png","size":400},{"name":"a05.jpg","size":400},{"name":"a06.jpg","size":256},{"name":"a07.jpg","size":384},{"name":"a08.jpg","size":384},{"name":"a09.jpg","size":400},{"name":"a10.jpg","size":256},{"name":"a11.png","size":200}],"img":[{"name":"w01.jpg","pr":"p01.jpg"},{"name":"w02.jpg","pr":"p02.jpg"},{"name":"w03.jpg","pr":"p03.jpg"},{"name":"w04.jpg","pr":"p04.jpg"},{"name":"w05.jpg","pr":"p05.jpg"},{"name":"w06.jpg","pr":"p06.jpg"},{"name":"w07.jpg","pr":"p07.jpg"},{"name":"w08.jpg","pr":"p08.jpg"},{"name":"w09.jpg","pr":"p09.jpg"},{"name":"w10.jpg","pr":"p10.jpg"},{"name":"w11.jpg","pr":"p11.jpg"},{"name":"w12.jpg","pr":"p12.jpg"},{"name":"w13.jpg","pr":"p13.jpg"},{"name":"w14.jpg","pr":"p14.jpg"},{"name":"w15.jpg","pr":"p15.jpg"},{"name":"w16.jpg","pr":"p16.jpg"},{"name":"w17.jpg","pr":"p17.jpg"},{"name":"w18.jpg","pr":"p18.jpg"},{"name":"w19.jpg","pr":"p19.jpg"},{"name":"w20.jpg","pr":"p20.jpg"},{"name":"w21.jpg","pr":"p21.jpg"},{"name":"w22.jpg","pr":"p22.jpg"},{"name":"w23.jpg","pr":"p23.jpg"},{"name":"w24.jpg","pr":"p24.jpg"}]}'); + +/***/ }), + /***/ "./node_modules/@firebase/app/dist/esm/index.esm2017.js": /*!**************************************************************!*\ !*** ./node_modules/@firebase/app/dist/esm/index.esm2017.js ***! @@ -7273,7 +7283,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ VIDEO_PREVIEW_DIM: function() { return /* binding */ VIDEO_PREVIEW_DIM; }, /* harmony export */ VIDEO_THUMBNAIL_WIDTH: function() { return /* binding */ VIDEO_THUMBNAIL_WIDTH; }, /* harmony export */ WAKE_UP_TICK: function() { return /* binding */ WAKE_UP_TICK; }, -/* harmony export */ WAKE_UP_TIMEOUT: function() { return /* binding */ WAKE_UP_TIMEOUT; } +/* harmony export */ WAKE_UP_TIMEOUT: function() { return /* binding */ WAKE_UP_TIMEOUT; }, +/* harmony export */ WALLPAPER_DEFAULTS: function() { return /* binding */ WALLPAPER_DEFAULTS; } /* harmony export */ }); /* harmony import */ var _version_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./version.js */ "./src/version.js"); @@ -7332,6 +7343,11 @@ const TOAST_DURATION = 3_000; const DEFAULT_COLOR_SCHEME = 'light dark'; const DEFAULT_TEXT_SIZE = 10; const DRAFTY_FR_MIME_TYPE_LEGACY = 'application/json'; +const WALLPAPER_DEFAULTS = { + type: 'patt', + index: 0, + path: 'img/bkg/' +}; /***/ }), @@ -8463,6 +8479,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ asEmail: function() { return /* binding */ asEmail; }, /* harmony export */ asPhone: function() { return /* binding */ asPhone; }, /* harmony export */ cancelablePromise: function() { return /* binding */ cancelablePromise; }, +/* harmony export */ defaultWallpaper: function() { return /* binding */ defaultWallpaper; }, /* harmony export */ deliveryMarker: function() { return /* binding */ deliveryMarker; }, /* harmony export */ isUrlRelative: function() { return /* binding */ isUrlRelative; }, /* harmony export */ sanitizeUrl: function() { return /* binding */ sanitizeUrl; }, @@ -8473,6 +8490,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var tinode_sdk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tinode-sdk */ "tinode-sdk"); /* harmony import */ var tinode_sdk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(tinode_sdk__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../config.js */ "./src/config.js"); + function updateFavicon(count) { const oldIcon = document.getElementById('shortcut-icon'); @@ -8655,6 +8674,14 @@ function cancelablePromise(promise) { }; } ; +function defaultWallpaper() { + const wallpaperIndex = __webpack_require__(/*! ../../img/bkg/index.json */ "./img/bkg/index.json"); + const wp = wallpaperIndex[_config_js__WEBPACK_IMPORTED_MODULE_1__.WALLPAPER_DEFAULTS.type][_config_js__WEBPACK_IMPORTED_MODULE_1__.WALLPAPER_DEFAULTS.index]; + return { + name: `../${_config_js__WEBPACK_IMPORTED_MODULE_1__.WALLPAPER_DEFAULTS.path}${wp.name}`, + size: wp.size + }; +} /***/ }), @@ -8723,6 +8750,8 @@ class AccGeneralView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC return react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { id: "settings-form", className: "scrollable-panel" + }, 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", { @@ -8755,7 +8784,7 @@ class AccGeneralView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC "value": "System default" }] }), "\xA0", react__WEBPACK_IMPORTED_MODULE_0___default().createElement("img", { - src: "../img/routine.svg", + src: "img/routine.svg", style: { verticalAlign: 'top', width: '1.6rem', @@ -8799,9 +8828,26 @@ class AccGeneralView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC }] }), "\xA0", react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", { className: "material-icons blue large" - }, "dark_mode"))))), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { + }, "dark_mode")))))), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { className: "hr" }), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { + className: "panel-form-row clean-clickable" + }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", { + onClick: this.props.onSelectWallpapers, + className: "flat-button" + }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", { + className: "material-icons" + }, "wallpaper"), "\xA0", react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, { + id: "wallpapers", + defaultMessage: [{ + "type": 0, + "value": "Wallpapers" + }] + }))), 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" @@ -8812,8 +8858,6 @@ class AccGeneralView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureC "value": "Text size:" }] }))), 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("input", { type: "range", @@ -11398,7 +11442,7 @@ class NewTopicView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("ul", { className: "tabbar" }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", { - className: this.state.tabSelected === "find" ? "active" : null + className: this.state.tabSelected === 'find' ? 'active' : null }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", { href: "#", "data-id": "find", @@ -11410,7 +11454,7 @@ class NewTopicView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone "value": "find" }] }))), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", { - className: this.state.tabSelected === "grp" ? "active" : null + className: this.state.tabSelected === 'grp' ? 'active' : null }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", { href: "#", "data-id": "grp", @@ -11422,7 +11466,7 @@ class NewTopicView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone "value": "new group" }] }))), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("li", { - className: this.state.tabSelected === "byid" ? "active" : null + className: this.state.tabSelected === 'byid' ? 'active' : null }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", { href: "#", "data-id": "byid", @@ -11649,6 +11693,7 @@ const AccSecurityView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => _ const PasswordResetView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => Promise.all(/*! import() */[__webpack_require__.e("vendors-node_modules_libphonenumber-js_examples_mobile_json_js-node_modules_libphonenumber-js-7e28c7"), __webpack_require__.e("src_views_password-reset-view_jsx")]).then(__webpack_require__.bind(__webpack_require__, /*! ./password-reset-view.jsx */ "./src/views/password-reset-view.jsx"))); +const WallpapersView = react__WEBPACK_IMPORTED_MODULE_0___default().lazy(_ => __webpack_require__.e(/*! import() */ "src_views_wallpapers_jsx").then(__webpack_require__.bind(__webpack_require__, /*! ./wallpapers.jsx */ "./src/views/wallpapers.jsx"))); const messages = (0,react_intl__WEBPACK_IMPORTED_MODULE_1__.defineMessages)({ login: { id: "sidepanel_title_login", @@ -11754,6 +11799,13 @@ const messages = (0,react_intl__WEBPACK_IMPORTED_MODULE_1__.defineMessages)({ "type": 0, "value": "Blocked Chats" }] + }, + wallpapers: { + id: "wallpapers", + defaultMessage: [{ + "type": 0, + "value": "Wallpapers" + }] } }); class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent) { @@ -11864,6 +11916,7 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo onError: this.props.onError }) : view === 'acc_general' ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_acc_general_view_jsx__WEBPACK_IMPORTED_MODULE_7__["default"], { colorSchema: this.props.colorSchema, + onSelectWallpapers: this.props.onSelectWallpapers, textSize: this.props.textSize, sendOnEnter: this.props.sendOnEnter, onChangeColorSchema: this.props.onChangeColorSchema, @@ -11898,7 +11951,19 @@ class SidepanelView extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo })) : view === 'support' ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_acc_support_view_jsx__WEBPACK_IMPORTED_MODULE_9__["default"], { serverAddress: this.props.serverAddress, serverVersion: this.props.serverVersion - }) : view === 'contacts' || view == 'archive' || view == 'blocked' ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_contacts_view_jsx__WEBPACK_IMPORTED_MODULE_6__["default"], { + }) : view === 'wallpapers' ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, { + fallback: react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", { + className: "panel-form-row" + }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, { + id: "loading_note", + defaultMessage: [{ + "type": 0, + "value": "Loading..." + }] + })) + }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(WallpapersView, { + onWallpaperSelected: this.props.onWallpaperSelected + })) : view === 'contacts' || view == 'archive' || view == 'blocked' ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_contacts_view_jsx__WEBPACK_IMPORTED_MODULE_6__["default"], { tinode: this.props.tinode, myUserId: this.props.myUserId, connected: this.props.connected, @@ -12101,6 +12166,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) this.handleResize = this.handleResize.bind(this); this.handleHashRoute = this.handleHashRoute.bind(this); this.handleOnline = this.handleOnline.bind(this); + this.handleColorSchemeChange = this.handleColorSchemeChange.bind(this); this.checkForAppUpdate = this.checkForAppUpdate.bind(this); this.handleVisibilityEvent = this.handleVisibilityEvent.bind(this); this.handleError = this.handleError.bind(this); @@ -12130,6 +12196,8 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) this.handleChangeColorSchema = this.handleChangeColorSchema.bind(this); this.handleChangeTextSize = this.handleChangeTextSize.bind(this); this.handleSendOnEnter = this.handleSendOnEnter.bind(this); + this.handleSelectWallpapers = this.handleSelectWallpapers.bind(this); + this.handleWallpaperSelected = this.handleWallpaperSelected.bind(this); this.handleSettings = this.handleSettings.bind(this); this.handleGlobalSettings = this.handleGlobalSettings.bind(this); this.handleShowArchive = this.handleShowArchive.bind(this); @@ -12259,8 +12327,18 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) }; window.addEventListener('offline', this.handleOnlineOff); window.addEventListener('hashchange', this.handleHashRoute); + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', this.handleColorSchemeChange); + document.addEventListener('visibilitychange', this.handleVisibilityEvent); document.documentElement.style.colorScheme = this.state.colorSchema; document.documentElement.style.setProperty('--message-text-size', `${this.state.textSize}pt`); + const settings = _lib_local_storage_js__WEBPACK_IMPORTED_MODULE_16__["default"].getObject('settings') || {}; + if (!settings.wallpaper) { + const wallpaper = (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_19__.defaultWallpaper)(); + settings.wallpaper = wallpaper.name || ''; + settings.wallpaperSize = wallpaper.size || 0; + settings.wallpaperBlur = 0; + } + this.applyWallpaperSettings(settings.wallpaper, settings.wallpaperSize, settings.wallpaperBlur); if (typeof BroadcastChannel == 'function') { const serviceWorkerChannel = new BroadcastChannel('tinode-sw'); serviceWorkerChannel.addEventListener('message', this.handlePushMessage); @@ -12275,7 +12353,6 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) } this.lastWakeUpCheck = now; }, _config_js__WEBPACK_IMPORTED_MODULE_11__.WAKE_UP_TICK); - document.addEventListener('visibilitychange', this.handleVisibilityEvent); this.setState({ viewportWidth: document.documentElement.clientWidth, viewportHeight: document.documentElement.clientHeight @@ -12320,6 +12397,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) window.removeEventListener('hashchange', this.handleHashRoute); window.removeEventListener('online', this.handleOnlineOn); window.removeEventListener('offline', this.handleOnlineOff); + window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', this.handleColorSchemeChange); document.removeEventListener('visibilitychange', this.handleVisibilityEvent); clearInterval(this.wakeUpTicker); } @@ -12468,7 +12546,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) newTopicTabSelected: hash.params.tab }; if (hash.path && hash.path.length > 0) { - if (['register', 'settings', 'edit', 'notif', 'acc_general', 'security', 'support', 'general', 'crop', 'cred', 'reset', 'newtpk', 'archive', 'blocked', 'contacts', ''].includes(hash.path[0])) { + if (['acc_general', 'archive', 'blocked', 'contacts', 'cred', 'crop', 'edit', 'general', 'newtpk', 'notif', 'register', 'reset', 'security', 'settings', 'support', 'wallpapers', ''].includes(hash.path[0])) { newState.sidePanelSelected = hash.path[0]; } else { console.warn("Unknown sidepanel view", hash.path[0]); @@ -13067,6 +13145,30 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) }); document.documentElement.style.colorScheme = scheme; } + handleColorSchemeChange(event) { + console.log("Color scheme change:", event.matches ? 'dark' : 'not dark'); + } + handleSelectWallpapers() { + this.handleError(); + _lib_navigation_js__WEBPACK_IMPORTED_MODULE_17__["default"].navigateTo(_lib_navigation_js__WEBPACK_IMPORTED_MODULE_17__["default"].setUrlSidePanel(window.location.hash, 'wallpapers')); + } + applyWallpaperSettings(wallpaper, size, blur) { + console.log("Applying wallpaper settings:", wallpaper, size, blur); + document.documentElement.style.setProperty('--wallpaper-url', `url('${wallpaper}')`); + document.documentElement.style.setProperty('--wallpaper-repeat', size ? 'repeat' : 'no-repeat'); + document.documentElement.style.setProperty('--wallpaper-blur', size ? '0px' : `${blur}px`); + document.documentElement.style.setProperty('--wallpaper-size', size ? `${size}px` : 'cover'); + document.documentElement.style.setProperty('--wallpaper-position', size ? 'unset' : 'center'); + } + handleWallpaperSelected(wallpaper, size, blur) { + this.handleError(); + _lib_local_storage_js__WEBPACK_IMPORTED_MODULE_16__["default"].updateObject('settings', { + wallpaper: wallpaper, + wallpaperSize: size, + wallpaperBlur: blur + }); + this.applyWallpaperSettings(wallpaper, size, blur); + } handleChangeTextSize(size) { this.setState({ textSize: size | 0 @@ -13203,6 +13305,8 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) path = 'general'; } else if ('blocked' == parsed.path[0]) { path = 'security'; + } else if ('wallpapers' == parsed.path[0]) { + path = 'acc_general'; } else if (this.state.myUserId) { path = 'contacts'; } @@ -13887,6 +13991,8 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) onChangeColorSchema: this.handleChangeColorSchema, onTextSizeChanged: this.handleChangeTextSize, onSendOnEnterChanged: this.handleSendOnEnter, + onSelectWallpapers: this.handleSelectWallpapers, + onWallpaperSelected: this.handleWallpaperSelected, onCredAdd: this.handleCredAdd, onCredDelete: this.handleCredDelete, onCredConfirm: this.handleCredConfirm, @@ -13924,6 +14030,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) applicationVisible: this.state.applicationVisible, colorSchema: this.state.colorSchema, sendOnEnter: this.state.sendOnEnter, + wallpaper: this.state.wallpaper, forwardMessage: this.state.forwardMessage, onCancelForwardMessage: this.handleHideForwardDialog, callTopic: this.state.callTopic, @@ -16857,11 +16964,9 @@ class Contact extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component) { className: titleClass }, title), this.props.isGroup ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", { className: "material-icons as-badge" - }, "group") : null, this.props.isChannel ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement("img", { - src: "/img/channel.png", - className: "channel", - alt: "channel" - }) : null, !self ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_contact_badges_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], { + }, "group") : null, this.props.isChannel ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", { + className: "material-icons as-badge" + }, "podcasts") : null, !self ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_contact_badges_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], { badges: icon_badges }) : null, !this.props.deleted ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_unread_badge_jsx__WEBPACK_IMPORTED_MODULE_5__["default"], { count: this.props.unread @@ -18746,7 +18851,7 @@ class LetterTile extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCompo src: url, onError: e => { e.target.onerror = null; - e.target.src = "../img/broken_image.png"; + e.target.src = "img/broken_image.png"; } }); } else { @@ -21405,6 +21510,7 @@ const messageLoader = { 'en': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_en_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/en.json */ "./src/i18n.min/en.json", 19)), 'es': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_es_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/es.json */ "./src/i18n.min/es.json", 19)), 'fr': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_fr_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/fr.json */ "./src/i18n.min/fr.json", 19)), + 'it': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_it_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/it.json */ "./src/i18n.min/it.json", 19)), 'ko': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_ko_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/ko.json */ "./src/i18n.min/ko.json", 19)), 'ro': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_ro_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/ro.json */ "./src/i18n.min/ro.json", 19)), 'ru': _ => __webpack_require__.e(/*! import() */ "src_i18n_min_ru_json").then(__webpack_require__.t.bind(__webpack_require__, /*! ./i18n.min/ru.json */ "./src/i18n.min/ru.json", 19)),