summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorlalottacontinua <loddatio@posteo.de>2018-06-14 23:05:54 +0200
committerlalottacontinua <loddatio@posteo.de>2018-06-14 23:05:54 +0200
commit2fbf5a2cadabb503306af4a59c1f98596784e488 (patch)
tree831007bd3e2977465b3eaa46774784186ad823f6 /app/src
parent9c2599bda6e1e9809f57610c6450b166016f5a4d (diff)
working version not insecure yet
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java6
-rw-r--r--app/src/main/res/layout/a_add_provider.xml55
-rw-r--r--app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java85
3 files changed, 93 insertions, 53 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
index c2345ec1..168fb02e 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
@@ -33,7 +33,6 @@ import android.widget.ListView;
import com.pedrogomez.renderers.Renderer;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import org.json.JSONException;
import org.json.JSONObject;
@@ -94,6 +93,7 @@ public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity
final private static String SHOW_FAILED_DIALOG = "SHOW FAILED DIALOG";
final private static String REASON_TO_FAIL = "REASON TO FAIL";
final protected static String SERVICES_RETRIEVED = "SERVICES RETRIEVED";
+ final protected static String EXTRAS_KEY_INVALID_URL = "INVALID_URL";
public ProviderAPIResultReceiver providerAPIResultReceiver;
private ProviderAPIBroadcastReceiver providerAPIBroadcastReceiver;
@@ -196,7 +196,7 @@ public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity
} else if (requestCode == REQUEST_CODE_ADD_PROVIDER) {
if (resultCode == RESULT_OK) {
testNewURL = true;
- String newUrl = data.getStringExtra("new_url");
+ String newUrl = data.getStringExtra(AddProviderActivity.EXTRAS_KEY_NEW_URL);
this.provider.setMainUrl(newUrl);
showAndSelectProvider(newUrl);
}
@@ -327,7 +327,7 @@ public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity
testNewURL = false;
FragmentTransaction fragmentTransaction = fragmentManager.removePreviousFragment(NewProviderDialog.TAG);
Intent intent = new Intent(this, AddProviderActivity.class);
- intent.putExtra("invalid_url", url);
+ intent.putExtra(EXTRAS_KEY_INVALID_URL, url);
startActivityForResult(intent, REQUEST_CODE_ADD_PROVIDER);
}
diff --git a/app/src/main/res/layout/a_add_provider.xml b/app/src/main/res/layout/a_add_provider.xml
index 14bf8482..f7ee3254 100644
--- a/app/src/main/res/layout/a_add_provider.xml
+++ b/app/src/main/res/layout/a_add_provider.xml
@@ -2,11 +2,11 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
+ style="@style/BitmaskActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".AddProviderActivity"
android:padding="@dimen/stdpadding"
- style="@style/BitmaskActivity">
+ tools:context=".AddProviderActivity">
<!--Contains header information!??? -->
<include layout="@layout/v_add_provider" />
@@ -15,33 +15,52 @@
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:layout_alignParentEnd="true"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
android:orientation="vertical">
<!-- the header contains the mask-->
<include layout="@layout/v_provider_header" />
- <EditText
- android:id="@+id/textUri"
- android:layout_width="fill_parent"
+ <android.support.design.widget.TextInputLayout
+ android:id="@+id/text_uri_error"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/activity_vertical_margin"
android:hint="@string/new_provider_uri"
- android:inputType="text"
- android:padding="@dimen/stdpadding"/>
- <!-- android:imeOptions="actionSend" => was passieren soll, wenn ok geklickt wird -->
+ app:errorEnabled="true">
+ <android.support.design.widget.TextInputEditText
+ android:id="@+id/text_uri"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:inputType="text" />
- <Button
- android:id="@+id/button_save"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="@string/save" />
+ </android.support.design.widget.TextInputLayout>
- <Button
- android:id="@+id/button_cancel"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:text="@string/cancel" />
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="right"
+ android:orientation="horizontal">
+
+ <Button
+ android:id="@+id/button_cancel"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/cancel" />
+
+ <Button
+ android:id="@+id/button_save"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="@dimen/activity_horizontal_margin"
+ android:layout_marginStart="@dimen/activity_horizontal_margin"
+ android:text="@string/save" />
+ </LinearLayout>
</LinearLayout>
</RelativeLayout>
diff --git a/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java b/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java
index 8c7dcbf5..13e4e06d 100644
--- a/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java
+++ b/app/src/production/java/se/leap/bitmaskclient/AddProviderActivity.java
@@ -2,34 +2,37 @@ package se.leap.bitmaskclient;
import android.content.Intent;
import android.os.Bundle;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.Snackbar;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
-import android.util.Log;
+import android.support.design.widget.TextInputEditText;
+import android.support.design.widget.TextInputLayout;
+import android.text.Editable;
+import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
-import android.widget.EditText;
-import android.widget.Toast;
+
+import butterknife.InjectView;
public class AddProviderActivity extends ConfigWizardBaseActivity {
- private EditText editText;
final public static String TAG = "AddProviderActivity";
+ final public static String EXTRAS_KEY_NEW_URL = "NEW_URL";
+
+ @InjectView(R.id.text_uri_error)
+ TextInputLayout urlError;
+
+ @InjectView(R.id.text_uri)
+ TextInputEditText editUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_add_provider);
- editText = findViewById(R.id.textUri);
if (this.getIntent().getExtras() != null) {
- editText.setText(this.getIntent().getExtras().getString("invalid_url"));
+ editUrl.setText(this.getIntent().getExtras().getString(ProviderListBaseActivity.EXTRAS_KEY_INVALID_URL));
}
final Button saveButton = findViewById(R.id.button_save);
saveButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
- Log.d(TAG, "On Click when save works");
saveProvider();
}
});
@@ -38,44 +41,62 @@ public class AddProviderActivity extends ConfigWizardBaseActivity {
cancelButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
finish();
- //ToDo: Implement this and set testNewURL in ProviderListBaseActivty false!!
- /* Intent intent= new Intent();
- intent.putExtra("new_url", entered_url);
- setResult(RESULT_NOT_OK, intent);
- finish();*/
}
});
+ setUpListeners();
setUpInitialUI();
}
private void setUpInitialUI() {
- //ToDo: find out if needed:
- // setContentView(R.layout.a_provider_list);
setProviderHeaderText(R.string.add_provider);
hideProgressBar();
}
-
private void saveProvider() {
- String entered_url = editText.getText().toString().trim();
- if (!entered_url.startsWith("https://")) {
- if (entered_url.startsWith("http://")) {
- entered_url = entered_url.substring("http://".length());
- }
- entered_url = "https://".concat(entered_url);
- }
- Log.d(TAG, "Behind https addition");
+ String entered_url = getURL();
if (validURL(entered_url)) {
- Log.d(TAG, "URL seems fine");
Intent intent = this.getIntent();
- intent.putExtra("new_url", entered_url);
+ intent.putExtra(EXTRAS_KEY_NEW_URL, entered_url);
setResult(RESULT_OK, intent);
finish();
} else {
- Log.d(TAG, "Bad URL.");
- editText.setText("");
- Toast.makeText(this.getApplicationContext(), R.string.not_valid_url_entered, Toast.LENGTH_LONG).show();
+ editUrl.setText("");
+ urlError.setError(getString(R.string.not_valid_url_entered));
+ }
+ }
+
+ private void setUpListeners() {
+
+ editUrl.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ if (!validURL(getURL())) {
+ urlError.setError(getString(R.string.not_valid_url_entered));
+ } else {
+ urlError.setError(null);
+ }
+ }
+ });
+ }
+
+ private String getURL() {
+ String entered_url = editUrl.getText().toString().trim();
+ if (entered_url.contains("www.")) entered_url = entered_url.replaceFirst("www.", "");
+ if (!entered_url.startsWith("https://")) {
+ if (entered_url.startsWith("http://")) {
+ entered_url = entered_url.substring("http://".length());
+ }
+ entered_url = "https://".concat(entered_url);
}
+ return entered_url;
}
/**