11import { asyncDebounce } from "@inrixia/helpers" ;
2- import { MediaItem , PlayState } from "@luna/lib" ;
2+ import { MediaItem , PlayState , redux } from "@luna/lib" ;
33
44import type { SetActivity } from "@xhayper/discord-rpc" ;
55import { setActivity } from "./discord.native" ;
@@ -18,28 +18,48 @@ export const updateActivity = asyncDebounce(async (mediaItem?: MediaItem) => {
1818 mediaItem ??= await MediaItem . fromPlaybackContext ( ) ;
1919 if ( mediaItem === undefined ) return ;
2020
21+ const { sourceUrl, sourceEntityType } = redux . store . getState ( ) . playQueue ;
22+
2123 const activity : SetActivity = { type : 2 } ; // Listening type
2224
25+ const trackUrl = `https://tidal.com/browse/${ mediaItem . tidalItem . contentType } /${ mediaItem . id } ?u`
26+ const trackSourceUrl = `https://tidal.com/browse${ sourceUrl } ` ;
27+
2328 activity . buttons = [
2429 {
25- url : `https://tidal.com/browse/ ${ mediaItem . tidalItem . contentType } / ${ mediaItem . id } ?u` ,
30+ url : trackUrl ,
2631 label : "Play Song" ,
27- } ,
32+ }
2833 ] ;
2934
35+ if ( sourceEntityType === "playlist" && settings . displayPlaylistButton ) {
36+ activity . buttons . push ( {
37+ url : trackSourceUrl ,
38+ label : "Playlist" ,
39+ } ) ;
40+ }
41+
42+ const artist = await mediaItem . artist ( ) ;
43+ const artistUrl = `https://tidal.com/browse/artist/${ artist ?. id } ?u` ;
44+
45+ // Status text
46+ activity . statusDisplayType = settings . status ;
47+
3048 // Title
3149 activity . details = await mediaItem . title ( ) . then ( fmtStr ) ;
50+ activity . detailsUrl = trackUrl ;
3251 // Artists
3352 const artistNames = await MediaItem . artistNames ( await mediaItem . artists ( ) ) ;
3453 activity . state = fmtStr ( artistNames . join ( ", " ) ) ?? "Unknown Artist" ;
54+ activity . stateUrl = artistUrl ;
3555
3656 // Pause indicator
3757 if ( PlayState . playing ) {
3858 // Small Artist image
3959 if ( settings . displayArtistIcon ) {
40- const artist = await mediaItem . artist ( ) ;
4160 activity . smallImageKey = artist ?. coverUrl ( "320" ) ;
4261 activity . smallImageText = fmtStr ( artist ?. name ) ;
62+ activity . smallImageUrl = artistUrl ;
4363 }
4464
4565 // Playback/Time
@@ -58,6 +78,7 @@ export const updateActivity = asyncDebounce(async (mediaItem?: MediaItem) => {
5878 if ( album ) {
5979 activity . largeImageKey = album . coverUrl ( ) ;
6080 activity . largeImageText = await album . title ( ) . then ( fmtStr ) ;
81+ activity . largeImageUrl = `https://tidal.com/browse/album/${ album . id } ?u` ;
6182 }
6283
6384 await setActivity ( activity ) ;
0 commit comments