Skip to content
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
54 changes: 41 additions & 13 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
compileSdkVersion 27
buildToolsVersion "27.0.3"

defaultConfig {
applicationId "io.caster.simplemvp"
minSdkVersion 16
targetSdkVersion 23
targetSdkVersion 27
versionCode 1
versionName "1.0"
}
Expand All @@ -20,16 +22,42 @@ android {
}
}

kotlin {
experimental {
coroutines "enable"
}
}

androidExtensions {
experimental true
}

kapt {
generateStubs true
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.10.19"
implementation fileTree(dir: 'libs', include: ['*.jar'])

// Test dependencies
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.16.0'

// Kotlin dependencies
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlinVer"
implementation "org.jetbrains.anko:anko:$ankoVer"
implementation "org.jetbrains.anko:anko-design:$ankoVer"

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
// Support Library dependencies
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:design:27.1.0'
implementation 'com.android.support:support-v4:27.1.0'

compile 'com.jakewharton:butterknife:7.0.1'
compile 'com.google.dagger:dagger:2.0.2'
apt 'com.google.dagger:dagger-compiler:2.0.2'
provided 'javax.annotation:jsr250-api:1.0'
// Dagger 2 dependencies
implementation 'com.google.dagger:dagger:2.15'
implementation 'com.google.dagger:dagger-android:2.15'
implementation 'com.google.dagger:dagger-android-support:2.15'
kapt 'com.google.dagger:dagger-compiler:2.15'
kapt 'com.google.dagger:dagger-android-processor:2.15'
compileOnly 'javax.annotation:jsr250-api:1.0'
}
13 changes: 0 additions & 13 deletions app/src/androidTest/java/io/caster/simplemvp/ApplicationTest.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package io.caster.simplemvp

import android.app.Application
import android.test.ApplicationTestCase

/**
* [Testing Fundamentals](http://d.android.com/tools/testing/testing_android.html)
*/
class ApplicationTest : ApplicationTestCase<Application>(Application::class.java)
12 changes: 0 additions & 12 deletions app/src/main/java/io/caster/simplemvp/AppComponent.java

This file was deleted.

11 changes: 11 additions & 0 deletions app/src/main/java/io/caster/simplemvp/AppComponent.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.caster.simplemvp

import dagger.Component
import io.caster.simplemvp.view.fragment.UserFragment
import javax.inject.Singleton

@Singleton
@Component(modules = [AppModule::class])
interface AppComponent {
fun inject(target: UserFragment)
}
23 changes: 0 additions & 23 deletions app/src/main/java/io/caster/simplemvp/AppModule.java

This file was deleted.

19 changes: 19 additions & 0 deletions app/src/main/java/io/caster/simplemvp/AppModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package io.caster.simplemvp

import dagger.Module
import dagger.Provides
import io.caster.simplemvp.presentation.UserPresenter
import io.caster.simplemvp.presentation.UserPresenterImpl
import io.caster.simplemvp.repository.InMemoryUserRepositoryImpl
import io.caster.simplemvp.repository.UserRepository
import javax.inject.Singleton

@Module
class AppModule {
@Provides
@Singleton
fun provideUserRepository(): UserRepository = InMemoryUserRepositoryImpl()

@Provides
fun provideUserPresenter(userRepository: UserRepository): UserPresenter = UserPresenterImpl(userRepository)
}
21 changes: 0 additions & 21 deletions app/src/main/java/io/caster/simplemvp/MvpApplication.java

This file was deleted.

14 changes: 14 additions & 0 deletions app/src/main/java/io/caster/simplemvp/MvpApplication.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.caster.simplemvp

import android.app.Application

class MvpApplication : Application() {

var component: AppComponent? = null

override fun onCreate() {
super.onCreate()

component = DaggerAppComponent.builder().appModule(AppModule()).build()
}
}
32 changes: 0 additions & 32 deletions app/src/main/java/io/caster/simplemvp/model/User.java

This file was deleted.

7 changes: 7 additions & 0 deletions app/src/main/java/io/caster/simplemvp/model/User.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package io.caster.simplemvp.model

data class User (
var id: Int = 0,
var firstName: String? = null,
var lastName: String? = null
)

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package io.caster.simplemvp.presentation

import io.caster.simplemvp.view.UserView

interface UserPresenter {
fun loadUserDetails()

fun setView(view: UserView)

fun saveUser()
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package io.caster.simplemvp.presentation

import io.caster.simplemvp.model.User
import io.caster.simplemvp.repository.UserRepository
import io.caster.simplemvp.view.UserView

class UserPresenterImpl(val userRepository: UserRepository) : UserPresenter {

private var view: UserView? = null
private var u: User? = null

override fun loadUserDetails() {
val userId = view!!.userId
u = userRepository.getUser(userId)
if (u == null) {
view!!.showUserNotFoundMessage()
} else {
view!!.displayFirstName(u!!.firstName!!)
view!!.displayLastName(u!!.lastName!!)
}
}

override fun setView(view: UserView) {
this.view = view
loadUserDetails()
}

override fun saveUser() {
if (u != null) {
if (view!!.firstName.trim { it <= ' ' } == "" || view!!.lastName.trim { it <= ' ' } == "") {
view!!.showUserNameIsRequired()
} else {
u!!.firstName = view!!.firstName
u!!.lastName = view!!.lastName
userRepository.save(u!!)
view!!.showUserSavedMessage()
}

}
}
}
Loading