├── .gitignore
├── .idea
├── codeStyles
│ └── Project.xml
├── encodings.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── LICENSE
├── README.md
├── app
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── tagakov
│ │ └── daggervsgradlemodules
│ │ ├── MainActivity.kt
│ │ ├── NavigationManager.kt
│ │ └── di
│ │ └── ActivityComponent.kt
│ └── res
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable
│ └── ic_launcher_background.xml
│ ├── layout
│ └── activity_main.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ └── values
│ ├── colors.xml
│ ├── strings.xml
│ └── styles.xml
├── build.gradle
├── celebrity-hidden-userapi
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── tagakov
│ │ └── userapi
│ │ └── UserService.kt
│ └── res
│ └── values
│ └── strings.xml
├── celebrity-timelogic
├── build.gradle
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── tagakov
│ │ │ └── timelogic
│ │ │ └── TimelogicBuilderFactory.kt
│ │ └── res
│ │ └── values
│ │ └── strings.xml
├── timelogic-api
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── tagakov
│ │ │ └── timelogic
│ │ │ ├── Time.kt
│ │ │ ├── TimeMachine.kt
│ │ │ └── TimelogicComponent.kt
│ │ └── res
│ │ └── values
│ │ └── strings.xml
└── timelogic-implementation
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── tagakov
│ │ └── timelogic
│ │ ├── TimeMachineImpl.kt
│ │ └── TimelogicComponentImpl.kt
│ └── res
│ └── values
│ └── strings.xml
├── celebrity-timeview
├── build.gradle
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── tagakov
│ │ │ └── timerview
│ │ │ └── ClockView.kt
│ │ └── res
│ │ └── values
│ │ ├── attrs.xml
│ │ └── strings.xml
└── timeview-sample
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── tagakov
│ │ └── timeview
│ │ └── sample
│ │ └── MainActivity.kt
│ └── res
│ ├── drawable-v24
│ └── ic_launcher_foreground.xml
│ ├── drawable
│ └── ic_launcher_background.xml
│ ├── layout
│ └── activity_main.xml
│ ├── mipmap-anydpi-v26
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
│ ├── mipmap-hdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ ├── mipmap-xxxhdpi
│ ├── ic_launcher.png
│ └── ic_launcher_round.png
│ └── values
│ ├── colors.xml
│ ├── strings.xml
│ └── styles.xml
├── common
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── tagakov
│ │ └── common
│ │ ├── BaseFragment.kt
│ │ ├── BindView.kt
│ │ ├── ComponentDependencies.kt
│ │ ├── DisposableExtensions.kt
│ │ ├── ViewExtensions.kt
│ │ └── di
│ │ └── Scopes.kt
│ └── res
│ └── values
│ └── strings.xml
├── feature-startscreen
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── tagakov
│ │ └── startscreen
│ │ ├── StartScreenFragment.kt
│ │ ├── api
│ │ ├── StartScreenDependencies.kt
│ │ ├── StartScreenNavigator.kt
│ │ └── UserNameProvider.kt
│ │ ├── di
│ │ └── StartScreenComponent.kt
│ │ └── presentation
│ │ ├── Presenter.kt
│ │ └── StartScreenView.kt
│ └── res
│ ├── layout
│ └── start_screen.xml
│ └── values
│ └── strings.xml
├── feature-userscreen
├── build.gradle
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── tagakov
│ │ └── userscreen
│ │ ├── UserScreenFragment.kt
│ │ ├── api
│ │ ├── UserScreenDependencies.kt
│ │ └── UserpicLinkProvider.kt
│ │ ├── di
│ │ └── UserScreenComponent.kt
│ │ └── presentation
│ │ ├── Presenter.kt
│ │ └── UserScreenView.kt
│ └── res
│ ├── layout
│ └── user_screen.xml
│ └── values
│ └── strings.xml
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── media
└── DaggerAndGradleModules.png
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the ART/Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | out/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Android Studio Navigation editor temp files
30 | .navigation/
31 |
32 | # Android Studio captures folder
33 | captures/
34 |
35 | # IntelliJ
36 | *.iml
37 | .idea/workspace.xml
38 | .idea/tasks.xml
39 | .idea/gradle.xml
40 | .idea/assetWizardSettings.xml
41 | .idea/dictionaries
42 | .idea/libraries
43 | .idea/caches
44 |
45 | # Keystore files
46 | # Uncomment the following line if you do not want to check your keystore files in.
47 | #*.jks
48 |
49 | # External native build folder generated in Android Studio 2.2 and later
50 | .externalNativeBuild
51 |
52 | # Google Services (e.g. APIs or Firebase)
53 | google-services.json
54 |
55 | # Freeline
56 | freeline.py
57 | freeline/
58 | freeline_project_description.json
59 |
60 | # fastlane
61 | fastlane/report.xml
62 | fastlane/Preview.html
63 | fastlane/screenshots
64 | fastlane/test_output
65 | fastlane/readme.md
66 |
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Vladimir Tagakov
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # modules-and-dagger
2 | Example of convenient usage of dagger2 and gradle modules
3 |
4 | 
5 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'kotlin-android'
3 | apply plugin: 'kotlin-kapt'
4 |
5 | kapt.useBuildCache = true
6 |
7 | android {
8 | compileSdkVersion 27
9 | defaultConfig {
10 | applicationId "com.tagakov.daggervsgradlemodules"
11 | minSdkVersion 21
12 | targetSdkVersion 27
13 | versionCode 1
14 | versionName "1.0"
15 | }
16 |
17 | dexOptions {
18 | javaMaxHeapSize "2g"
19 | preDexLibraries true
20 | incremental true
21 | }
22 | }
23 |
24 | dependencies {
25 | implementation project(":common")
26 | implementation project(":celebrity-hidden-userapi")
27 | implementation project(":celebrity-timelogic")
28 | implementation project(":feature-startscreen")
29 | implementation project(":feature-userscreen")
30 |
31 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
32 | implementation 'com.android.support:appcompat-v7:27.1.1'
33 |
34 | implementation 'com.google.dagger:dagger:2.16'
35 | kapt 'com.google.dagger:dagger-compiler:2.16'
36 |
37 | implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/tagakov/daggervsgradlemodules/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.tagakov.daggervsgradlemodules
2 |
3 | import android.os.Bundle
4 | import android.support.v7.app.AppCompatActivity
5 | import com.tagakov.common.ComponentDependenciesProvider
6 | import com.tagakov.common.HasComponentDependencies
7 | import com.tagakov.daggervsgradlemodules.di.DaggerMainComponent
8 | import com.tagakov.startscreen.StartScreenFragment
9 | import com.tagakov.timelogic.TimelogicComponent
10 | import com.tagakov.timelogic.builder
11 | import javax.inject.Inject
12 |
13 | class MainActivity : AppCompatActivity(), HasComponentDependencies {
14 |
15 | @Inject
16 | override lateinit var dependencies: ComponentDependenciesProvider
17 | protected set
18 |
19 | override fun onCreate(savedInstanceState: Bundle?) {
20 | performInject()
21 | super.onCreate(savedInstanceState)
22 | setContentView(R.layout.activity_main)
23 |
24 | if (savedInstanceState == null) {
25 | supportFragmentManager
26 | .beginTransaction()
27 | .replace(R.id.content, StartScreenFragment())
28 | .commit()
29 | }
30 | }
31 |
32 | private fun performInject() {
33 | DaggerMainComponent.builder()
34 | .bindFragmentManager(supportFragmentManager)
35 | .timelogicComponent(TimelogicComponent.builder().timeSpeed(100f).build())
36 | .build()
37 | .inject(this)
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/java/com/tagakov/daggervsgradlemodules/NavigationManager.kt:
--------------------------------------------------------------------------------
1 | package com.tagakov.daggervsgradlemodules
2 |
3 | import android.support.v4.app.FragmentManager
4 | import com.tagakov.daggervsgradlemodules.di.MainActivityScope
5 | import com.tagakov.startscreen.api.StartScreenNavigator
6 | import com.tagakov.userscreen.UserScreenFragment
7 | import javax.inject.Inject
8 |
9 | @MainActivityScope
10 | class NavigationManager @Inject constructor(private val fragmentManager: FragmentManager): StartScreenNavigator {
11 | override fun goToUserScreen() {
12 | fragmentManager.beginTransaction()
13 | .replace(R.id.content, UserScreenFragment())
14 | .addToBackStack(null)
15 | .commit()
16 | }
17 |
18 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/tagakov/daggervsgradlemodules/di/ActivityComponent.kt:
--------------------------------------------------------------------------------
1 | package com.tagakov.daggervsgradlemodules.di
2 |
3 | import android.support.v4.app.FragmentManager
4 | import com.tagakov.common.ComponentDependencies
5 | import com.tagakov.common.ComponentDependenciesKey
6 | import com.tagakov.common.di.Rx
7 | import com.tagakov.daggervsgradlemodules.MainActivity
8 | import com.tagakov.daggervsgradlemodules.NavigationManager
9 | import com.tagakov.startscreen.api.StartScreenDependencies
10 | import com.tagakov.startscreen.api.StartScreenNavigator
11 | import com.tagakov.startscreen.api.UserNameProvider
12 | import com.tagakov.timelogic.TimelogicComponent
13 | import com.tagakov.userapi.UserService
14 | import com.tagakov.userscreen.api.UserScreenDependencies
15 | import com.tagakov.userscreen.api.UserpicLinkProvider
16 | import dagger.Binds
17 | import dagger.BindsInstance
18 | import dagger.Component
19 | import dagger.Provides
20 | import dagger.multibindings.IntoMap
21 | import io.reactivex.android.schedulers.AndroidSchedulers
22 | import javax.inject.Scope
23 |
24 | @Scope
25 | @Retention(AnnotationRetention.SOURCE)
26 | annotation class MainActivityScope
27 |
28 | @MainActivityScope
29 | @Component(
30 | modules = [BindingsModule::class, Module::class, ComponentDependenciesModule::class],
31 | dependencies = [TimelogicComponent::class]
32 | )
33 | internal interface MainComponent : StartScreenDependencies, UserScreenDependencies {
34 | fun inject(mainActivity: MainActivity)
35 |
36 | @Component.Builder
37 | interface Builder {
38 | fun timelogicComponent(timelogicComponent: TimelogicComponent): Builder
39 | @BindsInstance
40 | fun bindFragmentManager(manager: FragmentManager): Builder
41 | fun build(): MainComponent
42 | }
43 | }
44 |
45 | @dagger.Module
46 | private object Module {
47 | @Provides
48 | @JvmStatic
49 | @MainActivityScope
50 | fun provideUserService() = UserService()
51 |
52 | @Provides
53 | @JvmStatic
54 | fun provideUserNameProvider(userService: UserService) = object : UserNameProvider {
55 | override val userName: String
56 | get() = userService.getUser().run { "$firstName $lastName" }
57 | }
58 |
59 | @Provides
60 | @JvmStatic
61 | fun provideUserpicLinkProvider(userService: UserService) = object : UserpicLinkProvider {
62 | override val userpic: String
63 | get() = userService.getUser().userpic
64 | }
65 |
66 | @Provides
67 | @JvmStatic
68 | @Rx.MainScheduler
69 | fun provideMainScheduler() = AndroidSchedulers.mainThread()
70 | }
71 |
72 | @dagger.Module
73 | private abstract class BindingsModule {
74 | @Binds
75 | abstract fun provideStartScreenNavigator(navigationManager: NavigationManager): StartScreenNavigator
76 |
77 | }
78 |
79 | @dagger.Module
80 | private abstract class ComponentDependenciesModule private constructor() {
81 | @Binds @IntoMap @ComponentDependenciesKey(StartScreenDependencies::class)
82 | abstract fun provideStartScreenDependencies(component: MainComponent): ComponentDependencies
83 |
84 | @Binds @IntoMap @ComponentDependenciesKey(UserScreenDependencies::class)
85 | abstract fun provideUserScreenDependencies(component: MainComponent): ComponentDependencies
86 | }
87 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
16 |
21 |
26 |
31 |
36 |
41 |
46 |
51 |
56 |
61 |
66 |
71 |
76 |
81 |
86 |
91 |
96 |
101 |
106 |
111 |
116 |
121 |
126 |
131 |
136 |
141 |
146 |
151 |
156 |
161 |
166 |
171 |
172 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Tagakov/modules-and-dagger/cdb03cb8a312d7fb5675b6b6e3cbbdf2e7157234/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Dagger with Gradle Modules
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | ext.kotlin_version = '1.2.50'
5 | repositories {
6 | google()
7 | jcenter()
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.1.3'
11 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | google()
18 | jcenter()
19 | }
20 | }
21 |
22 | task clean(type: Delete) {
23 | delete rootProject.buildDir
24 | }
25 |
--------------------------------------------------------------------------------
/celebrity-hidden-userapi/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 |
4 | android {
5 | compileSdkVersion 27
6 |
7 | defaultConfig {
8 | minSdkVersion 21
9 | targetSdkVersion 27
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 | }
14 |
15 | dependencies {
16 | implementation 'com.android.support:appcompat-v7:27.1.1'
17 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/celebrity-hidden-userapi/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/celebrity-hidden-userapi/src/main/java/com/tagakov/userapi/UserService.kt:
--------------------------------------------------------------------------------
1 | package com.tagakov.userapi
2 |
3 | data class User(val firstName: String, val lastName: String, val userpic: String)
4 |
5 | class UserService {
6 | fun getUser(): User {
7 | return User("John", "Doe", "https://picsum.photos/300/?random")
8 | }
9 | }
--------------------------------------------------------------------------------
/celebrity-hidden-userapi/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | User Api
3 |
4 |
--------------------------------------------------------------------------------
/celebrity-timelogic/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 |
4 | android {
5 | compileSdkVersion 27
6 |
7 | defaultConfig {
8 | minSdkVersion 21
9 | targetSdkVersion 27
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 | }
14 |
15 | dependencies {
16 | api project(':celebrity-timelogic:timelogic-api')
17 | implementation project(':celebrity-timelogic:timelogic-implementation')
18 |
19 | implementation 'com.android.support:appcompat-v7:27.1.1'
20 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/celebrity-timelogic/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/celebrity-timelogic/src/main/java/com/tagakov/timelogic/TimelogicBuilderFactory.kt:
--------------------------------------------------------------------------------
1 | package com.tagakov.timelogic
2 |
3 | fun TimelogicComponent.Companion.builder(): TimelogicComponent.Builder {
4 | return DaggerTimelogicComponentImpl.builder()
5 | }
--------------------------------------------------------------------------------
/celebrity-timelogic/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Time Logic
3 |
4 |
--------------------------------------------------------------------------------
/celebrity-timelogic/timelogic-api/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'kotlin-android'
3 |
4 | android {
5 | compileSdkVersion 27
6 |
7 | defaultConfig {
8 | minSdkVersion 21
9 | targetSdkVersion 27
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 | }
14 |
15 | dependencies {
16 | api 'io.reactivex.rxjava2:rxjava:2.1.15'
17 |
18 | implementation 'com.android.support:appcompat-v7:27.1.1'
19 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/celebrity-timelogic/timelogic-api/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
--------------------------------------------------------------------------------
/celebrity-timelogic/timelogic-api/src/main/java/com/tagakov/timelogic/Time.kt:
--------------------------------------------------------------------------------
1 | package com.tagakov.timelogic
2 |
3 | data class Time(val hours: Int, val minutes: Int)
--------------------------------------------------------------------------------
/celebrity-timelogic/timelogic-api/src/main/java/com/tagakov/timelogic/TimeMachine.kt:
--------------------------------------------------------------------------------
1 | package com.tagakov.timelogic
2 |
3 | import io.reactivex.Observable
4 |
5 | interface TimeMachine {
6 | fun timeline(): Observable