package com.suno.android.media.medialibrarysession import androidx.media3.session.MediaLibraryService.MediaLibrarySession import kotlin.reflect.KProperty class SharedMediaLibrarySession( private val sessionFactory: MediaLibrarySessionFactory, ) { private var sessionInstance: MediaLibrarySession? = null fun getInstance(): MediaLibrarySession { sessionInstance?.let { return it } return sessionFactory.create().also { sessionInstance = it } } operator fun getValue( thisRef: Any?, property: KProperty<*>, ): MediaLibrarySession = getInstance() fun releaseInstanceAndPlayer() { sessionInstance?.run { player.release() release() } sessionInstance = null } }