123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <link rel="import" href="../../bower_components/paper-icon-button/paper-icon-button.html">
- <link rel="import" href="../file-sharing/file-input-behavior.html">
- <dom-module id="buddy-avatar">
- <template>
- <style>
- :host {
- display: block;
- @apply(--layout-vertical);
- @apply(--layout-center);
- width: 120px;
- height: 152px;
- }
-
- paper-icon-button {
- display: inline-block;
- width: 64px !important;
- height: 64px !important;
- border-radius: 50%;
- overflow: hidden;
- padding: 12px;
- margin-bottom: 4px;
- background-color: #4285f4;
- color: white;
- }
-
- :host:hover paper-icon-button {
- transform: scale(1.05);
- }
-
- .paper-font-subhead {
- text-align: center;
- }
-
- .paper-font-body1 {
- text-align: center;
- width: 100%;
- font-size: 13px;
- color: grey;
- margin-top: 2px;
- }
-
- :host,
- .paper-font-subhead,
- .paper-font-body1 {
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- margin-top: 4px;
- }
- :host([only1]) {
- @apply(--layout-fit);
- @apply(--layout-horizontal);
- @apply(--layout-center-center);
- cursor: pointer;
- }
- </style>
- <paper-icon-button icon="{{_displayIcon}}"></paper-icon-button>
- <div class="paper-font-subhead">{{_displayName}}</div>
- <div class="paper-font-body1">{{status}}</div>
- </template>
- <script>
- 'use strict';
- Polymer({
- is: 'buddy-avatar',
- behaviors: [Chat.FileInputBehavior],
- properties: {
- contact: Object,
- _displayName: {
- computed: '_computeDisplayName(contact)'
- },
- _displayIcon: {
- computed: '_computeDisplayIcon(contact)'
- },
- status: {
- type: String,
- value: ''
- }
- },
- _computeDisplayName: function(contact) {
- contact = contact.name;
- if (contact.model) {
- return contact.os + ' ' + contact.model;
- }
- contact.os = contact.os.replace('Mac OS', 'Mac');
- return contact.os + ' ' + contact.browser;
- },
- _computeDisplayIcon: function(contact) {
- contact = contact.name;
- if (contact.type === 'mobile') {
- return 'chat:phone-iphone';
- }
- if (contact.type === 'tablet') {
- return 'chat:tablet-mac';
- }
- return 'chat:desktop-mac';
- },
- attached: function() {
- this.async(function() {
- app.conn.addEventListener('file-offered', function(e) {
- if (e.detail.to === this.contact.peerId) {
- this.status = 'Waiting to accept...';
- }
- }.bind(this), false);
- app.conn.addEventListener('upload-started', function(e) {
- if (e.detail.to === this.contact.peerId) {
- this.status = 'Uploading...';
- }
- }.bind(this), false);
- app.conn.addEventListener('download-started', function(e) {
- if (e.detail.from === this.contact.peerId) {
- this.status = 'Downloading...';
- }
- }.bind(this), false);
- app.conn.addEventListener('upload-complete', function(e) {
- if (e.detail.from === this.contact.peerId) {
- this.status = '';
- }
- }.bind(this), false);
- app.conn.addEventListener('download-complete', function(e) {
- if (e.detail.from === this.contact.peerId) {
- this.status = '';
- }
- }.bind(this), false);
- app.conn.addEventListener('file-declined', function(e) {
- if (e.detail.from === this.contact.peerId) {
- this.status = '';
- }
- }.bind(this), false);
- app.conn.addEventListener('upload-error', function(e) {
- this.status = '';
- }.bind(this), false);
- }, 200);
- }
- });
- </script>
- </dom-module>
|