2020-06-28 19:11:39 +02:00
|
|
|
package app.fedilab.fedilabtube;
|
|
|
|
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.text.Html;
|
|
|
|
import android.text.method.LinkMovementMethod;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
import android.view.View;
|
|
|
|
import android.widget.Button;
|
|
|
|
import android.widget.CheckBox;
|
|
|
|
import android.widget.EditText;
|
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
|
|
import androidx.appcompat.app.AlertDialog;
|
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
|
|
2020-06-29 15:43:35 +02:00
|
|
|
import java.util.Arrays;
|
|
|
|
|
2020-06-28 19:11:39 +02:00
|
|
|
import app.fedilab.fedilabtube.asynctasks.CreatePeertubeAccountAsyncTask;
|
|
|
|
import app.fedilab.fedilabtube.client.APIResponse;
|
|
|
|
import app.fedilab.fedilabtube.client.entities.AccountCreation;
|
|
|
|
import app.fedilab.fedilabtube.helper.Helper;
|
|
|
|
import app.fedilab.fedilabtube.interfaces.OnPostStatusActionInterface;
|
|
|
|
import es.dmoral.toasty.Toasty;
|
|
|
|
|
|
|
|
import static android.os.AsyncTask.THREAD_POOL_EXECUTOR;
|
|
|
|
|
|
|
|
public class PeertubeRegisterActivity extends AppCompatActivity implements OnPostStatusActionInterface {
|
|
|
|
|
|
|
|
|
|
|
|
private Button signup;
|
|
|
|
private TextView error_message;
|
|
|
|
private String instance;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
|
|
|
setContentView(R.layout.activity_register_peertube);
|
|
|
|
|
|
|
|
if (getSupportActionBar() != null)
|
|
|
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
|
|
|
|
|
|
|
signup = findViewById(R.id.signup);
|
|
|
|
EditText username = findViewById(R.id.username);
|
|
|
|
EditText email = findViewById(R.id.email);
|
|
|
|
EditText password = findViewById(R.id.password);
|
|
|
|
EditText password_confirm = findViewById(R.id.password_confirm);
|
|
|
|
CheckBox agreement = findViewById(R.id.agreement);
|
|
|
|
error_message = findViewById(R.id.error_message);
|
|
|
|
|
|
|
|
signup.setOnClickListener(view -> {
|
|
|
|
error_message.setVisibility(View.GONE);
|
|
|
|
if (username.getText().toString().trim().length() == 0 || email.getText().toString().trim().length() == 0 ||
|
|
|
|
password.getText().toString().trim().length() == 0 || password_confirm.getText().toString().trim().length() == 0 || !agreement.isChecked()) {
|
|
|
|
Toasty.error(PeertubeRegisterActivity.this, getString(R.string.all_field_filled)).show();
|
|
|
|
return;
|
|
|
|
}
|
2020-06-29 15:43:35 +02:00
|
|
|
|
2020-06-28 19:11:39 +02:00
|
|
|
if (!password.getText().toString().trim().equals(password_confirm.getText().toString().trim())) {
|
|
|
|
Toasty.error(PeertubeRegisterActivity.this, getString(R.string.password_error)).show();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (!android.util.Patterns.EMAIL_ADDRESS.matcher(email.getText().toString().trim()).matches()) {
|
|
|
|
Toasty.error(PeertubeRegisterActivity.this, getString(R.string.email_error)).show();
|
|
|
|
return;
|
|
|
|
}
|
2020-06-29 15:43:35 +02:00
|
|
|
String[] emailArray = email.getText().toString().split("@");
|
2020-06-29 16:43:20 +02:00
|
|
|
if (emailArray.length > 1 && !Arrays.asList(Helper.valideEmails).contains(emailArray[1])) {
|
2020-06-29 15:43:35 +02:00
|
|
|
Toasty.error(PeertubeRegisterActivity.this, getString(R.string.email_error_domain, emailArray[1])).show();
|
|
|
|
return;
|
|
|
|
}
|
2020-06-29 16:43:20 +02:00
|
|
|
|
2020-06-28 19:11:39 +02:00
|
|
|
if (password.getText().toString().trim().length() < 8) {
|
|
|
|
Toasty.error(PeertubeRegisterActivity.this, getString(R.string.password_too_short)).show();
|
|
|
|
return;
|
|
|
|
}
|
2020-06-29 16:43:20 +02:00
|
|
|
if (username.getText().toString().matches("[a-z0-9_]")) {
|
2020-06-28 19:11:39 +02:00
|
|
|
Toasty.error(PeertubeRegisterActivity.this, getString(R.string.username_error)).show();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
signup.setEnabled(false);
|
2020-06-29 16:43:20 +02:00
|
|
|
|
|
|
|
String host = emailArray[1];
|
|
|
|
instance = Helper.getPeertubeUrl(host);
|
2020-06-28 19:11:39 +02:00
|
|
|
AccountCreation accountCreation = new AccountCreation();
|
|
|
|
accountCreation.setEmail(email.getText().toString().trim());
|
|
|
|
accountCreation.setPassword(password.getText().toString().trim());
|
|
|
|
accountCreation.setPasswordConfirm(password_confirm.getText().toString().trim());
|
|
|
|
accountCreation.setUsername(username.getText().toString().trim());
|
|
|
|
new CreatePeertubeAccountAsyncTask(PeertubeRegisterActivity.this, accountCreation, Helper.getPeertubeUrl(instance), PeertubeRegisterActivity.this).executeOnExecutor(THREAD_POOL_EXECUTOR);
|
|
|
|
});
|
|
|
|
|
|
|
|
TextView agreement_text = findViewById(R.id.agreement_text);
|
|
|
|
String tos = getString(R.string.tos);
|
|
|
|
String serverrules = getString(R.string.server_rules);
|
|
|
|
String content_agreement = getString(R.string.agreement_check,
|
2020-06-29 15:43:35 +02:00
|
|
|
"<a href='https://apps.education.fr/cgu#peertube' >" + serverrules + "</a>",
|
|
|
|
"<a href='https://apps.education.fr/bonnes-pratiques/' >" + tos + "</a>"
|
2020-06-28 19:11:39 +02:00
|
|
|
);
|
|
|
|
agreement_text.setMovementMethod(LinkMovementMethod.getInstance());
|
|
|
|
agreement_text.setText(Html.fromHtml(content_agreement));
|
2020-06-29 16:43:20 +02:00
|
|
|
setTitle(R.string.create_an_account);
|
2020-06-28 19:11:39 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onResume() {
|
|
|
|
super.onResume();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onPostStatusAction(APIResponse apiResponse) {
|
|
|
|
if (apiResponse.getError() != null) {
|
|
|
|
String errorMessage;
|
|
|
|
if (apiResponse.getError().getError() != null) {
|
|
|
|
try {
|
|
|
|
String[] resp = apiResponse.getError().getError().split(":");
|
|
|
|
if (resp.length == 2)
|
|
|
|
errorMessage = apiResponse.getError().getError().split(":")[1];
|
|
|
|
else if (resp.length == 3)
|
|
|
|
errorMessage = apiResponse.getError().getError().split(":")[2];
|
|
|
|
else
|
|
|
|
errorMessage = getString(R.string.toast_error);
|
|
|
|
} catch (Exception e) {
|
|
|
|
errorMessage = getString(R.string.toast_error);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
errorMessage = getString(R.string.toast_error);
|
|
|
|
}
|
|
|
|
error_message.setText(errorMessage);
|
|
|
|
error_message.setVisibility(View.VISIBLE);
|
|
|
|
signup.setEnabled(true);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(PeertubeRegisterActivity.this);
|
|
|
|
dialogBuilder.setCancelable(false);
|
|
|
|
dialogBuilder.setPositiveButton(R.string.validate, (dialog, which) -> {
|
|
|
|
dialog.dismiss();
|
|
|
|
finish();
|
|
|
|
});
|
|
|
|
AlertDialog alertDialog = dialogBuilder.create();
|
|
|
|
alertDialog.setTitle(getString(R.string.account_created));
|
2020-06-29 16:43:20 +02:00
|
|
|
alertDialog.setMessage(getString(R.string.account_created_message, apiResponse.getStringData()));
|
2020-06-28 19:11:39 +02:00
|
|
|
alertDialog.show();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
|
if (item.getItemId() == android.R.id.home) {
|
|
|
|
finish();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return super.onOptionsItemSelected(item);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|