Check if clipboard supported provide fallbacks
This commit is contained in:
		
							parent
							
								
									184eda47e3
								
							
						
					
					
						commit
						83dc58b5c2
					
				|  | @ -27,7 +27,7 @@ | ||||||
|         @media all and (max-height: 600px) { |         @media all and (max-height: 600px) { | ||||||
|             #sendDialog { |             #sendDialog { | ||||||
|                 padding-top: 24px; |                 padding-top: 24px; | ||||||
|                 top:0px !important; |                 top: 0px !important; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|          |          | ||||||
|  | @ -68,10 +68,13 @@ | ||||||
|             </div> |             </div> | ||||||
|             <div class="buttons"> |             <div class="buttons"> | ||||||
|                 <paper-button dialog-dismiss>Discard</paper-button> |                 <paper-button dialog-dismiss>Discard</paper-button> | ||||||
|  |                 <paper-button on-tap="_copy" autofocus hidden$="{{!clipboardSupported}}">Copy</paper-button> | ||||||
|                 <a href="tel:{{tel}}" hidden$="{{!tel}}"> |                 <a href="tel:{{tel}}" hidden$="{{!tel}}"> | ||||||
|                     <paper-button dialog-dismiss>Call</paper-button> |                     <paper-button autofocus dialog-dismiss>Call</paper-button> | ||||||
|  |                 </a> | ||||||
|  |                 <a href="{{url}}" hidden$="{{!url}}" target="_blank"> | ||||||
|  |                     <paper-button autofocus dialog-dismiss>Open</paper-button> | ||||||
|                 </a> |                 </a> | ||||||
|                 <paper-button on-tap="_copy" autofocus>Copy</paper-button> |  | ||||||
|             </div> |             </div> | ||||||
|         </paper-dialog> |         </paper-dialog> | ||||||
|     </template> |     </template> | ||||||
|  | @ -84,9 +87,11 @@ | ||||||
|          * |          * | ||||||
|          */ |          */ | ||||||
|         var phoneNumbers = /^\+?[0-9x/ ]*$/; |         var phoneNumbers = /^\+?[0-9x/ ]*$/; | ||||||
|  |         var urls = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\-;:&=\+\$,\w]+@)?[A-Za-z0-9\.\-]+|(?:www\.|[\-;:&=\+\$,\w]+@)[A-Za-z0-9\.\-]+)((?:\/[\+~%\/\.\w\-_]*)?\??(?:[\-\+=&;%@\.\w_]*)#?(?:[\.\!\/\\\w]*))?)/; | ||||||
|  | 
 | ||||||
|         Polymer({ |         Polymer({ | ||||||
|             is: 'text-input-dialog', |             is: 'text-input-dialog', | ||||||
|             behaviors: [Chat.ClipboardBehavior,Chat.SoundNotificationBehavior], |             behaviors: [Chat.ClipboardBehavior, Chat.SoundNotificationBehavior], | ||||||
|             properties: { |             properties: { | ||||||
|                 textToSend: { |                 textToSend: { | ||||||
|                     type: String |                     type: String | ||||||
|  | @ -100,6 +105,17 @@ | ||||||
|                 tel: { |                 tel: { | ||||||
|                     computed: '_isPhoneNumber(receivedText)', |                     computed: '_isPhoneNumber(receivedText)', | ||||||
|                     value: false |                     value: false | ||||||
|  |                 }, | ||||||
|  |                 url: { | ||||||
|  |                     computed: '_isUrl(receivedText)', | ||||||
|  |                     value: false | ||||||
|  |                 }, | ||||||
|  |                 clipboardSupported: { | ||||||
|  |                     value: false | ||||||
|  |                 }, | ||||||
|  |                 fallback: { | ||||||
|  |                     computed: '_isFallback(url,tel,clipboardSupported)', | ||||||
|  |                     value: false | ||||||
|                 } |                 } | ||||||
|             }, |             }, | ||||||
|             open: function(contact) { |             open: function(contact) { | ||||||
|  | @ -107,9 +123,27 @@ | ||||||
|                 this.$.sendDialog.open(); |                 this.$.sendDialog.open(); | ||||||
|             }, |             }, | ||||||
|             attached: function() { |             attached: function() { | ||||||
|  |                 // clipboard must be initalized by user interaction | ||||||
|  |                 var that = this; | ||||||
|  |                 var hackListener = function() { | ||||||
|  |                     document.body.removeEventListener('touchstart', hackListener, false); | ||||||
|  |                     document.body.removeEventListener('click', hackListener, false); | ||||||
|  |                     // wait 1s to tell the ui that copy is supported | ||||||
|  |                     that.async(function() { | ||||||
|  |                         that.clipboardSupported = document.queryCommandSupported && document.queryCommandSupported('copy'); | ||||||
|  |                     }, 1000); | ||||||
|  |                 }; | ||||||
|  |                 document.body.addEventListener('touchstart', hackListener, false); | ||||||
|  |                 document.body.addEventListener('click', hackListener, false); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|                 this.async(function() { |                 this.async(function() { | ||||||
|                     app.conn.addEventListener('text-received', function(e) { |                     app.conn.addEventListener('text-received', function(e) { | ||||||
|                         var receivedText = e.detail.text; |                         var receivedText = e.detail.text; | ||||||
|  |                         if (!receivedText || receivedText.trim() === '') { | ||||||
|  |                             this.playSound(); | ||||||
|  |                             return; | ||||||
|  |                         } | ||||||
|                         this.receivedText = receivedText; |                         this.receivedText = receivedText; | ||||||
|                         this.$.receivedText.textContent = receivedText; |                         this.$.receivedText.textContent = receivedText; | ||||||
|                         window.linkifyElement(this.$.receivedText, {}, document); |                         window.linkifyElement(this.$.receivedText, {}, document); | ||||||
|  | @ -136,6 +170,8 @@ | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                 }.bind(this), false); |                 }.bind(this), false); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|             }, |             }, | ||||||
|             _send: function() { |             _send: function() { | ||||||
|                 this.$.sendDialog.close(); |                 this.$.sendDialog.close(); | ||||||
|  | @ -156,6 +192,18 @@ | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|             }, |             }, | ||||||
|  |             _isUrl: function(text) { | ||||||
|  |                 if (!text) { | ||||||
|  |                     return false; | ||||||
|  |                 } | ||||||
|  |                 if (urls.test(text)) { | ||||||
|  |                     return text; | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |             }, | ||||||
|  |             _isFallback: function(url, tel, clipboardSupported) { | ||||||
|  |                 return (!url && !tel && !clipboardSupported); | ||||||
|  |             } | ||||||
|         }); |         }); | ||||||
|     }()); |     }()); | ||||||
|     </script> |     </script> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Robin Linus
						Robin Linus