app/src/main/java/com/geekorum/ttrss/session/di.kt
author Da Risk <da_risk@geekorum.com>
Wed, 03 Jan 2024 15:26:40 -0400
changeset 1174 731f6ee517b6
parent 943 298742859784
child 1370 13e39ef920a8
permissions -rw-r--r--
update license headers
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
97
746ad528cbd4 ArticlesRepository: use AssistedInject to create Actions
Da Risk <da_risk@geekorum.com>
parents: 32
diff changeset
     1
/*
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     2
 * Geekttrss is a RSS feed reader application on the Android Platform.
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     3
 *
1174
731f6ee517b6 update license headers
Da Risk <da_risk@geekorum.com>
parents: 943
diff changeset
     4
 * Copyright (C) 2017-2024 by Frederic-Charles Barthelery.
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     5
 *
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     6
 * This file is part of Geekttrss.
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     7
 *
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     8
 * Geekttrss is free software: you can redistribute it and/or modify
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
     9
 * it under the terms of the GNU General Public License as published by
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    10
 * the Free Software Foundation, either version 3 of the License, or
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    11
 * (at your option) any later version.
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    12
 *
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    13
 * Geekttrss is distributed in the hope that it will be useful,
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    16
 * GNU General Public License for more details.
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    17
 *
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    18
 * You should have received a copy of the GNU General Public License
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    19
 * along with Geekttrss.  If not, see <http://www.gnu.org/licenses/>.
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    20
 */
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    21
@file:JvmName("Di")
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    22
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    23
package com.geekorum.ttrss.session
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    24
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    25
import android.accounts.Account
778
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    26
import android.accounts.AccountManager
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    27
import android.app.Application
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    28
import com.geekorum.geekdroid.accounts.AccountSelector
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    29
import com.geekorum.ttrss.accounts.NetworkLoginModule
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    30
import com.geekorum.ttrss.accounts.PerAccount
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    31
import com.geekorum.ttrss.articles_list.ArticlesRepository
808
940cc931139e app: refactor SetArticleFieldAction.Factory out of ArticlesRepository
Da Risk <da_risk@geekorum.com>
parents: 778
diff changeset
    32
import com.geekorum.ttrss.articles_list.SetArticleFieldAction
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    33
import com.geekorum.ttrss.network.ApiService
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    34
import dagger.Module
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    35
import dagger.Provides
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    36
import dagger.Subcomponent
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    37
import dagger.hilt.InstallIn
778
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    38
import dagger.hilt.android.components.ActivityRetainedComponent
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    39
import dagger.hilt.components.SingletonComponent
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    40
import dagger.hilt.migration.DisableInstallInCheck
778
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    41
import javax.inject.Singleton
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    42
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    43
/**
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    44
 * Dependency injection pieces for a SessionActivity
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    45
 *
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    46
 * SessionActivity has a SubComponent of the ActivityComponent.
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    47
 * This component is bound to the lifecycle of the activity
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    48
 *
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    49
 * SessionActivity's  provides the selected Account to the component
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    50
 */
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    51
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    52
@Module(subcomponents = [SessionActivityComponent::class])
778
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    53
@InstallIn(ActivityRetainedComponent::class)
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    54
class SessionActivityModule
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    55
778
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    56
@Module
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    57
@InstallIn(SingletonComponent::class)
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    58
object AccountSelectorModule {
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    59
    @Singleton
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    60
    @Provides
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    61
    fun bindsAccountSelector(application: Application, accountManager: AccountManager) =
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    62
        AccountSelector(application, accountManager)
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    63
}
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    64
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    65
@Subcomponent(modules = [
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    66
    NetworkLoginModule::class,
736
5925029e5475 app: various tweask to di
Da Risk <da_risk@geekorum.com>
parents: 731
diff changeset
    67
    SessionAccountModule::class
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    68
])
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    69
@PerAccount
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    70
interface SessionActivityComponent {
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    71
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    72
    val account: Account
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    73
    val apiService: ApiService
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    74
    val articleRepository: ArticlesRepository
808
940cc931139e app: refactor SetArticleFieldAction.Factory out of ArticlesRepository
Da Risk <da_risk@geekorum.com>
parents: 778
diff changeset
    75
    val setArticleFieldActionFactory: SetArticleFieldAction.Factory
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    76
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    77
    @Subcomponent.Factory
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    78
    interface Factory {
731
da6650120fef articles_list: move ArticlesListActivityComponent to SessionActivityComponent
Da Risk <da_risk@geekorum.com>
parents: 729
diff changeset
    79
        fun newComponent(): SessionActivityComponent
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    80
    }
0
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    81
}
14443efede32 Initial commit
Da Risk <da_risk@geekorum.com>
parents:
diff changeset
    82
234
1433bc8a5759 ArticlesList: Inject application preferences
Da Risk <da_risk@geekorum.com>
parents: 210
diff changeset
    83
@Module
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    84
@DisableInstallInCheck
736
5925029e5475 app: various tweask to di
Da Risk <da_risk@geekorum.com>
parents: 731
diff changeset
    85
class SessionAccountModule {
5925029e5475 app: various tweask to di
Da Risk <da_risk@geekorum.com>
parents: 731
diff changeset
    86
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    87
    @Provides
778
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    88
    fun providesAccount(accountSelector: AccountSelector) : Account {
9ea1cc306f72 app: Migrate @ViewModelInject to @HiltViewModel
Da Risk <da_risk@geekorum.com>
parents: 773
diff changeset
    89
        return accountSelector.savedAccount!!
729
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    90
    }
d085123cc622 articles_list: convert activities and fragment to hilt
Da Risk <da_risk@geekorum.com>
parents: 694
diff changeset
    91
}