From 2eeee1214f5c358841cc7c49c711d3216a00e0b4 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 8 Sep 2020 09:44:14 +0300 Subject: [PATCH] Signup: add a signup fragment so people can sign up from the app --- .../syncadapter/ui/etebase/SignupFragment.kt | 226 ++++++++++++++++++ .../syncadapter/ui/setup/LoginActivity.kt | 14 +- .../ui/setup/LoginCredentialsFragment.kt | 22 +- app/src/main/res/layout/signup_fragment.xml | 134 +++++++++++ app/src/main/res/values/strings.xml | 6 +- 5 files changed, 375 insertions(+), 27 deletions(-) create mode 100644 app/src/main/java/com/etesync/syncadapter/ui/etebase/SignupFragment.kt create mode 100644 app/src/main/res/layout/signup_fragment.xml diff --git a/app/src/main/java/com/etesync/syncadapter/ui/etebase/SignupFragment.kt b/app/src/main/java/com/etesync/syncadapter/ui/etebase/SignupFragment.kt new file mode 100644 index 00000000..2250849b --- /dev/null +++ b/app/src/main/java/com/etesync/syncadapter/ui/etebase/SignupFragment.kt @@ -0,0 +1,226 @@ +/* + * Copyright © 2013 – 2016 Ricki Hirner (bitfire web engineering). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Public License v3.0 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/gpl.html + */ + +package com.etesync.syncadapter.ui.etebase + +import android.app.Dialog +import android.app.ProgressDialog +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.CheckedTextView +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.Fragment +import androidx.fragment.app.commit +import androidx.fragment.app.viewModels +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.observe +import com.etebase.client.Account +import com.etebase.client.Client +import com.etebase.client.User +import com.etebase.client.exceptions.EtebaseException +import com.etesync.syncadapter.Constants +import com.etesync.syncadapter.HttpClient +import com.etesync.syncadapter.R +import com.etesync.syncadapter.ui.setup.BaseConfigurationFinder +import com.etesync.syncadapter.ui.setup.CreateAccountFragment +import com.etesync.syncadapter.ui.setup.DetectConfigurationFragment +import com.etesync.syncadapter.ui.setup.LoginCredentialsFragment +import com.google.android.material.textfield.TextInputEditText +import com.google.android.material.textfield.TextInputLayout +import net.cachapa.expandablelayout.ExpandableLayout +import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import org.jetbrains.anko.doAsync +import org.jetbrains.anko.uiThread +import java.net.URI +import java.util.concurrent.Future + +class SignupFragment(private val initialUsername: String?, private val initialPassword: String?) : Fragment() { + internal lateinit var editUserName: TextInputLayout + internal lateinit var editEmail: TextInputLayout + internal lateinit var editPassword: TextInputLayout + + internal lateinit var showAdvanced: CheckedTextView + internal lateinit var customServer: TextInputEditText + + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + val v = inflater.inflate(R.layout.signup_fragment, container, false) + + editUserName = v.findViewById(R.id.user_name) + editEmail = v.findViewById(R.id.email) + editPassword = v.findViewById(R.id.url_password) + showAdvanced = v.findViewById(R.id.show_advanced) + customServer = v.findViewById(R.id.custom_server) + + if (savedInstanceState == null) { + editUserName.editText?.setText(initialUsername ?: "") + editPassword.editText?.setText(initialPassword ?: "") + } + + val login = v.findViewById