| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | <link rel="import" href="../../bower_components/paper-dialog/paper-dialog.html"><link rel="import" href="../../bower_components/paper-button/paper-button.html"><link rel="import" href="../../bower_components/neon-animation/animations/scale-up-animation.html"><link rel="import" href="../../bower_components/neon-animation/animations/fade-out-animation.html"><link rel="import" href="../../bower_components/iron-pages/iron-pages.html"><link rel="import" href="../../bower_components/paper-spinner/paper-spinner.html"><link rel="import" href="../sound-notification/sound-notification-behavior.html"><dom-module id="file-receiver">    <template>        <style>        :host {            display: block;        }                #dialog,        #download {            width: 324px;            z-index: 101;            margin: 16px;        }                .filename {            word-break: break-all;            word-break: break-word;        }        </style>        <paper-dialog id="dialog" entry-animation="scale-up-animation" exit-animation="fade-out-animation" with-backdrop modal>            <h2>Download File</h2>            <p><b class="filename">{{file.name}}</b></p>            <div class="buttons">                <paper-button dialog-dismiss on-tap="_decline">Discard</paper-button>                <paper-button dialog-confirm on-tap="_accept" autofocus>Download</paper-button>            </div>        </paper-dialog>        <paper-dialog id="download" entry-animation="scale-up-animation" exit-animation="fade-out-animation" with-backdrop modal>            <h2>File Received</h2>            <p>Open File or Right Click and "Save as"...</p>            <div class="buttons">                <paper-button dialog-dismiss>Discard</paper-button>                <a href="{{dataUri}}" target="_blank">                    <paper-button dialog-confirm autofocus>Open File</paper-button>                </a>            </div>        </paper-dialog>    </template>    <script>    'use strict';    (function() {        Polymer({            is: 'file-receiver',            behaviors: [Chat.SoundNotificationBehavior],            attached: function() {                this.async(function() {                    app.conn.addEventListener('file-offer', function(e) {                        this.file = e.detail;                        this.$.dialog.open();                        this.playSound();                    }.bind(this), false);                    app.conn.addEventListener('file-received', function(e) {                        this._fileReceived(e.detail);                    }.bind(this), false);                    app.conn.addEventListener('file-declined', function(e) {                        app.displayToast('User declined file ' + e.detail.name);                    }.bind(this), false);                    app.conn.addEventListener('upload-complete', function(e) {                        app.displayToast('User received file ' + e.detail.name);                    }.bind(this), false);                    app.conn.addEventListener('upload-error', function(e) {                        app.displayToast('The other device did not respond. Please try again.');                    }.bind(this), false);                }, 200);            },            _fileReceived: function(file) {                this.downloadURI(file);            },            _decline: function() {                app.conn.decline(this.file);            },            _accept: function() {                app.conn.accept(this.file);            },            downloadURI: function(file) {                var link = document.createElement('a');                var uri = (window.URL || window.webkitURL).createObjectURL(file.blob);                if (typeof link.download !== 'undefined') {                    //download attribute is supported                    link.href = uri;                    link.download = file.name || 'blank';                    document.body.appendChild(link);                    link.click();                    document.body.removeChild(link);                } else {                    this.dataUri = uri;                    this.$.download.open();                }            }        });    }());    </script></dom-module>
 |