feat: extract and display membership gift counts in chat messages

This commit is contained in:
Yusuf İpek
2025-10-05 19:13:06 +03:00
parent d2a99639b7
commit f1dd130bc0
4 changed files with 29 additions and 8 deletions
+5 -3
View File
@@ -54,8 +54,8 @@ export default function DashboardPage() {
}, [pollError, overlayStatus]);
const superChats = useMemo(() => messages.filter(m => m.superChat), [messages]);
const newMembers = useMemo(() => messages.filter(m => m.membershipGiftPurchase), [messages]);
const regularMessages = useMemo(() => messages.filter(m => !m.superChat && !m.membershipGift), [messages]);
const newMembers = useMemo(() => messages.filter(m => m.membershipGift || m.membershipGiftPurchase), [messages]);
const regularMessages = useMemo(() => messages.filter(m => !m.superChat && !m.membershipGift && !m.membershipGiftPurchase), [messages]);
return (
<main className="dashboard">
@@ -462,7 +462,9 @@ function MemberItem({ message, isSelected, onSelect }: ChatItemProps) {
<div className="memberItem__info">
<span className="memberItem__author">{message.author}</span>
<span className="memberItem__level">
{message.membershipLevel || 'New member'}
{message.membershipGiftPurchase && message.giftCount
? `Gifted ${message.giftCount} membership${message.giftCount > 1 ? 's' : ''}`
: message.membershipLevel || 'New member'}
</span>
<time className="memberItem__time">{new Date(message.publishedAt).toLocaleTimeString()}</time>
</div>
+7 -3
View File
@@ -89,12 +89,16 @@ export default function OverlayPage() {
💰 {message.superChat.currency}{message.superChat.amount}
</div>
)}
{message.membershipGift && (
{(message.membershipGift || message.membershipGiftPurchase) && (
<div className="overlay__membership">
🎁 New Member!
{message.membershipGiftPurchase && message.giftCount
? `🎁 Gifted ${message.giftCount} Membership${message.giftCount > 1 ? 's' : ''}!`
: message.membershipGiftPurchase
? '🎁 Gift Purchase'
: '🎁 New Member!'}
</div>
)}
{(!message.superChat && !message.membershipGift) && message.text && (
{(!message.superChat && !message.membershipGift && !message.membershipGiftPurchase) && message.text && (
<p className="overlay__text">{message.text}</p>
)}
</div>