From ad83c5ed8837b2542595d3b09093a3e343b542a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Thu, 10 Jan 2019 23:32:45 +0100 Subject: [PATCH] Change loaders --- app/build.gradle | 2 + .../wmi/findmytutor/activity/BlackList.java | 13 +++- .../activity/UsersListFragment.java | 73 +++++++++++++------ .../wmi/findmytutor/activity/WhiteList.java | 14 +++- .../adapters/TutorsListAdapter.java | 11 ++- .../main/res/layout/content_black_list.xml | 15 ++++ .../main/res/layout/content_white_list.xml | 14 ++++ app/src/main/res/layout/tutor_list_row.xml | 12 ++- app/src/main/res/layout/users_list_main.xml | 15 ++++ app/src/main/res/values-pl/strings.xml | 3 +- app/src/main/res/values/strings.xml | 2 +- 11 files changed, 139 insertions(+), 35 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ab9bf30..7fca167 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -74,4 +74,6 @@ dependencies { implementation 'org.apache.commons:commons-collections4:4.0' implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support:design:27.1.1' + // spinner loaders library + implementation 'com.github.ybq:Android-SpinKit:1.2.0' } 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 8eb3dfb..12d7ee6 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 @@ -31,6 +31,7 @@ import android.widget.TextView; import android.widget.Toast; import android.widget.ToggleButton; +import com.github.ybq.android.spinkit.SpinKitView; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.mapbox.geojson.Point; import com.mapbox.mapboxsdk.geometry.LatLng; @@ -86,6 +87,9 @@ public class BlackList extends AppCompatActivity { Switch aSwitch; @BindView(R.id.add_to_black_list_fab) FloatingActionButton addToBlackListFab; + @BindView(R.id.loader) + SpinKitView loader; + private Integer prevSize; private BlackListAdapter mAdapter; @@ -122,6 +126,7 @@ public class BlackList extends AppCompatActivity { recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.addItemDecoration(new MyDividerItemDecoration(this, LinearLayoutManager.VERTICAL, 16)); recyclerView.setAdapter(mAdapter); + noNotesView.setVisibility(View.GONE); fetchBlackListedUsers(); /** @@ -275,15 +280,15 @@ public class BlackList extends AppCompatActivity { } private void toggleEmptyNotes() { - if (didFetched && blacklistedUsers.size() == 0) { - noNotesView.setText(R.string.list_is_empty); noNotesView.setVisibility(View.VISIBLE); + noNotesView.setText(R.string.list_is_empty); + loader.setVisibility(View.GONE); }else if (blacklistedUsers.size() > 0) { noNotesView.setVisibility(View.GONE); + loader.setVisibility(View.GONE); } else { - noNotesView.setText(getString(R.string.loading)); - noNotesView.setVisibility(View.VISIBLE); + loader.setVisibility(View.VISIBLE); } } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java index 5bef676..71756dd 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java @@ -4,6 +4,7 @@ import android.app.Fragment; import android.app.FragmentTransaction; import android.graphics.drawable.Drawable; import android.os.Bundle; +import android.os.SystemClock; import android.support.annotation.NonNull; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; @@ -30,6 +31,7 @@ import android.widget.ListView; import android.widget.TextView; import com.annimon.stream.Stream; +import com.github.ybq.android.spinkit.SpinKitView; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.adapters.TutorsListAdapter; @@ -57,8 +59,12 @@ import java.util.Locale; import butterknife.BindView; import butterknife.ButterKnife; +import io.reactivex.Observable; +import io.reactivex.ObservableSource; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.functions.Function; +import io.reactivex.observers.DisposableObserver; import io.reactivex.observers.DisposableSingleObserver; import io.reactivex.schedulers.Schedulers; import okhttp3.ResponseBody; @@ -74,6 +80,8 @@ public class UsersListFragment extends Fragment { RecyclerView recyclerView; @BindView(R.id.txt_empty_notes_view) TextView noNotesView; + @BindView(R.id.loader) + SpinKitView loader; private SearchView searchView; private UserService userService; @@ -95,7 +103,6 @@ public class UsersListFragment extends Fragment { } public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - mAdapter = new TutorsListAdapter(getActivity().getApplicationContext(), tutorsList, tutorsTimeStamps); View view = inflater.inflate(R.layout.users_list, container, false); view.setBackgroundColor(getResources().getColor(android.R.color.white)); @@ -119,6 +126,7 @@ public class UsersListFragment extends Fragment { recyclerView.setVerticalScrollBarEnabled(true); recyclerView.addItemDecoration(new MyDividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL, 16)); recyclerView.setAdapter(mAdapter); + noNotesView.setVisibility(View.GONE); fetchAllTutors(); fetchTopCords(); @@ -404,9 +412,10 @@ public class UsersListFragment extends Fragment { } private void toggleEmptyNotes() { - if (tutorsList.size() > 0) { - noNotesView.setVisibility(View.GONE); - } else { + loader.setVisibility(View.GONE); + noNotesView.setVisibility(View.GONE); + + if (tutorsList.size() == 0) { noNotesView.setVisibility(View.VISIBLE); if (fetchOnlyOnlineUsers) noNotesView.setText(R.string.no_online_users); @@ -442,28 +451,44 @@ public class UsersListFragment extends Fragment { super.onSaveInstanceState(outState); } + private Observable> getListOfActiveUsers() { + return userService.getAllActiveTutors() + .toObservable() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + + private Observable getCoordinateObservable(User user) { + return coordinateService + .getTopCoordinatesByUserId(user.getId()) + .toObservable() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + private void fetchTopCords(){ - disposable.add( - coordinateService.getTopCoordinates() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(new DisposableSingleObserver>() { - @Override - public void onSuccess(List newCords) { - for (Coordinate crd : - newCords) { - Long ts = crd.getTimeStamp(); - if (ts != 0){ - tutorsTimeStamps.put(crd.getUserId(), getDate(ts)); - } - } - mAdapter.notifyDataSetChanged(); + tutorsTimeStamps.clear(); + disposable.add(getListOfActiveUsers() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .flatMap((Function, Observable>) Observable::fromIterable) + .flatMap((Function>) this::getCoordinateObservable) + .subscribeWith(new DisposableObserver() { + @Override + public void onNext(Coordinate coordinate) { + Long ts = coordinate.getTimeStamp(); + tutorsTimeStamps.put(coordinate.getUserId(), getDate(ts)); + } - } + @Override + public void onError(Throwable e) {showError(e);} - @Override - public void onError(Throwable e) {showSearchError(e);} - })); + @Override + public void onComplete() { + Log.e("USERS", String.valueOf(tutorsTimeStamps)); + mAdapter.notifyDataSetChanged(); + } + })); } private String getDate(long time) { @@ -472,4 +497,4 @@ public class UsersListFragment extends Fragment { String date = DateFormat.format("HH:mm dd/MM", cal).toString(); return date; } -} \ No newline at end of file +} 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 f471947..9579caa 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 @@ -27,6 +27,7 @@ import android.widget.Switch; import android.widget.TextView; import android.widget.Toast; +import com.github.ybq.android.spinkit.SpinKitView; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.adapters.WhiteListAdapter; @@ -68,6 +69,9 @@ public class WhiteList extends AppCompatActivity { Switch aSwitch; @BindView(R.id.add_to_white_list_fab) FloatingActionButton addToWhiteListFab; + @BindView(R.id.loader) + SpinKitView loader; + private CompositeDisposable disposable = new CompositeDisposable(); private UserService userService; private boolean didFetched = false; @@ -106,6 +110,7 @@ public class WhiteList extends AppCompatActivity { recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.addItemDecoration(new MyDividerItemDecoration(this, LinearLayoutManager.VERTICAL, 16)); recyclerView.setAdapter(mAdapter); + noNotesView.setVisibility(View.GONE); /** * On long press on RecyclerView item, open alert dialog @@ -258,17 +263,20 @@ public class WhiteList extends AppCompatActivity { private void toggleEmptyNotes() { if (didFetched && whitelistedUsers.size() == 0) { - noNotesView.setText(R.string.list_is_empty); noNotesView.setVisibility(View.VISIBLE); + noNotesView.setText(R.string.list_is_empty); + loader.setVisibility(View.GONE); } else if (whitelistedUsers.size() > 0) { noNotesView.setVisibility(View.GONE); + loader.setVisibility(View.GONE); } else { - noNotesView.setText(getString(R.string.loading)); - noNotesView.setVisibility(View.VISIBLE); + loader.setVisibility(View.VISIBLE); } } + + @Override public boolean onOptionsItemSelected(MenuItem item) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java index eb9ef4b..2a147c8 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java @@ -9,6 +9,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.github.ybq.android.spinkit.SpinKitView; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.model.User; @@ -49,17 +50,22 @@ public class TutorsListAdapter extends RecyclerView.Adapter + + + diff --git a/app/src/main/res/layout/content_white_list.xml b/app/src/main/res/layout/content_white_list.xml index 3ac2670..a14823a 100644 --- a/app/src/main/res/layout/content_white_list.xml +++ b/app/src/main/res/layout/content_white_list.xml @@ -28,6 +28,20 @@ android:textColor="@color/msg_no_notes" android:textSize="@dimen/msg_no_notes" /> + + diff --git a/app/src/main/res/layout/tutor_list_row.xml b/app/src/main/res/layout/tutor_list_row.xml index b7f612f..ac8153b 100644 --- a/app/src/main/res/layout/tutor_list_row.xml +++ b/app/src/main/res/layout/tutor_list_row.xml @@ -19,9 +19,20 @@ android:layout_alignParentTop="true" android:layout_marginStart="12dp" android:layout_marginTop="10dp" + android:textColor="@color/note_list_text" android:textSize="15sp" /> + + + - + + + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index f47e09f..a5ed747 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -284,7 +284,8 @@ dokładny przybliżony Niezapisana lokalizacja. - Ostatnio + Ostatnio + Dostępny teraz Profil diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a281e48..7fa8adc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -455,5 +455,5 @@ Not saved location. Status Available now - Last seen + Last seen