diff --git a/app/src/main/java/de/sebse/fuplanner/MainActivity.java b/app/src/main/java/de/sebse/fuplanner/MainActivity.java index 6108cc6..b2cd54b 100644 --- a/app/src/main/java/de/sebse/fuplanner/MainActivity.java +++ b/app/src/main/java/de/sebse/fuplanner/MainActivity.java @@ -48,7 +48,6 @@ import de.sebse.fuplanner.tools.network.NetworkErrorCallback; public class MainActivity extends AppCompatActivity implements MainActivityListener, KVVListener, NavigationView.OnNavigationItemSelectedListener, - LoginFragment.OnLoginFragmentInteractionListener, ModulesFragment.OnModulesFragmentInteractionListener, CanteensFragment.OnCanteensFragmentInteractionListener { @@ -102,7 +101,10 @@ public class MainActivity extends AppCompatActivity mNavigationView.setNavigationItemSelectedListener(this); mFragmentManager = getSupportFragmentManager(); - getNewKVV().account().doOfflineLogin(); + if (!getNewKVV().account().restoreOnlineLogin()) { + desiredPage = FRAGMENT_LOGIN; + desiredData = ""; + } updateNavigation(); changeFragment(desiredPage, desiredData); } @@ -492,12 +494,6 @@ public class MainActivity extends AppCompatActivity - @Override - public void onLoginFragmentInteraction(LoginToken loginToken, boolean onlineMode) { - int fragment = getDefaultFragmentAfterLogin(); - toLoginState(loginToken.getFullName(), loginToken.getEmail(), fragment, "", onlineMode); - } - @Override public void onModulesFragmentInteraction(final String itemID) { changeFragment(FRAGMENT_MODULES_DETAILS, itemID); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/CanteensFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/CanteensFragment.java index c7d206d..9eee7a8 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/CanteensFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/CanteensFragment.java @@ -70,8 +70,8 @@ public class CanteensFragment extends Fragment { CanteenBrowser browser = ((MainActivity) getActivity()).getCanteenBrowser(); browser.getCanteens(success -> { adapter.setCanteens(success); - if (mMainActivityListener != null) - mMainActivityListener.refreshNavigation(); + //if (mMainActivityListener != null) + // mMainActivityListener.refreshNavigation(); swipeLayout.setRefreshing(false); }, error -> { log.e(error.toString()); diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/LoginFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/LoginFragment.java index f063748..2bbbb92 100644 --- a/app/src/main/java/de/sebse/fuplanner/fragments/LoginFragment.java +++ b/app/src/main/java/de/sebse/fuplanner/fragments/LoginFragment.java @@ -9,31 +9,21 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; -import java.io.IOException; - import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import de.sebse.fuplanner.MainActivity; import de.sebse.fuplanner.R; -import de.sebse.fuplanner.services.GoogleAuth.GoogleAuth; -import de.sebse.fuplanner.services.KVV.KVV; -import de.sebse.fuplanner.services.KVV.types.LoginToken; -import de.sebse.fuplanner.services.KVV.types.Modules; import de.sebse.fuplanner.tools.MainActivityListener; import de.sebse.fuplanner.tools.logging.Logger; /** * A simple {@link Fragment} subclass. - * Activities that contain this fragment must implement the - * {@link LoginFragment.OnLoginFragmentInteractionListener} interface - * to handle interaction events. * Use the {@link LoginFragment#newInstance} factory method to * create an instance of this fragment. */ public class LoginFragment extends Fragment { - private OnLoginFragmentInteractionListener mListener; private final Logger log = new Logger(this); - private MainActivityListener mActivityListener; + @Nullable private MainActivityListener mActivityListener; public LoginFragment() { // Required empty public constructor @@ -57,21 +47,11 @@ public class LoginFragment extends Fragment { Bundle savedInstanceState) { // Inflate the layout for this fragment View v = inflater.inflate(R.layout.fragment_login, container, false); - try { - Context context = getContext(); - if (context != null) { - Modules modules = Modules.load(context); - if (modules != null) { - Button offline_btn = v.findViewById(R.id.btn_offline); - offline_btn.setVisibility(View.VISIBLE); - offline_btn.setText(v.getResources().getString(R.string.enter_offline_mode, modules.getToken().getUsername())); - offline_btn.setOnClickListener(v1 -> mListener.onLoginFragmentInteraction(modules.getToken(), false)); - } - } - } catch (IOException e) { - e.printStackTrace(); - } catch (ClassNotFoundException e) { - e.printStackTrace(); + if (mActivityListener != null && mActivityListener.getNewKVV().modules().list().stored()) { + Button offline_btn = v.findViewById(R.id.btn_offline); + offline_btn.setVisibility(View.VISIBLE); + offline_btn.setText(v.getResources().getString(R.string.enter_offline_mode, mActivityListener.getNewKVV().modules().list().getUsername())); + offline_btn.setOnClickListener(v1 -> mActivityListener.getNewKVV().account().doOfflineLogin()); } View btn_login = v.findViewById(R.id.btn_login); @@ -84,40 +64,29 @@ public class LoginFragment extends Fragment { EditText input_usr = ((View) view.getParent()).findViewById(R.id.input_username); EditText input_pwd = ((View) view.getParent()).findViewById(R.id.input_password); - if (input_usr != null) { - if (input_pwd != null) { - if (LoginFragment.this.getActivity() == null) { - log.e("Login fragment has no activity!"); - return; + + String username = input_usr.getText().toString(); + String password = input_pwd.getText().toString(); + + mActivityListener.getNewKVV().account().doOnlineLogin(username, password, success -> { + progressDialog.dismiss(); + mActivityListener.getGoogleAuth().setLoginState(username, password); + input_usr.setError(null); + input_pwd.setError(null); + }, error -> { + progressDialog.dismiss(); + // Invalid password + if (mActivityListener != null) { + if (error.getCode() == 100131) { + mActivityListener.showToast(R.string.invalid_credentials); + input_usr.setError(input_usr.getResources().getString(R.string.invalid_credentials)); + input_pwd.setError(input_pwd.getResources().getString(R.string.invalid_credentials)); + } else { + mActivityListener.showToast(v.getResources().getString(R.string.error_occurred_code, error.getCode())); } - String username = input_usr.getText().toString(); - String password = input_pwd.getText().toString(); - KVV kvv = ((MainActivity) getActivity()).getKVV(); - GoogleAuth gauth = ((MainActivity) getActivity()).getGoogleAuth(); - kvv.login(username, password, success -> { - progressDialog.dismiss(); - gauth.setLoginState(username, password); - if (mListener != null) { - input_usr.setError(null); - input_pwd.setError(null); - mListener.onLoginFragmentInteraction(success, true); - } - }, error -> { - progressDialog.dismiss(); - // Invalid password - if (mActivityListener != null) { - if (error.getCode() == 100131) { - mActivityListener.showToast(R.string.invalid_credentials); - input_usr.setError(input_usr.getResources().getString(R.string.invalid_credentials)); - input_pwd.setError(input_pwd.getResources().getString(R.string.invalid_credentials)); - } else { - mActivityListener.showToast(v.getResources().getString(R.string.error_occurred_code, error.getCode())); - } - } - log.e("Error on KVV login!", error); - }); } - } + log.e("Error on KVV login!", error); + }); }); return v; @@ -128,12 +97,6 @@ public class LoginFragment extends Fragment { @Override public void onAttach(Context context) { super.onAttach(context); - if (context instanceof OnLoginFragmentInteractionListener) { - mListener = (OnLoginFragmentInteractionListener) context; - } else { - throw new RuntimeException(context.toString() - + " must implement OnLoginFragmentInteractionListener"); - } if (context instanceof MainActivityListener) { mActivityListener = (MainActivityListener) context; mActivityListener.onTitleTextChange(R.string.log_in); @@ -144,20 +107,6 @@ public class LoginFragment extends Fragment { @Override public void onDetach() { super.onDetach(); - mListener = null; - } - - /** - * This interface must be implemented by activities that contain this - * fragment to allow an interaction in this fragment to be communicated - * to the activity and potentially other fragments contained in that - * activity. - *
- * See the Android Training lesson Communicating with Other Fragments for more information.
- */
- public interface OnLoginFragmentInteractionListener {
- void onLoginFragmentInteraction(LoginToken loginToken, boolean onlineMode);
+ mActivityListener = null;
}
}
diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/ModulesAdapter.java b/app/src/main/java/de/sebse/fuplanner/fragments/ModulesAdapter.java
index 4b85503..5413117 100644
--- a/app/src/main/java/de/sebse/fuplanner/fragments/ModulesAdapter.java
+++ b/app/src/main/java/de/sebse/fuplanner/fragments/ModulesAdapter.java
@@ -8,7 +8,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import de.sebse.fuplanner.R;
import de.sebse.fuplanner.fragments.ModulesFragment.OnModulesFragmentInteractionListener;
-import de.sebse.fuplanner.services.KVV.types.Modules;
+import de.sebse.fuplanner.services.NewKVV.types.Modules;
import de.sebse.fuplanner.tools.ui.ItemViewHolder;
/**
diff --git a/app/src/main/java/de/sebse/fuplanner/fragments/ModulesFragment.java b/app/src/main/java/de/sebse/fuplanner/fragments/ModulesFragment.java
index 6ebcf64..9e3afcf 100644
--- a/app/src/main/java/de/sebse/fuplanner/fragments/ModulesFragment.java
+++ b/app/src/main/java/de/sebse/fuplanner/fragments/ModulesFragment.java
@@ -7,6 +7,7 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -28,7 +29,7 @@ public class ModulesFragment extends Fragment {
private final Logger log = new Logger(this);
private ModulesAdapter adapter;
private SwipeRefreshLayout swipeLayout;
- private MainActivityListener mMainActivityListener;
+ @Nullable private MainActivityListener mMainActivityListener;
/**
* Mandatory empty constructor for the fragment manager to instantiate the
@@ -66,12 +67,11 @@ public class ModulesFragment extends Fragment {
}
private void refresh(boolean forceRefresh) {
- if (getActivity() != null) {
- KVV kvv = ((MainActivity) getActivity()).getKVV();
- kvv.getModuleList(success -> {
+ if (mMainActivityListener != null) {
+ mMainActivityListener.getNewKVV().modules().list().recv(success -> {
adapter.setModules(success);
- if (mMainActivityListener != null)
- mMainActivityListener.refreshNavigation();
+ //if (mMainActivityListener != null)
+ // mMainActivityListener.refreshNavigation();
swipeLayout.setRefreshing(false);
}, error -> {
log.e(error.toString());
diff --git a/app/src/main/java/de/sebse/fuplanner/services/NewKVV/KVVLogin.java b/app/src/main/java/de/sebse/fuplanner/services/NewKVV/KVVLogin.java
index 29d4b42..3d89e7d 100644
--- a/app/src/main/java/de/sebse/fuplanner/services/NewKVV/KVVLogin.java
+++ b/app/src/main/java/de/sebse/fuplanner/services/NewKVV/KVVLogin.java
@@ -3,6 +3,7 @@ package de.sebse.fuplanner.services.NewKVV;
import android.content.Context;
+import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;
@@ -39,10 +40,10 @@ public class KVVLogin extends HTTPService {
}
mLoginPending = true;
doLogin(username, password, token -> {
- testLoginToken(token2 -> {
- setToken(token, true);
+ testLoginToken(token, token2 -> {
+ setToken(token2, true);
mLoginPending = false;
- callback.onResponse(token);
+ callback.onResponse(token2);
}, error -> {
mLoginPending = false;
errorCallback.onError(error);
@@ -53,13 +54,21 @@ public class KVVLogin extends HTTPService {
});
}
+ public boolean restoreOnlineLogin() {
+ return restoreLogin(true);
+ }
+
public boolean doOfflineLogin() {
+ return restoreLogin(false);
+ }
+
+ private boolean restoreLogin(boolean enteringOnlineMode) {
if (mLoginPending || mToken != null)
return false;
mLoginPending = true;
boolean result = false;
try {
- result = setToken(LoginToken.load(getContext()), false);
+ result = setToken(LoginToken.load(getContext()), enteringOnlineMode);
} catch (FileNotFoundException ignored) {
} catch (IOException e) {
e.printStackTrace();
@@ -110,12 +119,16 @@ public class KVVLogin extends HTTPService {
return isLoggedIn() && mOnlineMode;
}
- public void testLoginToken(NetworkCallback