Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <---------------------------------------------activity_register.xml------------------------------------------------------->
- <?xml version="1.0" encoding="utf-8"?>
- <layout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- xmlns:app="http://schemas.android.com/apk/res-auto">
- <data xmlns:android="http://schemas.android.com/apk/res/android">
- <variable
- name="viewmodel"
- type="tv.myproject.app.ui.auth.RegisterViewModel" />
- </data>
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/coordinatorLayout"
- tools:context=".activity.RegisterActivity"
- android:background="@drawable/auth_bg">
- <TextView
- android:layout_width="153dp"
- android:layout_height="20dp"
- android:id="@+id/textView"
- android:textAppearance="@style/TextAppearance.AppCompat.Display2" android:textSize="18sp"
- android:textColor="@android:color/white" android:gravity="center"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- android:textAllCaps="true" android:text="create id"
- app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintVertical_bias="0.045"
- android:layout_marginTop="8dp" app:layout_constraintTop_toTopOf="parent"/>
- <EditText
- android:hint="@string/user_name"
- android:layout_width="342dp"
- android:backgroundTint="#40FFFFFF"
- android:textColorHint="#99FFFFFF"
- android:layout_height="wrap_content"
- android:inputType="text"
- android:ems="10"
- android:id="@+id/user_name"
- android:textColor="@android:color/white"
- android:selectAllOnFocus="true" android:gravity="center" android:textSize="16sp"
- android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
- android:layout_marginLeft="8dp" android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent"
- android:layout_marginRight="8dp"
- android:paddingBottom="24dp"
- app:layout_constraintTop_toBottomOf="@+id/textView"
- app:layout_constraintHorizontal_bias="0.509"
- android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent"
- android:layout_marginBottom="8dp" app:layout_constraintVertical_bias="0.027"/>
- <EditText
- android:hint="@string/password"
- android:text="@={viewmodel.password}"
- android:onTextChanged="@{viewmodel::onPasswordChanged}"
- android:layout_width="342dp"
- android:backgroundTint="#40FFFFFF"
- android:textColorHint="#99FFFFFF"
- android:layout_height="wrap_content"
- android:inputType="textPassword"
- android:ems="10"
- android:id="@+id/password"
- android:textColor="@android:color/white"
- android:selectAllOnFocus="true" android:gravity="center" android:textSize="16sp"
- android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
- android:layout_marginLeft="8dp" android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent"
- android:layout_marginRight="8dp"
- android:paddingBottom="24dp"
- app:layout_constraintHorizontal_bias="0.509" android:layout_marginTop="50dp"
- app:layout_constraintTop_toTopOf="@+id/user_name"/>
- <EditText
- android:hint="@string/email_address"
- android:text="@{viewmodel.email}"
- android:error="@{viewmodel.errorMessage}"
- android:onTextChanged="@{viewmodel::onEmailChanged}"
- android:layout_width="342dp"
- android:backgroundTint="#40FFFFFF"
- android:textColorHint="#99FFFFFF"
- android:layout_height="wrap_content"
- android:inputType="textEmailAddress"
- android:ems="10"
- android:id="@+id/email_address"
- android:textColor="@android:color/white"
- android:selectAllOnFocus="true" android:gravity="center" android:textSize="16sp"
- android:layout_marginStart="8dp" app:layout_constraintStart_toStartOf="parent"
- android:layout_marginLeft="8dp" android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent"
- android:layout_marginRight="8dp"
- android:paddingBottom="24dp"
- android:layout_marginTop="50dp" app:layout_constraintTop_toTopOf="@+id/password"/>
- <TextView
- android:text="@string/by_registering"
- android:autoLink="all"
- android:linksClickable="true"
- android:onClick="redirectToRegister"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/privacy_and_terms"
- android:textAppearance="@style/TextAppearance.AppCompat.Display2"
- android:textColor="@android:color/white"
- android:textSize="16sp" android:gravity="center"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.496"
- app:layout_constraintTop_toBottomOf="@+id/email_address"
- android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintVertical_bias="0.104"/>
- <Button
- android:text="create account"
- android:layout_width="335dp"
- android:layout_height="45dp"
- android:id="@+id/register"
- android:onClick="@{()->viewmodel.register()}"
- android:enabled="@{viewmodel.btnSelected}"
- android:background="@drawable/auth_button"
- android:textAppearance="@style/TextAppearance.AppCompat.Display2" android:textSize="18sp"
- android:textAllCaps="true" android:textColor="@android:color/white" android:layout_marginStart="8dp"
- app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
- android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent"
- android:layout_marginRight="8dp" android:layout_marginBottom="8dp"
- app:layout_constraintBottom_toBottomOf="parent"
- android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/constraintLayout3"
- app:layout_constraintVertical_bias="0.088"/>
- <ImageView
- android:onClick="closeWindow"
- android:layout_width="15dp"
- android:layout_height="15dp" app:srcCompat="@drawable/close_icon"
- android:id="@+id/close_button"
- android:layout_marginTop="30dp" app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"
- android:layout_marginRight="16dp" app:layout_constraintStart_toStartOf="parent"
- android:layout_marginLeft="8dp" android:layout_marginStart="8dp" android:layout_marginBottom="8dp"
- app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.981"
- app:layout_constraintVertical_bias="0.018"/>
- <androidx.constraintlayout.widget.ConstraintLayout
- android:layout_width="wrap_content"
- android:layout_height="28dp"
- app:layout_constraintTop_toBottomOf="@+id/privacy_and_terms"
- app:layout_constraintStart_toStartOf="parent" android:layout_marginLeft="8dp"
- android:layout_marginStart="8dp" app:layout_constraintEnd_toEndOf="parent"
- android:layout_marginEnd="8dp" android:layout_marginRight="8dp" android:id="@+id/constraintLayout3">
- <TextView
- android:text="@string/privacy_policy"
- android:onClick="openPrivacyLink"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/privacy_policy"
- android:textAppearance="@style/TextAppearance.AppCompat.Display2" android:textSize="16sp"
- android:textColor="@android:color/white" app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toStartOf="@+id/terms_of_use"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toBottomOf="parent"/>
- <TextView
- android:text="@string/terms_of_use"
- android:onClick="openTermsLink"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/terms_of_use"
- android:textAppearance="@style/TextAppearance.AppCompat.Display2" android:textSize="16sp"
- android:textColor="@android:color/white" app:layout_constraintStart_toEndOf="@+id/privacy_policy"
- android:layout_marginStart="5dp" android:layout_marginLeft="5dp"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- app:layout_constraintBottom_toBottomOf="parent"/>
- </androidx.constraintlayout.widget.ConstraintLayout>
- </androidx.constraintlayout.widget.ConstraintLayout>
- </layout>
- <---------------------------------------------RegisterViewModel.kt------------------------------------------------------->
- package tv.myproject.app.ui.auth
- import android.util.Log
- import androidx.databinding.ObservableBoolean
- import androidx.databinding.ObservableField
- import androidx.lifecycle.ViewModel
- import kotlinx.coroutines.*
- import tv.myproject.app.api.HotpotAPI
- import tv.myproject.app.api.HotpotRepository
- import tv.myproject.app.util.Util
- import kotlin.coroutines.CoroutineContext
- class RegisterViewModel : ViewModel() {
- private val parentJob = Job()
- private val coroutineContext: CoroutineContext
- get() = parentJob + Dispatchers.Default
- private val scope = CoroutineScope(coroutineContext)
- private val repository : HotpotRepository= HotpotRepository(HotpotAPI.api)
- var authToken: String? = "no token"
- var userId: Long? = null
- // binding stuff
- var btnSelected: ObservableBoolean? = ObservableBoolean(false)
- var email: ObservableField<String>? = ObservableField("")
- var password: ObservableField<String>? = ObservableField("")
- var errorMessage: ObservableField<String>? = ObservableField("")
- // end of binding stuff
- //functions checking to disable button
- fun onEmailChanged(s: CharSequence, start: Int, befor: Int, count: Int) {
- btnSelected?.set(Util.isEmailValid(s.toString()) && password?.get()!!.length >= 8)
- if(s.toString().length < 8){
- errorMessage?.set("Too short input")
- }
- email?.set(s.toString())
- }
- fun onPasswordChanged(s: CharSequence, start: Int, befor: Int, count: Int) {
- btnSelected?.set(Util.isEmailValid(email?.get()!!) && s.toString().length >= 8)
- }
- fun register(){
- val handler = CoroutineExceptionHandler { _, exception ->
- println("Caught $exception")
- }
- scope.launch(handler) {
- val res = repository.userRegister("test${Math.random() * 1000000}@foo.com", "testtest")
- res?.run {
- authToken = token
- userId = user.id
- }
- }
- }
- fun cancelAllRequests() = coroutineContext.cancel()
- }
- <---------------------------------------------RegisterActivity.kt------------------------------------------------------->
- package tv.myproject.app.activity
- import android.content.Intent
- import android.content.res.Resources
- import android.net.Uri
- import android.os.Bundle
- import android.view.View
- import android.widget.TextView
- import androidx.appcompat.app.AlertDialog
- import androidx.databinding.DataBindingUtil
- import androidx.lifecycle.ViewModelProviders
- import tv.myproject.app.DatePickerFragment
- import tv.myproject.app.databinding.ActivityRegisterBinding
- import tv.myproject.app.ui.auth.RegisterViewModel
- class RegisterActivity : BaseActivityFullscreen() {
- var binding: ActivityRegisterBinding? = null
- var viewmodel: RegisterViewModel? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = DataBindingUtil.setContentView(this, tv.myproject.app.R.layout.activity_register)
- viewmodel = ViewModelProviders.of(this).get(RegisterViewModel::class.java)
- binding?.viewmodel = viewmodel
- }
- fun openTermsLink(view:View) {
- val url = "https://stackoverflow.com/" //TODO: change to appropriate link
- val i = Intent(Intent.ACTION_VIEW)
- i.data = Uri.parse(url)
- startActivity(i)
- }
- fun openPrivacyLink(view:View) {
- val url = "https://github.com/" //TODO: change to appropriate link
- val i = Intent(Intent.ACTION_VIEW)
- i.data = Uri.parse(url)
- startActivity(i)
- }
- fun closeWindow(view:View) {
- val loginIntent = Intent(this, LoginActivity::class.java)
- startActivity(loginIntent)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement