diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2e32ae2..fb52479 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,10 +4,10 @@
package="com.uam.wmi.findmytutor">
+
-
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java
index 4183098..d7eb01c 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java
@@ -212,7 +212,7 @@ public abstract class BaseActivity
Intent startIntent = new Intent(getApplicationContext(), BackgroundLocalizationService.class);
startIntent.putExtra("notify_interval", onlineBackgroundLocationInterval);
- if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(startIntent);
} else {
startService(startIntent);
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/BlackList.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/BlackList.java
index ce91562..ddaa7b1 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/activity/BlackList.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/BlackList.java
@@ -162,10 +162,10 @@ public class BlackList extends AppCompatActivity {
private void fetchBlackListedUsers() {
prevSize = blacklistedUsers.size();
-
blacklistedUsers.clear();
disposable.add(getListOfBlacklistedUsers(tutorId)
+ .doOnSubscribe(t -> didFetched = false)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap((Function, Observable>) Observable::fromIterable)
@@ -179,11 +179,13 @@ public class BlackList extends AppCompatActivity {
@Override
public void onError(Throwable e) {
showError(e);
+ didFetched = false;
}
@Override
public void onComplete() {
Collections.sort(blacklistedUsers, (a, b) -> sortByUserName(a,b));
+ didFetched = true;
refreshUI();
}
}));
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java
index 53bf08f..51b809e 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java
@@ -214,10 +214,9 @@ public class SharingFragment extends PreferenceFragment implements SharedPrefere
/** Sharing level list **/
locationMode.setOnPreferenceChangeListener((preference, newValue) -> {
+ ((MapActivity) getActivity()).handleBackgroundTaskLifeCycle();
PrefUtils.storeLocationMode(getApplicationContext(), locationLevelMapping.get(Integer.parseInt((String) newValue)));
- ((MapActivity) getActivity()).stopBackgroundLocalizationTask();
- ((MapActivity) getActivity()).startBackgroundLocalizationTask();
if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.MANUAL.toString())) {
if (!predefinedCoordsList.isEmpty()) {
preferenceCategory.addPreference(manualLocationList);
diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/WhiteList.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/WhiteList.java
index aad7e70..c767af3 100644
--- a/app/src/main/java/com/uam/wmi/findmytutor/activity/WhiteList.java
+++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/WhiteList.java
@@ -44,7 +44,6 @@ import com.uam.wmi.findmytutor.utils.WrapContentLinearLayoutManager;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
-
import java.util.List;
import java.util.Locale;
@@ -61,11 +60,6 @@ import okhttp3.ResponseBody;
public class WhiteList extends AppCompatActivity {
- private CompositeDisposable disposable = new CompositeDisposable();
- private UserService userService;
- private boolean didFetched = false;
- private String tutorId;
-
@BindView(R.id.recycler_view_whitelist)
RecyclerView recyclerView;
@BindView(R.id.white_list_empty_text_view)
@@ -74,7 +68,10 @@ public class WhiteList extends AppCompatActivity {
Switch aSwitch;
@BindView(R.id.add_to_white_list_fab)
FloatingActionButton addToWhiteListFab;
-
+ private CompositeDisposable disposable = new CompositeDisposable();
+ private UserService userService;
+ private boolean didFetched = false;
+ private String tutorId;
private WhiteListAdapter mAdapter;
private Integer prevSize;
private List whitelistedUsers = new ArrayList<>();
@@ -90,12 +87,12 @@ public class WhiteList extends AppCompatActivity {
userService = ApiClient.getClient(getApplicationContext())
.create(UserService.class);
- if (PrefUtils.isWhiteListing(this)){
- aSwitch.setText(getString(R.string.action_white_list) +" ON");
+ if (PrefUtils.isWhiteListing(this)) {
+ aSwitch.setText(getString(R.string.action_white_list) + " ON");
aSwitch.setChecked(true);
handleChangeRequest(true);
- }else{
- aSwitch.setText(getString(R.string.action_white_list) +" OFF");
+ } else {
+ aSwitch.setText(getString(R.string.action_white_list) + " OFF");
aSwitch.setChecked(false);
handleChangeRequest(false);
}
@@ -132,7 +129,7 @@ public class WhiteList extends AppCompatActivity {
}
private Observable> getListOfWhitelistedUsers(String userId) {
- return userService.getTutorWhitelistedByID(userId)
+ return userService.getTutorWhitelistedByID(userId)
.toObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
@@ -151,30 +148,33 @@ public class WhiteList extends AppCompatActivity {
whitelistedUsers.clear();
disposable.add(getListOfWhitelistedUsers(tutorId)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .flatMap((Function, Observable>) Observable::fromIterable)
- .flatMap((Function>) this::getUserObservable)
- .subscribeWith(new DisposableObserver() {
- @Override
- public void onNext(User user) {
- whitelistedUsers.add(user);
- }
+ .doOnSubscribe(t -> didFetched = false)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .flatMap((Function, Observable>) Observable::fromIterable)
+ .flatMap((Function>) this::getUserObservable)
+ .subscribeWith(new DisposableObserver() {
+ @Override
+ public void onNext(User user) {
+ whitelistedUsers.add(user);
+ }
- @Override
- public void onError(Throwable e) {
- showError(e);
- }
+ @Override
+ public void onError(Throwable e) {
+ showError(e);
+ didFetched = false;
+ }
- @Override
- public void onComplete() {
- Collections.sort(whitelistedUsers, (a, b) -> sortByUserName(a,b));
- refreshUI();
- }
- }));
+ @Override
+ public void onComplete() {
+ Collections.sort(whitelistedUsers, (a, b) -> sortByUserName(a, b));
+ didFetched = true;
+ refreshUI();
+ }
+ }));
}
- private void refreshUI(){
+ private void refreshUI() {
toggleEmptyNotes();
mAdapter.notifyItemRangeInserted(prevSize, whitelistedUsers.size() - prevSize);
mAdapter.notifyDataSetChanged();
@@ -184,7 +184,7 @@ public class WhiteList extends AppCompatActivity {
return plCollator.compare(t1.getLastName(), t2.getLastName());
}
- private void showFabDialog(View v){
+ private void showFabDialog(View v) {
LayoutInflater layoutInflaterAndroid = LayoutInflater.from(getApplicationContext());
@SuppressLint("InflateParams") View view = layoutInflaterAndroid.inflate(R.layout.white_list_fab_modal, null);
AlertDialog.Builder alertDialogBuilderUserInput = new AlertDialog.Builder(this);
@@ -230,7 +230,7 @@ public class WhiteList extends AppCompatActivity {
userService.addStudentToWhitelist(tutorId, studentIdModel)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
- .subscribe(this::handleAddUser,this::showError)
+ .subscribe(this::handleAddUser, this::showError)
);
}
@@ -251,15 +251,16 @@ public class WhiteList extends AppCompatActivity {
} else {
message = "Network Error !";
}
- Log.e("ERR",message);
+ Log.e("ERR", message);
Toast.makeText(this, message, Snackbar.LENGTH_LONG).show();
}
private void toggleEmptyNotes() {
+
if (didFetched && whitelistedUsers.size() == 0) {
noNotesView.setText(R.string.list_is_empty);
noNotesView.setVisibility(View.VISIBLE);
- }else if (whitelistedUsers.size() > 0) {
+ } else if (whitelistedUsers.size() > 0) {
noNotesView.setVisibility(View.GONE);
} else {
noNotesView.setText(getString(R.string.loading));
@@ -271,10 +272,10 @@ public class WhiteList extends AppCompatActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId()==R.id.action_whitelist_info_popup){
+ if (item.getItemId() == R.id.action_whitelist_info_popup) {
int layoutID = R.layout.info_popup_whitelist;
- View popupView = getLayoutInflater().inflate(layoutID,null);
+ View popupView = getLayoutInflater().inflate(layoutID, null);
PopupWindow popupWindow = new PopupWindow(popupView,
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
@@ -283,36 +284,36 @@ public class WhiteList extends AppCompatActivity {
// If you need the PopupWindow to dismiss when when touched outside
popupWindow.setBackgroundDrawable(new ColorDrawable());
// Get the View's(the one that was clicked in the Fragment) location
- View anchorView= getWindow().getDecorView().findViewById(android.R.id.content);
- popupWindow.showAtLocation(anchorView,Gravity.TOP|Gravity.END, 0, 0);
+ View anchorView = getWindow().getDecorView().findViewById(android.R.id.content);
+ popupWindow.showAtLocation(anchorView, Gravity.TOP | Gravity.END, 0, 0);
}
return super.onOptionsItemSelected(item);
}
- private void handleSwitch(){
+ private void handleSwitch() {
aSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
- if (isChecked){
- aSwitch.setText(getString(R.string.action_white_list) + " "+ getString(R.string.on));
+ if (isChecked) {
+ aSwitch.setText(getString(R.string.action_white_list) + " " + getString(R.string.on));
handleChangeRequest(true);
PrefUtils.useWhitelist(this, true);
- }else {
- aSwitch.setText(getString(R.string.action_white_list) + " "+getString(R.string.off));
+ } else {
+ aSwitch.setText(getString(R.string.action_white_list) + " " + getString(R.string.off));
handleChangeRequest(false);
PrefUtils.useWhitelist(this, false);
}
});
}
- private void handleChangeRequest(boolean value){
+ private void handleChangeRequest(boolean value) {
IsUsingListBool isUsingListBool = new IsUsingListBool();
isUsingListBool.setIsUsing(value);
disposable.add(
userService.setTutorWhitelist(tutorId, isUsingListBool)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(()->{
- },this::showError)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(() -> {
+ }, this::showError)
);
}