T5 room badge on decorated IMVU rooms and in the chat rooms page's own widget

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
dhkatzandClaude Opus 5.5 committed 2026-10-30 05:58:27 -07:00
1 parent 4144cd3cce
commit 7feed4a554
1 file changed
+60 -12
@@ -1,10 +1,10 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: dhkatz <[email protected]>
Date: Fri, 30 Oct 2026 03:20:34 -0700
Subject: [PATCH] Show the T5 badge on rooms hosted by T5DE
Subject: [PATCH] Show the T5 badge on rooms needing T5DE
Rooms hosted by T5DE's hub (listed by T5DE's proxy in the chat rooms list) always show the T5 badge:
others need T5DE to be in them.
Rooms needing T5DE to be seen as meant always show the T5 badge in the room list: rooms hosted by
T5DE's hub, and IMVU rooms with T5 decorations (marked by T5DE's proxy).
Co-Authored-By: Claude Opus 5.5 <[email protected]>
T5de-Id: t5de-rooms
@@ -12,15 +12,30 @@ T5de-Name: T5 Rooms
T5de-Group: rooms
T5de-Depends: t5de-proxy
---
imvuContent/chat_rooms/ChatRoom.js | 4 ++++
imvuContent/chat_rooms/index.html | 1 +
imvuContent/img/icon_t5_medium.png | Bin 0 -> 1210 bytes
imvuContent/widgets/ChatRoom_deprecated.css | 12 ++++++++++++
4 files changed, 17 insertions(+)
imvuContent/chat_rooms/ChatModeWithThemes.html | 1 +
imvuContent/chat_rooms/ChatRoom.js | 5 +++++
imvuContent/chat_rooms/ChatRoomsDataSource.js | 6 ++++++
imvuContent/chat_rooms/index.html | 1 +
imvuContent/img/icon_t5_medium.png | Bin 0 -> 1210 bytes
imvuContent/widgets/ChatRoom_deprecated.css | 12 ++++++++++++
imvuContent/widgets/ChatRoom_deprecated.js | 4 ++++
7 files changed, 29 insertions(+)
create mode 100644 imvuContent/img/icon_t5_medium.png
diff --git a/imvuContent/chat_rooms/ChatModeWithThemes.html b/imvuContent/chat_rooms/ChatModeWithThemes.html
index ff8ab679da3c3911f582e2ce7c98313313f99549..80fef8cc494c8c43fa05eb1b5078e35379bb148d 100644
--- a/imvuContent/chat_rooms/ChatModeWithThemes.html
+++ b/imvuContent/chat_rooms/ChatModeWithThemes.html
@@ -173,6 +173,7 @@
<img class="applus icon ui-event" data-ui-name="APPlusIcon" src="../img/icon_applus_medium.png">
<img class="av icon ui-event" data-ui-name="AVIcon" src="../img/icon_av_medium.png">
<img class="vip icon ui-event" data-ui-name="VIPIcon" src="../img/icon_vip_medium.png">
+ <img class="t5 icon" src="../img/icon_t5_medium.png">
<div class="creator"><script id="inline_translate">_iT("By", "inline_translate")</script> <a class="av-name ui-event" data-ui-name="CreatorName"></a></div>
</div>
<div class="star-rating">
diff --git a/imvuContent/chat_rooms/ChatRoom.js b/imvuContent/chat_rooms/ChatRoom.js
index 51c9a07fda07660aeb7d8923987d3927b3f3dd02..bb0cdb34acbbadec88679c45c08be9900c71e575 100644
index 51c9a07fda07660aeb7d8923987d3927b3f3dd02..02ed2b79696b4637c50c5dc314b5f91be208caad 100644
--- a/imvuContent/chat_rooms/ChatRoom.js
+++ b/imvuContent/chat_rooms/ChatRoom.js
@@ -85,6 +85,7 @@ IMVU.Client.widget.ChatRoom.prototype = {
@@ -31,16 +46,34 @@ index 51c9a07fda07660aeb7d8923987d3927b3f3dd02..bb0cdb34acbbadec88679c45c08be990
this.$avIcon = this.$('.av.icon');
this.$vipIcon = this.$('.vip.icon');
this.$icons = this.$('.icon');
@@ -175,6 +176,9 @@ IMVU.Client.widget.ChatRoom.prototype = {
@@ -175,6 +176,10 @@ IMVU.Client.widget.ChatRoom.prototype = {
ellipsize(this.$roomName, 130);
this.$apIcon.toggle(this.roomInfo.is_ap == 1);
this.$apPlusIcon.toggle(this.roomInfo.is_ap == 4);
+ // T5DE: rooms hosted by T5DE's hub (room numbers above 2100000000) always show the T5 badge: they need T5DE.
+ var isT5 = parseInt(this.roomInfo.customers_room_id, 10) > 2100000000;
+ // T5DE: rooms needing T5DE to be seen as meant always show the T5 badge: hosted by T5DE's hub (room numbers
+ // above 2100000000), or with T5 decorations (t5de_t5, from T5DE's proxy).
+ var isT5 = parseInt(this.roomInfo.customers_room_id, 10) > 2100000000 || this.roomInfo.t5de_t5 == 1;
+ this.$t5Icon.toggle(isT5).toggleClass('below-ap', isT5 && (this.roomInfo.is_ap == 1 || this.roomInfo.is_ap == 4));
this.$vipIcon.toggle(this.roomInfo.is_vip);
this.$avIcon.toggle(this.roomInfo.is_age_verified_only);
this.$description.html(this.roomInfo.description);
diff --git a/imvuContent/chat_rooms/ChatRoomsDataSource.js b/imvuContent/chat_rooms/ChatRoomsDataSource.js
index c647702b9e4fbe8b5d6cea90c03be73b65cfad27..3519170e949fb0da360ef8e2065bb1bf269f2f3e 100644
--- a/imvuContent/chat_rooms/ChatRoomsDataSource.js
+++ b/imvuContent/chat_rooms/ChatRoomsDataSource.js
@@ -39,6 +39,12 @@ IMVU.ChatRoomsDataSource = function (params, net, imvuCall) {
keys.push('is_favorite');
}
+ // T5DE: 1 for rooms needing T5DE to be seen as meant (hosted by T5DE's hub, or with T5 decorations), from
+ // T5DE's proxy.
+ if (oFullResponse.t5de_t5) {
+ keys.push('t5de_t5');
+ }
+
if (oFullResponse.room_size){
keys.push('room_size');
}
diff --git a/imvuContent/chat_rooms/index.html b/imvuContent/chat_rooms/index.html
index 66018c4aeab667e44b2dba444ff449b179249037..cab3079f9af8d44667db403c6b957d48de09285d 100644
--- a/imvuContent/chat_rooms/index.html
@@ -109,3 +142,18 @@ index 5eda64919291818395710d54dab438468f7e553d..bc2fe52dfcaaa09c9ccf4a0f95ed49ff
.room-widget .vip.icon {
position: absolute;
right: -8px;
diff --git a/imvuContent/widgets/ChatRoom_deprecated.js b/imvuContent/widgets/ChatRoom_deprecated.js
index ab15f8b8b01ab329749e4f3f8cfad941c50d52d9..9ff1a724bfa37106d5e42001e0743703118b8281 100644
--- a/imvuContent/widgets/ChatRoom_deprecated.js
+++ b/imvuContent/widgets/ChatRoom_deprecated.js
@@ -72,6 +72,10 @@ IMVU.Client.widget.ChatRoom_deprecated = function (args) {
this.$apPlusIcon.bind('click', function () {
this.imvu.call('showApPlusInfo');
}.bind(this));
+ // T5DE: rooms needing T5DE to be seen as meant always show the T5 badge: hosted by T5DE's hub (room numbers
+ // above 2100000000), or with T5 decorations (t5de_t5, from T5DE's proxy).
+ var isT5 = parseInt(room.roomId, 10) > 2100000000 || info.t5de_t5 == 1;
+ this.$root.find('.t5.icon').toggle(isT5).toggleClass('below-ap', isT5 && !!(room.ap || room.applus));
this.$vipIcon = this.$root.find('.vip.icon');
this.$vipIcon.toggle(!!room.vip);