@@ -500,30 +506,49 @@ class PeerUI {
`;
}
- updateTypesClassList() {
+ _updateRoomTypeClasses() {
// Remove all classes
- this.$el.classList.remove('type-ip', 'type-secret', 'type-public-id', 'type-same-browser', 'ws-peer');
+ this.$el.classList.remove('type-ip', 'type-secret', 'type-public-id');
// Add classes accordingly
Object.keys(this._roomIds).forEach(roomType => this.$el.classList.add(`type-${roomType}`));
+ }
+ _updateSameBrowserClass() {
if (BrowserTabsConnector.peerIsSameBrowser(this._peer.id)) {
- this.$el.classList.add(`type-same-browser`);
+ this.$el.classList.add('same-browser');
}
+ else {
+ this.$el.classList.remove('same-browser');
+ }
+ }
+ _updateWsPeerClass() {
if (!this._peer.rtcSupported || !window.isRtcSupported) {
this.$el.classList.add('ws-peer');
}
+ else {
+ this.$el.classList.remove('ws-peer');
+ }
+ }
+
+ _updateTurnClass() {
+ if (this._connectionType === "relay") {
+ this.$el.classList.add('turn');
+ }
+ else {
+ this.$el.classList.remove('turn');
+ }
}
_addRoomId(roomType, roomId) {
this._roomIds[roomType] = roomId;
- this.updateTypesClassList();
+ this._updateRoomTypeClasses();
}
_removeRoomId(roomType) {
delete this._roomIds[roomType];
- this.updateTypesClassList();
+ this._updateRoomTypeClasses();
}
_onShareModeChanged(active = false, descriptor = "") {
@@ -599,7 +624,7 @@ class PeerUI {
});
}
- _peerConnected(connected = true, connectionHash = "") {
+ _peerConnected(connected, connectionHash = "", connectionType = "") {
if (connected) {
this._connected = true;
@@ -608,6 +633,11 @@ class PeerUI {
this._oldStatus = 'idle';
this._connectionHash = connectionHash;
+ this._connectionType = connectionType;
+
+ this._updateSameBrowserClass();
+ this._updateWsPeerClass();
+ this._updateTurnClass();
}
else {
this._connected = false;
@@ -619,6 +649,7 @@ class PeerUI {
this.queueProgressStatus(null, "connect");
this._connectionHash = "";
+ this._connectionType = "";
}
}
diff --git a/public/styles/styles-deferred.css b/public/styles/styles-deferred.css
index 3b62af4..1df6d0f 100644
--- a/public/styles/styles-deferred.css
+++ b/public/styles/styles-deferred.css
@@ -278,6 +278,40 @@ x-peer[drop] x-icon {
transform: scale(1.1);
}
+x-peer:not(.turn) .turn-indicator-wrapper {
+ display: none;
+}
+
+x-peer .turn-indicator-wrapper {
+ z-index: 0;
+ display: flex;
+ position: absolute;
+ top: 43px;
+ right: 23px;
+ width: 22px;
+ height: 22px;
+}
+
+x-peer .turn-indicator-wrapper:before {
+ z-index: -1;
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: white;
+ border-radius: 50%;
+ border: solid 2px var(--primary-color);
+}
+
+x-peer .turn-indicator {
+ margin: auto;
+ width: calc(var(--icon-size) / 3);
+ height: calc(var(--icon-size) / 3);
+ fill: var(--primary-color);
+}
+
/* Checkboxes as slider */
.switch {