Add recently played to profiles
A play is recorded when a new track starts (pausing and resuming doesn't count; returning after 10+ minutes does). Profiles show the last 10, excluding the track playing now; 50 are kept per user. Recent plays are free on every plan; the paid flag is renamed to fullHistory. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MzFywujuH9TiuXbr9vjoX8
This commit is contained in:
@@ -10,6 +10,7 @@ import { useSession } from '@/lib/session';
|
||||
import { colors, space } from '@/lib/theme';
|
||||
import { Avatar } from './Avatar';
|
||||
import { NowPlayingCard } from './NowPlayingCard';
|
||||
import { RecentPlays } from './RecentPlays';
|
||||
import { Screen } from './Screen';
|
||||
import { TrackCard } from './TrackCard';
|
||||
import { Body, Button, Card, Heading, Row, Title } from './ui';
|
||||
@@ -22,7 +23,9 @@ export function ProfileView({ username, edges }: { username: string; edges?: ('t
|
||||
|
||||
useRealtime(true, (msg) => {
|
||||
if (msg.type === 'now_playing' && profile && msg.data.user.id === profile.user.id) {
|
||||
mutate({ ...profile, nowPlaying: msg.data }, { revalidate: false });
|
||||
// A new track moves the previous one into "Recently played", so refetch; otherwise patch in place.
|
||||
const newTrack = msg.data.track.id !== profile.nowPlaying?.track.id;
|
||||
mutate({ ...profile, nowPlaying: msg.data }, { revalidate: newTrack });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -104,6 +107,8 @@ export function ProfileView({ username, edges }: { username: string; edges?: ('t
|
||||
) : (
|
||||
<Body muted>Nothing playing right now.</Body>
|
||||
)}
|
||||
|
||||
<RecentPlays plays={profile.recent} preferred={me?.preferredService} />
|
||||
</Screen>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user