Hilt提供网络调用后的依赖



我需要为Storefront API提供一个图形客户端,但我只能在进行网络调用后构建客户端。

@Provides
@Singleton
fun getGraphClient(context: Context, client: Client): GraphClient {
return GraphClient.build(
context = context,
shopDomain = client.shopifyDomain,
accessToken = client.storefrontAccessToken
)
}

我在进行网络调用后如何获得客户端将其传递给hill以返回图形客户端?

我通过手动依赖注入解决了这个问题:


@Module
@InstallIn(SingletonComponent::class)
object AppModule {
var graphClient: GraphClient? = null
fun provideGraphClient(context: Context, client: Client) {
graphClient = GraphClient.build(
context = context,
shopDomain = client.shopifyDomain,
accessToken = client.storefrontAccessToken
)
}
}

然后在API调用

之后
AppModule.provideGraphClient(context, client)

并像这样注入到任何存储库:

class SomeRepositoryImpl @Inject constructor(
@ApplicationContext val applicationContext: Context,
private val graphClient: GraphClient? = AppModule.graphClient
) : SomeRepository {
....
}

最新更新