diff --git a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java
index 5136b096..bd033d42 100644
--- a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java
+++ b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java
@@ -23,6 +23,7 @@ import androidx.appcompat.app.AlertDialog;
import com.tooltip.Tooltip;
import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient;
+import org.mian.gitnex.helpers.NetworkObserver;
import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.helpers.VersionCheck;
import org.mian.gitnex.models.GiteaVersion;
@@ -65,7 +66,7 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
super.onCreate(savedInstanceState);
TinyDB tinyDb = new TinyDB(getApplicationContext());
- boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext());
+ NetworkObserver networkMonitor = new NetworkObserver(this);
loginButton = findViewById(R.id.login_button);
instanceUrlET = findViewById(R.id.instance_url);
@@ -105,30 +106,39 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
info_button.setOnClickListener(infoListener);
- if(!connToInternet) {
+ loginMethod.setOnCheckedChangeListener((group, checkedId) -> {
- Toasty.info(getApplicationContext(), getResources().getString(R.string.checkNetConnection));
- return;
+ if(checkedId == R.id.loginToken) {
- }
+ loginUidET.setVisibility(View.GONE);
+ loginPassword.setVisibility(View.GONE);
+ otpCode.setVisibility(View.GONE);
+ otpInfo.setVisibility(View.GONE);
+ loginTokenCode.setVisibility(View.VISIBLE);
- loginMethod.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
- @Override
- public void onCheckedChanged(RadioGroup group, int checkedId) {
- if(checkedId == R.id.loginUsernamePassword){
- loginUidET.setVisibility(View.VISIBLE);
- loginPassword.setVisibility(View.VISIBLE);
- otpCode.setVisibility(View.VISIBLE);
- otpInfo.setVisibility(View.VISIBLE);
- loginTokenCode.setVisibility(View.GONE);
- } else {
- loginUidET.setVisibility(View.GONE);
- loginPassword.setVisibility(View.GONE);
- otpCode.setVisibility(View.GONE);
- otpInfo.setVisibility(View.GONE);
- loginTokenCode.setVisibility(View.VISIBLE);
- }
}
+ else {
+
+ loginUidET.setVisibility(View.VISIBLE);
+ loginPassword.setVisibility(View.VISIBLE);
+ otpCode.setVisibility(View.VISIBLE);
+ otpInfo.setVisibility(View.VISIBLE);
+ loginTokenCode.setVisibility(View.GONE);
+
+ }
+
+ });
+
+ networkMonitor.onInternetStateListener(isAvailable -> {
+
+ if(isAvailable) {
+ enableProcessButton();
+ }
+ else {
+ disableProcessButton();
+ Toasty.info(getApplicationContext(), getResources().getString(R.string.checkNetConnection));
+ }
+
});
//login_button.setOnClickListener(this);
diff --git a/app/src/main/java/org/mian/gitnex/helpers/NetworkObserver.java b/app/src/main/java/org/mian/gitnex/helpers/NetworkObserver.java
new file mode 100644
index 00000000..6d557f20
--- /dev/null
+++ b/app/src/main/java/org/mian/gitnex/helpers/NetworkObserver.java
@@ -0,0 +1,82 @@
+package org.mian.gitnex.helpers;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.Lifecycle;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
+
+/**
+ * Author M M Arif
+ */
+
+public class NetworkObserver implements LifecycleObserver {
+
+ private ConnectivityManager mConnectivityMgr;
+ private Context mContext;
+ private NetworkStateReceiver mNetworkStateReceiver;
+
+ public interface ConnectionStateListener {
+ void onAvailable(boolean isAvailable);
+ }
+
+ public NetworkObserver(Context context) {
+ mContext = context;
+ mConnectivityMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ ((AppCompatActivity) mContext).getLifecycle().addObserver(this);
+ }
+
+
+ public void onInternetStateListener(ConnectionStateListener listener) {
+
+ mNetworkStateReceiver = new NetworkStateReceiver(listener);
+ IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
+ mContext.registerReceiver(mNetworkStateReceiver, intentFilter);
+
+ }
+
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+ public void onDestroy() {
+
+ ((AppCompatActivity) mContext).getLifecycle().removeObserver(this);
+
+ if (mNetworkStateReceiver != null) {
+ mContext.unregisterReceiver(mNetworkStateReceiver);
+ }
+
+ }
+
+
+ public class NetworkStateReceiver extends BroadcastReceiver {
+
+ ConnectionStateListener mListener;
+
+ public NetworkStateReceiver(ConnectionStateListener listener) {
+ mListener = listener;
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getExtras() != null) {
+ NetworkInfo activeNetworkInfo = mConnectivityMgr.getActiveNetworkInfo();
+
+ if (activeNetworkInfo != null && activeNetworkInfo.getState() == NetworkInfo.State.CONNECTED) {
+
+ mListener.onAvailable(true); // connected
+
+ } else if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) {
+
+ mListener.onAvailable(false); // disconnected
+
+ }
+ }
+ }
+ }
+
+}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 69d2daa1..00ab253e 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -45,20 +45,21 @@
android:background="@drawable/shape_inputs"
android:orientation="vertical">
-
+
+
@@ -129,7 +130,8 @@
android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/hintColor"
android:hint="@string/userName"
- android:inputType="text" />
+ android:inputType="text"
+ android:visibility="gone" />
+ android:inputType="textPassword"
+ android:visibility="gone" />
+ android:inputType="number"
+ android:visibility="gone" />
+ android:visibility="visible" />
+ android:gravity="end"
+ android:visibility="gone" />