Skip to content

Commit 9e10989

Browse files
authored
Merge pull request #25 from harutiro/features/6
アーキテクチャを適用
2 parents 3377629 + 46db2fc commit 9e10989

28 files changed

+303
-137
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
### 環境
1414

1515
- IDE:Android Studio Ladybug | 2024.2.1 Patch 3
16-
- Kotlin: 2.0.0
16+
- Kotlin: 2.0.21
1717
- Java:17
1818
- Gradle:8.9
1919
- minSdk:23

app/build.gradle

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ plugins {
55
id 'kotlin-parcelize'
66
id 'androidx.navigation.safeargs.kotlin'
77
id("org.jlleitschuh.gradle.ktlint") version "12.1.2"
8+
id 'com.google.dagger.hilt.android'
89
}
910

1011
android {
@@ -28,11 +29,11 @@ android {
2829
}
2930
}
3031
compileOptions {
31-
sourceCompatibility JavaVersion.VERSION_17
32-
targetCompatibility JavaVersion.VERSION_17
32+
sourceCompatibility JavaVersion.VERSION_1_8
33+
targetCompatibility JavaVersion.VERSION_1_8
3334
}
3435
kotlinOptions {
35-
jvmTarget = '17'
36+
jvmTarget = '1.8'
3637
}
3738
buildFeatures {
3839
viewBinding true
@@ -63,10 +64,16 @@ dependencies {
6364
testImplementation 'junit:junit:4.13.2'
6465
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
6566
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
67+
implementation "com.google.dagger:hilt-android:2.55"
68+
kapt "com.google.dagger:hilt-compiler:2.55"
6669

6770
// Retrofit
6871
implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
6972
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
7073
implementation("com.squareup.retrofit2:retrofit:2.11.0")
7174
implementation("com.squareup.moshi:moshi-kotlin:1.14.0")
7275
}
76+
77+
kapt {
78+
correctErrorTypes true
79+
}

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
android:roundIcon="@mipmap/ic_launcher_round"
1212
android:supportsRtl="true"
1313
android:theme="@style/Theme.AndroidEngineerCodeCheck"
14-
android:fullBackupContent="@xml/backup_descriptor">
14+
android:fullBackupContent="@xml/backup_descriptor"
15+
android:name=".CodeCheckApplication">
1516
<activity
1617
android:name="jp.co.yumemi.android.code_check.TopActivity"
1718
android:exported="true">
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package jp.co.yumemi.android.code_check
2+
3+
import android.app.Application
4+
import dagger.hilt.android.HiltAndroidApp
5+
6+
@HiltAndroidApp
7+
class CodeCheckApplication : Application()
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package jp.co.yumemi.android.code_check
2+
3+
import dagger.Binds
4+
import dagger.Module
5+
import dagger.Provides
6+
import dagger.hilt.InstallIn
7+
import dagger.hilt.components.SingletonComponent
8+
import jp.co.yumemi.android.code_check.features.github.api.GitHubServiceApi
9+
import jp.co.yumemi.android.code_check.features.github.api.GitHubServiceApiImpl
10+
import jp.co.yumemi.android.code_check.features.github.reposiotory.GitHubServiceRepository
11+
import jp.co.yumemi.android.code_check.features.github.reposiotory.GitHubServiceRepositoryImpl
12+
import jp.co.yumemi.android.code_check.features.github.usecase.GitHubServiceUsecase
13+
import jp.co.yumemi.android.code_check.features.github.usecase.GitHubServiceUsecaseImpl
14+
import javax.inject.Singleton
15+
16+
@Module
17+
@InstallIn(SingletonComponent::class)
18+
abstract class GitHubUsecaseModule {
19+
@Singleton
20+
@Binds
21+
abstract fun provideGitHubServiceUsecase(impl: GitHubServiceUsecaseImpl): GitHubServiceUsecase
22+
}
23+
24+
@Module
25+
@InstallIn(SingletonComponent::class)
26+
abstract class GitHubRepositoryModule {
27+
@Singleton
28+
@Binds
29+
abstract fun provideGitHubServiceRepository(impl: GitHubServiceRepositoryImpl): GitHubServiceRepository
30+
31+
companion object {
32+
@Provides
33+
@Singleton
34+
fun provideGitHubServiceApi(): GitHubServiceApi {
35+
return GitHubServiceApiImpl()
36+
}
37+
}
38+
}

app/src/main/kotlin/jp/co/yumemi/android/code_check/RepositorySearchViewModel.kt

Lines changed: 0 additions & 52 deletions
This file was deleted.

app/src/main/kotlin/jp/co/yumemi/android/code_check/TopActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@
44
package jp.co.yumemi.android.code_check
55

66
import androidx.appcompat.app.AppCompatActivity
7+
import dagger.hilt.android.AndroidEntryPoint
78

9+
@AndroidEntryPoint
810
class TopActivity : AppCompatActivity(R.layout.activity_top)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package jp.co.yumemi.android.code_check.core.api
2+
3+
import android.content.Context
4+
import android.net.ConnectivityManager
5+
import android.net.NetworkCapabilities
6+
import dagger.hilt.android.qualifiers.ApplicationContext
7+
import javax.inject.Inject
8+
import javax.inject.Singleton
9+
10+
@Singleton
11+
class NetworkConnectivityService
12+
@Inject
13+
constructor(
14+
@ApplicationContext private val context: Context,
15+
) {
16+
fun isNetworkAvailable(): Boolean {
17+
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
18+
val network = connectivityManager.activeNetwork ?: return false
19+
val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
20+
return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
21+
}
22+
}

app/src/main/kotlin/jp/co/yumemi/android/code_check/RepositoryItem.kt renamed to app/src/main/kotlin/jp/co/yumemi/android/code_check/core/entity/RepositoryItem.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package jp.co.yumemi.android.code_check
1+
package jp.co.yumemi.android.code_check.core.entity
22

33
import android.os.Parcelable
44
import kotlinx.parcelize.Parcelize

app/src/main/kotlin/jp/co/yumemi/android/code_check/RepositoryDetailFragment.kt renamed to app/src/main/kotlin/jp/co/yumemi/android/code_check/core/presenter/detail/RepositoryDetailFragment.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
/*
22
* Copyright © 2021 YUMEMI Inc. All rights reserved.
33
*/
4-
package jp.co.yumemi.android.code_check
4+
package jp.co.yumemi.android.code_check.core.presenter.detail
55

66
import android.os.Bundle
77
import android.view.View
88
import androidx.fragment.app.Fragment
99
import androidx.navigation.fragment.navArgs
1010
import coil.load
11+
import dagger.hilt.android.AndroidEntryPoint
12+
import jp.co.yumemi.android.code_check.R
13+
import jp.co.yumemi.android.code_check.core.entity.RepositoryItem
1114
import jp.co.yumemi.android.code_check.databinding.FragmentRepositoryDetailBinding
1215

16+
@AndroidEntryPoint
1317
class RepositoryDetailFragment : Fragment(R.layout.fragment_repository_detail) {
1418
private val args: RepositoryDetailFragmentArgs by navArgs()
1519

0 commit comments

Comments
 (0)