provideSubscriptionManagerFactory
@Provides
Provide SubscriptionManagerFactory.
Why Factory: SubscriptionManager should NOT be singleton because:
Each instance manages subscription for ONE address
Multiple addresses = multiple SubscriptionManager instances
Lifecycle tied to ViewModel/screen scope, not app scope
Usage in ViewModel:
@HiltViewModel
class BalanceViewModel @Inject constructor(
private val subscriptionManagerFactory: SubscriptionManagerFactory
) : ViewModel() {
fun syncBalance(address: String) {
viewModelScope.launch {
subscriptionManagerFactory.create()
.startSubscription(address)
.collect { state -> ... }
}
}
}Content copied to clipboard