diff --git a/app/build.gradle b/app/build.gradle
index 38b90ba..c5ea66d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -31,6 +31,7 @@ dependencies {
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'io.kategory:kategory:0.3.11'
+ implementation "android.arch.lifecycle:extensions:1.0.0"
}
repositories {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 585c626..263c9e0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,6 +16,7 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/Data.kt b/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/Data.kt
new file mode 100644
index 0000000..de72c10
--- /dev/null
+++ b/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/Data.kt
@@ -0,0 +1,4 @@
+package com.danielecampogiani.androidfunctionalvalidation
+
+
+data class Data(val mail: String, val phone: String)
diff --git a/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/MainActivity.kt b/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/MainActivity.kt
index 0611790..e3abfcd 100644
--- a/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/MainActivity.kt
+++ b/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/MainActivity.kt
@@ -1,12 +1,19 @@
package com.danielecampogiani.androidfunctionalvalidation
-import android.support.v7.app.AppCompatActivity
+import android.content.Intent
import android.os.Bundle
+import android.support.v7.app.AppCompatActivity
+import com.danielecampogiani.androidfunctionalvalidation.option.OptionActivity
+import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
+
+ option_button.setOnClickListener {
+ startActivity(Intent(this, OptionActivity::class.java))
+ }
}
}
diff --git a/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/option/OptionActivity.kt b/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/option/OptionActivity.kt
new file mode 100644
index 0000000..4e23d25
--- /dev/null
+++ b/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/option/OptionActivity.kt
@@ -0,0 +1,43 @@
+package com.danielecampogiani.androidfunctionalvalidation.option
+
+import android.arch.lifecycle.Observer
+import android.arch.lifecycle.ViewModelProviders
+import android.os.Bundle
+import android.support.v7.app.AppCompatActivity
+import android.widget.Toast
+import com.danielecampogiani.androidfunctionalvalidation.Data
+import com.danielecampogiani.androidfunctionalvalidation.R
+import kotlinx.android.synthetic.main.activity_input.*
+
+class OptionActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_input)
+
+ val viewModel = ViewModelProviders.of(this)[OptionViewModel::class.java]
+
+ signup_button.setOnClickListener {
+ viewModel.validate(email.text.toString(), number.text.toString())
+ }
+
+ viewModel.validation.observe(this, Observer {
+ it?.fold(this::handleNone, this::handleSome)
+ })
+
+ }
+
+ private fun handleSome(data: Data) {
+ val message = "Mail: ${data.mail} Phone: ${data.phone}"
+ showMessage(message)
+ }
+
+ private fun handleNone() {
+ val message = getString(R.string.option_wrong)
+ showMessage(message)
+ }
+
+ private fun showMessage(message: String) {
+ Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/option/OptionViewModel.kt b/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/option/OptionViewModel.kt
new file mode 100644
index 0000000..c8a8a90
--- /dev/null
+++ b/app/src/main/java/com/danielecampogiani/androidfunctionalvalidation/option/OptionViewModel.kt
@@ -0,0 +1,23 @@
+package com.danielecampogiani.androidfunctionalvalidation.option
+
+import android.arch.lifecycle.LiveData
+import android.arch.lifecycle.MutableLiveData
+import android.arch.lifecycle.ViewModel
+import com.danielecampogiani.androidfunctionalvalidation.Data
+import kategory.Option
+
+
+class OptionViewModel : ViewModel() {
+
+ private val mutableValidation: MutableLiveData