doctype html #x-app.x-app.x-app-type(:class='{ background: appType === "1" && config && config.backgroundEnabled }') template(v-if='appType === "1"') .x-container(style='flex: 1') .x-friend-list(ref='list' style='color: #aaa') template(v-if='config && config.minimalFeed') template(v-for='feed in wristFeed') .x-friend-item( v-if='feed.type === "GPS"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} i.el-icon-loading(v-if='feed.isTraveling' style='margin-right: 5px') | #[span.name(v-text='feed.displayName')] #[location(:location='feed.location' :hint='feed.worldName' :grouphint='feed.groupName')] .x-friend-item( v-else-if='feed.type === "Offline"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName')] ✖️ .x-friend-item( v-else-if='feed.type === "Online"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName')] ✔ template(v-if='feed.worldName') |#[location(:location='feed.location' :hint='feed.worldName' :grouphint='feed.groupName' style='margin-left: 5px')] .x-friend-item( v-else-if='feed.type === "Status"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' style='margin-right: 5px')] template(v-if='feed.statusDescription === feed.previousStatusDescription') i.x-user-status(:class='statusClass(feed.previousStatus)') i.el-icon-right i.x-user-status(:class='statusClass(feed.status)') template(v-else) |#[i.x-user-status(:class='statusClass(feed.status)')] {{ feed.statusDescription }} .x-friend-item( v-else-if='feed.type === "OnPlayerJoined"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | ▶️ #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] .x-friend-item( v-else-if='feed.type === "OnPlayerLeft"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | ◀️ #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] .x-friend-item( v-else-if='feed.type === "OnPlayerJoining"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} span.spin ▶️ span.name(v-text='feed.displayName' style='margin-left: 30px') .x-friend-item( v-else-if='feed.type === "Location"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} location( :location='feed.location' :hint='feed.worldName' :grouphint='feed.groupName') .x-friend-item( v-else-if='feed.type === "VideoPlay"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🎵 #[span.name(v-if='feed.displayName' v-text='feed.displayName' style='margin-right: 5px' :style='{ color: feed.tagColour }')] template(v-if='feed.videoName') |#[span(v-text='feed.videoName')] template(v-else) |#[span(v-text='feed.videoUrl')] .x-friend-item( v-else-if='feed.type === "invite"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 📨 #[span.name(v-text='feed.senderUsername')] #[location(:location='feed.details.worldId' :hint='feed.details.worldName')] #[span(v-text='feed.details.inviteMessage')] .x-friend-item( v-else-if='feed.type === "requestInvite"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 📩 #[span.name(v-text='feed.senderUsername')] #[span(v-text='feed.details.requestMessage')] .x-friend-item( v-else-if='feed.type === "inviteResponse"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 💬 #[span.name(v-text='feed.senderUsername')] #[span(v-text='feed.details.responseMessage')] .x-friend-item( v-else-if='feed.type === "requestInviteResponse"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 💬 #[span.name(v-text='feed.senderUsername')] #[span(v-text='feed.details.responseMessage')] .x-friend-item( v-else-if='feed.type === "friendRequest"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 💚 #[span.name(v-text='feed.senderUsername')] .x-friend-item( v-else-if='feed.type === "Friend"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 💖 #[span.name(v-text='feed.displayName')] .x-friend-item( v-else-if='feed.type === "Unfriend"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 💔 #[span.name(v-text='feed.displayName')] .x-friend-item( v-else-if='feed.type === "DisplayName"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 📃 #[span.name(v-text='feed.previousDisplayName')] #[i.el-icon-right] #[span.name(v-text='feed.displayName')] .x-friend-item( v-else-if='feed.type === "TrustLevel"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🤝 #[span.name(v-text='feed.displayName')] {{ feed.previousTrustLevel }} #[i.el-icon-right] {{ feed.trustLevel }} .x-friend-item( v-else-if='feed.type === "boop"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 👉 #[span.name(v-text='feed.senderUsername')] #[span(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "groupChange"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🏷️ #[span.name(v-text='feed.senderUsername')] #[span(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.announcement"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🏷️ #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.informative"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🏷️ #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.invite"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🏷️ #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.joinRequest"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🏷️ #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.transfer"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🏷️ #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.queueReady"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 📨 #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "instance.closed"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 📫 #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "PortalSpawn"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} template(v-if='feed.displayName') | ✨ #[span.name(v-text='feed.displayName' style='margin-right: 5px' :style='{ color: feed.tagColour }')] | #[location(:location='feed.instanceId' :hint='feed.worldName' :grouphint='feed.groupName')] template(v-else) | ✨ User has spawned a portal .x-friend-item( v-else-if='feed.type === "AvatarChange"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🧍 #[span.name(v-text='feed.displayName' style='margin-right: 5px' :style='{ color: feed.tagColour }')] template(v-if='feed.releaseStatus === "public"') |#[i.x-user-status.online]  template(v-else-if='feed.releaseStatus === "private"') |#[i.x-user-status.askme]  | {{ feed.name }} template(v-if='feed.description && feed.description !== feed.name') | | - {{ feed.description }} .x-friend-item( v-else-if='feed.type === "ChatBoxMessage"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 💬 #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] #[span(v-text='feed.text')] .x-friend-item(v-else-if='feed.type === "Event"') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🛑 #[span.name(v-text='feed.data')] .x-friend-item(v-else-if='feed.type === "External"') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🟠 #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "BlockedOnPlayerJoined"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | ▶️ 🚫 #[span.name(v-text='feed.displayName')] .x-friend-item( v-else-if='feed.type === "BlockedOnPlayerLeft"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | ◀️ 🚫 #[span.name(v-text='feed.displayName')] .x-friend-item( v-else-if='feed.type === "MutedOnPlayerJoined"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | ▶️ 🔇 #[span.name(v-text='feed.displayName')] .x-friend-item( v-else-if='feed.type === "MutedOnPlayerLeft"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | ◀️ 🔇 #[span.name(v-text='feed.displayName')] .x-friend-item( v-else-if='feed.type === "Blocked"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🚫 #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] .x-friend-item( v-else-if='feed.type === "Unblocked"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | ⭕ #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] .x-friend-item( v-else-if='feed.type === "Muted"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🔇 #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] .x-friend-item( v-else-if='feed.type === "Unmuted"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | 🎤 #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] template(v-else) template(v-for='feed in wristFeed') .x-friend-item( v-if='feed.type === "GPS"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} template(v-if='feed.isTraveling') |#[span.name(v-text='feed.displayName')] is traveling to #[location(:location='feed.location' :hint='feed.worldName' :grouphint='feed.groupName')] template(v-else) |#[span.name(v-text='feed.displayName')] is in #[location(:location='feed.location' :hint='feed.worldName' :grouphint='feed.groupName')] .x-friend-item( v-else-if='feed.type === "Offline"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName')] has logged out .x-friend-item( v-else-if='feed.type === "Online"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName')] span(style='margin-left: 5px; margin-right: 5px') has logged in template(v-if='feed.worldName') | to #[location(:location='feed.location' :hint='feed.worldName' :grouphint='feed.groupName')] .x-friend-item( v-else-if='feed.type === "Status"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' style='margin-right: 5px')] template(v-if='feed.statusDescription === feed.previousStatusDescription') i.x-user-status(:class='statusClass(feed.previousStatus)') i.el-icon-right i.x-user-status(:class='statusClass(feed.status)') template(v-else) |#[i.x-user-status(:class='statusClass(feed.status)')] {{ feed.statusDescription }} .x-friend-item( v-else-if='feed.type === "OnPlayerJoined"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] has joined .x-friend-item( v-else-if='feed.type === "OnPlayerLeft"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] has left .x-friend-item( v-else-if='feed.type === "OnPlayerJoining"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName')] is joining .x-friend-item( v-else-if='feed.type === "Location"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} location( :location='feed.location' :hint='feed.worldName' :grouphint='feed.groupName') .x-friend-item( v-else-if='feed.type === "VideoPlay"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] span(style='margin-left: 5px; margin-right: 5px') changed video to template(v-if='feed.videoName') |#[span(v-text='feed.videoName')] template(v-else) |#[span(v-text='feed.videoUrl')] .x-friend-item( v-else-if='feed.type === "invite"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.senderUsername')] has invited you to #[location(:location='feed.details.worldId' :hint='feed.details.worldName')] #[span(v-text='feed.details.inviteMessage')] .x-friend-item( v-else-if='feed.type === "requestInvite"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.senderUsername')] has requested an invite #[span(v-text='feed.details.requestMessage')] .x-friend-item( v-else-if='feed.type === "inviteResponse"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.senderUsername')] has responded to your invite #[span(v-text='feed.details.responseMessage')] .x-friend-item( v-else-if='feed.type === "requestInviteResponse"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.senderUsername')] has responded to your invite request #[span(v-text='feed.details.responseMessage')] .x-friend-item( v-else-if='feed.type === "friendRequest"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.senderUsername')] has sent you a friend request .x-friend-item( v-else-if='feed.type === "Friend"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName')] is now your friend .x-friend-item( v-else-if='feed.type === "Unfriend"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName')] is no longer your friend .x-friend-item( v-else-if='feed.type === "DisplayName"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.previousDisplayName')] changed their name to #[span.name(v-text='feed.displayName')] .x-friend-item( v-else-if='feed.type === "TrustLevel"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName')] trust level is now {{ feed.trustLevel }} .x-friend-item( v-else-if='feed.type === "boop"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.senderUsername')] #[span(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "groupChange"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.senderUsername')] #[span(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.announcement"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.informative"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.invite"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.joinRequest"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.transfer"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "group.queueReady"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "instance.closed"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "PortalSpawn"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} template(v-if='feed.displayName') |#[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] has spawned a portal to | #[location(:location='feed.instanceId' :hint='feed.worldName' :grouphint='feed.groupName' style='margin-left: 5px')] template(v-else) | User has spawned a portal .x-friend-item( v-else-if='feed.type === "AvatarChange"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] span(style='margin-left: 5px; margin-right: 5px') changed into avatar template(v-if='feed.releaseStatus === "public"') |#[i.x-user-status.online] template(v-else) |#[i.x-user-status.askme] | | {{ feed.name }} template(v-if='feed.description && feed.description !== feed.name') | | - {{ feed.description }} .x-friend-item( v-else-if='feed.type === "ChatBoxMessage"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] said #[span(v-text='feed.text')] .x-friend-item(v-else-if='feed.type === "Event"') .detail span.extra span.time {{ feed.created_at | formatDate }} | Event: #[span.name(v-text='feed.data')] .x-friend-item(v-else-if='feed.type === "External"') .detail span.extra span.time {{ feed.created_at | formatDate }} | External: #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] #[span.name(v-text='feed.message')] .x-friend-item( v-else-if='feed.type === "BlockedOnPlayerJoined"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | Blocked user #[span.name(v-text='feed.displayName')] has joined .x-friend-item( v-else-if='feed.type === "BlockedOnPlayerLeft"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | Blocked user #[span.name(v-text='feed.displayName')] has left .x-friend-item( v-else-if='feed.type === "MutedOnPlayerJoined"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | Muted user #[span.name(v-text='feed.displayName')] has joined .x-friend-item( v-else-if='feed.type === "MutedOnPlayerLeft"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | Muted user #[span.name(v-text='feed.displayName')] has left .x-friend-item( v-else-if='feed.type === "Blocked"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] has blocked you .x-friend-item( v-else-if='feed.type === "Unblocked"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] has unblocked you .x-friend-item( v-else-if='feed.type === "Muted"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] has muted you .x-friend-item( v-else-if='feed.type === "Unmuted"' :class='{ friend: feed.isFriend, favorite: feed.isFavorite }') .detail span.extra span.time {{ feed.created_at | formatDate }} | #[span.name(v-text='feed.displayName' :style='{ color: feed.tagColour }')] has unmuted you .x-containerbottom div(style='display: flex; flex-direction: row; flex-wrap: wrap') .tracker-container(v-for='device in devices') .tracker-device(v-if='device[0] === "headset"' :class='trackingResultToClass(device[4])') img.tracker-device( v-if='device[1] !== "connected"' src='images/headset_quest_status_off.png' :class='trackingResultToClass(device[4])') img(v-else-if='device[2] === "charging"' src='images/headset_quest_status_ready_charging.png') img(v-else-if='device[3] < 20' src='images/headset_quest_status_ready_low.png') img(v-else src='images/headset_quest_status_ready.png') span {{ device[3] }}% .tracker-device(v-if='device[0] === "leftController"' :class='trackingResultToClass(device[4])') img.tracker-device( v-if='device[1] !== "connected"' src='images/left_controller_status_off.png' :class='trackingResultToClass(device[4])') img( v-else-if='device[2] === "charging"' src='images/left_controller_status_ready_charging.png') img(v-else-if='device[3] < 20' src='images/left_controller_status_ready_low.png') img(v-else src='images/left_controller_status_ready.png') span {{ device[3] }}% .tracker-device( v-else-if='device[0] === "rightController"' :class='trackingResultToClass(device[4])') img(v-if='device[1] !== "connected"' src='images/right_controller_status_off.png') img( v-else-if='device[2] === "charging"' src='images/right_controller_status_ready_charging.png') img(v-else-if='device[3] < 20' src='images/right_controller_status_ready_low.png') img(v-else src='images/right_controller_status_ready.png') span {{ device[3] }}% .tracker-device(v-else-if='device[0] === "controller"' :class='trackingResultToClass(device[4])') img(v-if='device[1] !== "connected"' src='images/controller_status_off.png') img(v-else-if='device[2] === "charging"' src='images/controller_status_ready_charging.png') img(v-else-if='device[3] < 20' src='images/controller_status_ready_low.png') img(v-else src='images/controller_status_ready.png') span {{ device[3] }}% .tracker-device(v-else-if='device[0] === "tracker"' :class='trackingResultToClass(device[4])') img(v-if='device[1] !== "connected"' src='images/tracker_status_off.png') img(v-else-if='device[2] === "charging"' src='images/tracker_status_ready_charging.png') img(v-else-if='device[3] < 20' src='images/tracker_status_ready_low.png') img(v-else src='images/tracker_status_ready.png') span {{ device[3] }}% .tracker-device(v-else-if='device[0] === "base"' :class='trackingResultToClass(device[4])') img(v-if='device[1] !== "connected"' src='images/base_status_off.png') img(v-else src='images/base_status_ready.png') span(v-if='device[3] !== 100') {{ device[3] }}x .x-containerbottom template(v-if='nowPlaying.playing') span(style='float: right; padding-left: 10px') {{ nowPlaying.remainingText }} marquee-text {{ nowPlaying.name }} ‎ .np-progress-bar(:style='{ width: nowPlaying.percentage + "%" }') template(v-if='lastLocation.date !== 0') template(v-if='config && config.minimalFeed') span(style='float: right') {{ lastLocationTimer }} template(v-if='onlineForTimer') |  / {{ onlineForTimer }} template(v-if='pcUptime') |  / {{ pcUptime }} span(style='display: inline-block') {{ lastLocation.playerList.length }} span(style='display: inline-block; font-weight: bold') {{ lastLocation.friendList.length !== 0 ? `‎‎‎‎‎‎‎‎‏‏‎ ‎(${lastLocation.friendList.length})` : '' }} template(v-else) span(style='float: right') {{ $t('vr.status.timer') }} {{ lastLocationTimer }} template(v-if='onlineForTimer') |  / {{ onlineForTimer }} template(v-if='pcUptime') |  / {{ pcUptime }} span(style='display: inline-block') {{ $t('vr.status.players') }} {{ lastLocation.playerList.length }} span(style='display: inline-block; font-weight: bold') {{ lastLocation.friendList.length !== 0 ? `‎‎‎‎‎‎‎‎‏‏‎ ‎(${lastLocation.friendList.length})` : '' }} br span(style='float: right') {{ currentTime }} span(v-if='config && cpuUsageEnabled' style='display: inline-block; margin-right: 5px') {{ $t('vr.status.cpu') }} {{ cpuUsage }}% span(style='display: inline-block') {{ $t('vr.status.online') }} {{ onlineFriendCount }} ‎{{ customInfo }} template(v-else) svg.np-progress-circle circle.np-progress-circle-stroke( cx='60' cy='60' stroke='white' r='30' fill='transparent' stroke-width='60') .hud-feed div(v-for='feed in hudFeed') .item(:class='{ friend: feed.isFriend, favorite: feed.isFavorite }') #[span(v-if='feed.isMaster') 👑]#[span(v-if='feed.isModerator') ⚔️]#[strong.name(v-text='feed.displayName' :style='{ color: feed.colour }')] template(v-if='feed.type === "ChangeAvatar"') span(style='margin-left: 10px; color: #a3a3a3') ChangeAvatar span(v-if='!feed.inCache' style='color: #aaa; margin-left: 10px') #[i.el-icon-download] span(v-text='feed.avatar.name' style='margin-left: 10px') span(v-if='feed.avatar.releaseStatus === "public"' style='margin-left: 10px; color: #67c23a') (Public) span( v-else-if='feed.avatar.releaseStatus === "private"' style='margin-left: 10px; color: #e6a23c') (Private) template(v-else-if='feed.type === "ChangeStatus"') span(style='margin-left: 10px; color: #a3a3a3') ChangeStatus span(v-if='feed.status !== feed.previousStatus') i.x-user-status( :class='statusClass(feed.previousStatus)' style='margin-left: 10px; width: 20px; height: 20px') span i.el-icon-right i.x-user-status(:class='statusClass(feed.status)' style='width: 20px; height: 20px') span( v-if='feed.statusDescription !== feed.previousStatusDescription' v-text='feed.statusDescription' style='margin-left: 10px') template(v-else-if='feed.type === "ChangeGroup"') span(style='margin-left: 10px; color: #a3a3a3') ChangeGroup span(v-text='feed.groupName' style='margin-left: 10px') template(v-else-if='feed.type === "ChatBoxMessage"') span(style='margin-left: 10px; color: #a3a3a3') ChatBox span(v-text='feed.text' style='margin-left: 10px; white-space: normal') template(v-else-if='feed.type === "PortalSpawn"') span(style='margin-left: 10px; color: #a3a3a3') PortalSpawn location( :location='feed.location' :hint='feed.worldName' :grouphint='feed.groupName' :link='false' style='margin-left: 10px') template(v-else-if='feed.type === "OnPlayerJoined"') span(style='margin-left: 10px; color: #a3a3a3') has joined span(v-if='feed.platform === "Desktop"' style='color: #409eff; margin-left: 10px') Desktop span(v-else-if='feed.platform === "VR"' style='color: #409eff; margin-left: 10px') VR span(v-else-if='feed.platform === "Quest"' style='color: #67c23a; margin-left: 10px') Quest span(v-else-if='feed.platform === "iOS"' style='color: #c7c7ce; margin-left: 10px') iOS span(v-if='!feed.inCache' style='color: #aaa; margin-left: 10px') #[i.el-icon-download] span(v-text='feed.avatar.name' style='margin-left: 10px') template(v-else-if='feed.type === "SpawnEmoji"') span(style='margin-left: 10px; color: #a3a3a3') SpawnEmoji span(v-text='feed.text' style='margin-left: 10px') span( v-else-if='feed.color === "yellow"' v-text='feed.text' style='color: yellow; margin-left: 10px') span(v-else style='margin-left: 10px; color: #a3a3a3' v-text='feed.text') template(v-if='feed.combo > 1') span.combo(style='margin-left: 10px') x{{ feed.combo }} .hud-timeout(v-if='hudTimeout.length > 0') .hud-timeout-feed div(v-for='feed in hudTimeout') p.item ({{ feed.time }}s) {{ feed.displayName }} svg( version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' xml:space='preserve') path( fill='#ED1B24' d='M68.6,96.5L87,78.1c1.6-1.6,1.6-4.1,0-5.7s-4.1-1.6-5.7,0L62.9,90.9L44.5,72.5l18.4-18.4c1.6-1.6,1.6-4.1,0-5.7c-1.6-1.6-4.1-1.6-5.7,0L38.9,66.8l-6.4-6.4L21.2,71.8C11,82,9.7,97.9,17.4,109.5L0,126.9l8.5,8.5L25.9,118c11.6,7.7,27.5,6.4,37.8-3.8L75,102.9C75,102.9,68.6,96.5,68.6,96.5z') path( fill='#ED1B24' d='M102.9,75l11.3-11.3c10.3-10.3,11.5-26.1,3.8-37.8l17.4-17.4L126.9,0l-17.4,17.4C97.9,9.7,82,11,71.8,21.2L60.5,32.5C102,74,60.8,32.9,102.9,75z') script(src='vendor.js') script(src='vr.js')