package com.craigvg.lichun_android.di import android.content.Context import com.craigvg.lichun_android.managers.AnalyticsManager import com.craigvg.lichun_android.managers.BillingManager import com.craigvg.lichun_android.managers.PushNotificationManager import com.craigvg.lichun_android.managers.ToastManager import com.craigvg.lichun_android.network.WebSocketManager import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) object AppModule { @Provides @Singleton fun provideWebSocketManager( @ApplicationContext context: Context, toastManager: ToastManager ): WebSocketManager { return WebSocketManager(context, toastManager) } @Provides @Singleton fun provideBillingManager( @ApplicationContext context: Context, webSocketManager: WebSocketManager ): BillingManager { val billingManager = BillingManager(context) billingManager.onPurchaseConsumed = { productId, purchaseToken -> webSocketManager.sendPurchaseComplete(productId, purchaseToken) } return billingManager } @Provides @Singleton fun providePushNotificationManager( @ApplicationContext context: Context, webSocketManager: WebSocketManager ): PushNotificationManager { val manager = PushNotificationManager(context) manager.onTokenRefresh = { token -> webSocketManager.registerPushToken(token) } return manager } }