Skip to content

Hw4 weather app dagger2 #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: hw3-weather-app-mvvm
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ plugins {
id 'org.jetbrains.kotlin.android'
id 'kotlin-parcelize'
id 'kotlin-kapt'
id 'androidx.navigation.safeargs'
id 'androidx.navigation.safeargs.kotlin'
}

android {
Expand All @@ -24,7 +24,6 @@ android {
dataBinding true
}


buildTypes {
release {
minifyEnabled false
Expand Down Expand Up @@ -90,6 +89,12 @@ dependencies {
debugImplementation "com.squareup.okhttp3:logging-interceptor:$okhttp"
// endregion

def dagger_version = "2.41"
implementation "com.google.dagger:dagger:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"
kapt "com.google.dagger:dagger-android-processor:$dagger_version"

testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.INTERNET" />

<application
android:name=".WeatherApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
Expand All @@ -16,7 +17,7 @@
android:theme="@style/Theme.Androidlab2"
android:usesCleartextTraffic="true">
<activity
android:name=".presentation.activities.MainActivity"
android:name=".presentation.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand Down
19 changes: 19 additions & 0 deletions app/src/main/java/ru/itis/karakurik/androidLab2/WeatherApp.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.itis.karakurik.androidLab2

import android.app.Application
import ru.itis.karakurik.androidLab2.di.AppComponent
import ru.itis.karakurik.androidLab2.di.DaggerAppComponent

class WeatherApp : Application() {

lateinit var appComponent: AppComponent

override fun onCreate() {
super.onCreate()
appComponent = DaggerAppComponent
.builder()
// .context(context = this)
.application(this)
.build()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import ru.itis.karakurik.androidLab2.data.api.response.citiesResponse.CitiesResp
import ru.itis.karakurik.androidLab2.data.api.response.weatherResponse.WeatherResponse

interface Api {

@GET("weather")
suspend fun getWeather(@Query("q") city: String): WeatherResponse

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package ru.itis.karakurik.androidLab2.data.api.mapper

class WeatherIconUrlMapper {
import javax.inject.Inject
import javax.inject.Singleton

@Singleton
class WeatherIconUrlMapper @Inject constructor() {

fun mapToLargeIcon(iconId: String): String {
return "http://openweathermap.org/img/wn/${iconId}@2x.png"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@ package ru.itis.karakurik.androidLab2.data.api.mapper
import ru.itis.karakurik.androidLab2.data.api.response.citiesResponse.City
import ru.itis.karakurik.androidLab2.data.api.response.weatherResponse.WeatherResponse
import ru.itis.karakurik.androidLab2.domain.entity.Weather
import javax.inject.Inject
import javax.inject.Singleton

class WeatherMapper(
@Singleton
class WeatherMapper @Inject constructor(
private val windDegMapper: WindDegMapper,
private val weatherIconUrlMapper: WeatherIconUrlMapper
) {

fun map(weatherResponse: WeatherResponse) : Weather = Weather(
id = weatherResponse.id,
name = weatherResponse.name,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package ru.itis.karakurik.androidLab2.data.api.mapper

import ru.itis.karakurik.androidLab2.domain.enum.WindDeg
import javax.inject.Inject
import javax.inject.Singleton

class WindDegMapper {
@Singleton
class WindDegMapper @Inject constructor() {
fun map(deg: Int) : WindDeg {
return when ((deg / 45 + 2* (deg%45) / 45) * 45 % 360) {
0 -> WindDeg.N
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package ru.itis.karakurik.androidLab2.domain.repository
package ru.itis.karakurik.androidLab2.data.api.repository

import ru.itis.karakurik.androidLab2.BuildConfig
import ru.itis.karakurik.androidLab2.data.api.Api
import ru.itis.karakurik.androidLab2.data.api.mapper.WeatherMapper
import ru.itis.karakurik.androidLab2.domain.entity.Weather
import ru.itis.karakurik.androidLab2.domain.repository.WeatherRepository
import javax.inject.Inject
import javax.inject.Singleton

class WeatherRepositoryImpl(
@Singleton
class WeatherRepositoryImpl @Inject constructor(
private val api: Api,
private val weatherMapper: WeatherMapper
) : WeatherRepository {
Expand Down
37 changes: 37 additions & 0 deletions app/src/main/java/ru/itis/karakurik/androidLab2/di/AppComponent.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package ru.itis.karakurik.androidLab2.di

import dagger.BindsInstance
import dagger.Component
import ru.itis.karakurik.androidLab2.WeatherApp
import ru.itis.karakurik.androidLab2.di.module.AppModule
import ru.itis.karakurik.androidLab2.di.module.NetModule
import ru.itis.karakurik.androidLab2.di.module.RepoModule
import ru.itis.karakurik.androidLab2.di.module.ViewModelModule
import ru.itis.karakurik.androidLab2.presentation.MainActivity
import ru.itis.karakurik.androidLab2.presentation.fragments.cities.SearchFragment
import ru.itis.karakurik.androidLab2.presentation.fragments.weather.DetailsFragment
import javax.inject.Singleton

@Singleton
@Component(
modules = [
AppModule::class,
NetModule::class,
RepoModule::class,
ViewModelModule::class
]
)
interface AppComponent {

fun inject(mainActivity: MainActivity)
fun inject(searchFragment: SearchFragment)
fun inject(detailsFragment: DetailsFragment)

@Component.Builder
interface Builder {
fun build(): AppComponent

@BindsInstance
fun application(application: WeatherApp): Builder
}
}
80 changes: 0 additions & 80 deletions app/src/main/java/ru/itis/karakurik/androidLab2/di/DiContainer.kt

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package ru.itis.karakurik.androidLab2.di.annotation

import javax.inject.Qualifier

@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class ApiKey

@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class Units

@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class Lang

@Qualifier
@Retention(AnnotationRetention.RUNTIME)
annotation class Logger
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ru.itis.karakurik.androidLab2.di.annotation

import dagger.MapKey
import okhttp3.Interceptor
import kotlin.reflect.KClass

@Target(
AnnotationTarget.FUNCTION,
AnnotationTarget.PROPERTY_GETTER,
AnnotationTarget.PROPERTY_SETTER
)
@Retention(AnnotationRetention.RUNTIME)
@MapKey
annotation class InterceptorKey(val value: KClass<out Interceptor>)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package ru.itis.karakurik.androidLab2.di.annotation

import androidx.lifecycle.ViewModel
import dagger.MapKey
import kotlin.reflect.KClass

@Target(
AnnotationTarget.FUNCTION,
AnnotationTarget.PROPERTY_GETTER,
AnnotationTarget.PROPERTY_SETTER
)
@Retention(AnnotationRetention.RUNTIME)
@MapKey
annotation class ViewModelKey(val value: KClass<out ViewModel>)

This file was deleted.

This file was deleted.

This file was deleted.

Loading