package com.suno.android.media.medialibrarysession import android.content.Context import androidx.annotation.OptIn import androidx.media3.common.util.UnstableApi import androidx.media3.session.MediaLibraryService.MediaLibrarySession import com.suno.android.media.CoreMediaPlayback import com.suno.android.media.player.SharedPlayer import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject interface MediaLibrarySessionFactory { fun create(): MediaLibrarySession } class CorePlaybackMediaLibrarySessionFactory @Inject constructor( @ApplicationContext private val context: Context, @CoreMediaPlayback private val sharedPlayer: SharedPlayer, private val mediaCallback: MediaLibrarySession.Callback, ) : MediaLibrarySessionFactory { @OptIn(UnstableApi::class) override fun create(): MediaLibrarySession = MediaLibrarySession.Builder( /* context = */ context, /* player = */ sharedPlayer.getInstance(), /* callback = */ mediaCallback, ).build() }