Skip to content
Open
Show file tree
Hide file tree
Changes from 4 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,9 @@
package ru.itis.karakurik.androidLab2.data.api.mapper

class WeatherIconUrlMapper {
import javax.inject.Inject

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,13 @@ 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

class WeatherMapper(
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,9 @@
package ru.itis.karakurik.androidLab2.data.api.mapper

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

class WindDegMapper {
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,12 @@
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

class WeatherRepositoryImpl(
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,17 @@
package ru.itis.karakurik.androidLab2.di.annotation

import androidx.lifecycle.ViewModel
import dagger.MapKey
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
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