mirror of
https://github.com/gitnex-org/gitnex.git
synced 2026-07-17 02:13:37 -05:00
Add search to most visited repos and code clean up
This commit is contained in:
@@ -11,13 +11,10 @@ import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.activities.MainActivity;
|
||||
import org.mian.gitnex.adapters.DraftsAdapter;
|
||||
@@ -29,6 +26,7 @@ import org.mian.gitnex.helpers.TinyDB;
|
||||
import org.mian.gitnex.helpers.Toasty;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author M M Arif
|
||||
@@ -36,19 +34,17 @@ import java.util.List;
|
||||
|
||||
public class DraftsFragment extends Fragment {
|
||||
|
||||
private FragmentDraftsBinding fragmentDraftsBinding;
|
||||
private Context ctx;
|
||||
private DraftsAdapter adapter;
|
||||
private RecyclerView mRecyclerView;
|
||||
private DraftsApi draftsApi;
|
||||
private TextView noData;
|
||||
private List<DraftWithRepository> draftsList_;
|
||||
private int currentActiveAccountId;
|
||||
private SwipeRefreshLayout swipeRefresh;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
||||
FragmentDraftsBinding fragmentDraftsBinding = FragmentDraftsBinding.inflate(inflater, container, false);
|
||||
fragmentDraftsBinding = FragmentDraftsBinding.inflate(inflater, container, false);
|
||||
|
||||
ctx = getContext();
|
||||
setHasOptionsMenu(true);
|
||||
@@ -60,16 +56,12 @@ public class DraftsFragment extends Fragment {
|
||||
draftsList_ = new ArrayList<>();
|
||||
draftsApi = BaseApi.getInstance(ctx, DraftsApi.class);
|
||||
|
||||
noData = fragmentDraftsBinding.noData;
|
||||
mRecyclerView = fragmentDraftsBinding.recyclerView;
|
||||
swipeRefresh = fragmentDraftsBinding.pullToRefresh;
|
||||
|
||||
mRecyclerView.setHasFixedSize(true);
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(ctx));
|
||||
fragmentDraftsBinding.recyclerView.setHasFixedSize(true);
|
||||
fragmentDraftsBinding.recyclerView.setLayoutManager(new LinearLayoutManager(ctx));
|
||||
|
||||
adapter = new DraftsAdapter(getContext(), getChildFragmentManager(), draftsList_);
|
||||
currentActiveAccountId = tinyDb.getInt("currentActiveAccountId");
|
||||
swipeRefresh.setOnRefreshListener(() -> new Handler(Looper.getMainLooper()).postDelayed(() -> {
|
||||
fragmentDraftsBinding.pullToRefresh.setOnRefreshListener(() -> new Handler(Looper.getMainLooper()).postDelayed(() -> {
|
||||
|
||||
draftsList_.clear();
|
||||
fetchDataAsync(currentActiveAccountId);
|
||||
@@ -85,19 +77,19 @@ public class DraftsFragment extends Fragment {
|
||||
|
||||
draftsApi.getDrafts(accountId).observe(getViewLifecycleOwner(), drafts -> {
|
||||
|
||||
swipeRefresh.setRefreshing(false);
|
||||
fragmentDraftsBinding.pullToRefresh.setRefreshing(false);
|
||||
assert drafts != null;
|
||||
if(drafts.size() > 0) {
|
||||
|
||||
draftsList_.clear();
|
||||
noData.setVisibility(View.GONE);
|
||||
fragmentDraftsBinding.noData.setVisibility(View.GONE);
|
||||
draftsList_.addAll(drafts);
|
||||
adapter.notifyDataChanged();
|
||||
mRecyclerView.setAdapter(adapter);
|
||||
fragmentDraftsBinding.recyclerView.setAdapter(adapter);
|
||||
}
|
||||
else {
|
||||
|
||||
noData.setVisibility(View.VISIBLE);
|
||||
fragmentDraftsBinding.noData.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -113,7 +105,7 @@ public class DraftsFragment extends Fragment {
|
||||
|
||||
if(draftsList_.size() > 0) {
|
||||
|
||||
BaseApi.getInstance(ctx, DraftsApi.class).deleteAllDrafts(accountId);
|
||||
Objects.requireNonNull(BaseApi.getInstance(ctx, DraftsApi.class)).deleteAllDrafts(accountId);
|
||||
draftsList_.clear();
|
||||
adapter.notifyDataChanged();
|
||||
Toasty.success(ctx, getResources().getString(R.string.draftsDeleteSuccess));
|
||||
|
||||
@@ -10,12 +10,11 @@ import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import org.mian.gitnex.R;
|
||||
import org.mian.gitnex.activities.MainActivity;
|
||||
@@ -36,19 +35,17 @@ import java.util.Objects;
|
||||
|
||||
public class MostVisitedReposFragment extends Fragment {
|
||||
|
||||
private FragmentDraftsBinding fragmentDraftsBinding;
|
||||
private Context ctx;
|
||||
private MostVisitedReposAdapter adapter;
|
||||
private RecyclerView mRecyclerView;
|
||||
private RepositoriesApi repositoriesApi;
|
||||
private TextView noData;
|
||||
private List<Repository> mostVisitedReposList;
|
||||
private int currentActiveAccountId;
|
||||
private SwipeRefreshLayout swipeRefresh;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
||||
FragmentDraftsBinding fragmentDraftsBinding = FragmentDraftsBinding.inflate(inflater, container, false);
|
||||
fragmentDraftsBinding = FragmentDraftsBinding.inflate(inflater, container, false);
|
||||
|
||||
ctx = getContext();
|
||||
setHasOptionsMenu(true);
|
||||
@@ -60,16 +57,12 @@ public class MostVisitedReposFragment extends Fragment {
|
||||
mostVisitedReposList = new ArrayList<>();
|
||||
repositoriesApi = BaseApi.getInstance(ctx, RepositoriesApi.class);
|
||||
|
||||
noData = fragmentDraftsBinding.noData;
|
||||
mRecyclerView = fragmentDraftsBinding.recyclerView;
|
||||
swipeRefresh = fragmentDraftsBinding.pullToRefresh;
|
||||
|
||||
mRecyclerView.setHasFixedSize(true);
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(ctx));
|
||||
fragmentDraftsBinding.recyclerView.setHasFixedSize(true);
|
||||
fragmentDraftsBinding.recyclerView.setLayoutManager(new LinearLayoutManager(ctx));
|
||||
|
||||
adapter = new MostVisitedReposAdapter(ctx, mostVisitedReposList);
|
||||
currentActiveAccountId = tinyDb.getInt("currentActiveAccountId");
|
||||
swipeRefresh.setOnRefreshListener(() -> new Handler(Looper.getMainLooper()).postDelayed(() -> {
|
||||
fragmentDraftsBinding.pullToRefresh.setOnRefreshListener(() -> new Handler(Looper.getMainLooper()).postDelayed(() -> {
|
||||
|
||||
mostVisitedReposList.clear();
|
||||
fetchDataAsync(currentActiveAccountId);
|
||||
@@ -84,19 +77,19 @@ public class MostVisitedReposFragment extends Fragment {
|
||||
|
||||
repositoriesApi.fetchAllMostVisited(accountId).observe(getViewLifecycleOwner(), mostVisitedRepos -> {
|
||||
|
||||
swipeRefresh.setRefreshing(false);
|
||||
fragmentDraftsBinding.pullToRefresh.setRefreshing(false);
|
||||
assert mostVisitedRepos != null;
|
||||
if(mostVisitedRepos.size() > 0) {
|
||||
|
||||
mostVisitedReposList.clear();
|
||||
noData.setVisibility(View.GONE);
|
||||
fragmentDraftsBinding.noData.setVisibility(View.GONE);
|
||||
mostVisitedReposList.addAll(mostVisitedRepos);
|
||||
adapter.notifyDataChanged();
|
||||
mRecyclerView.setAdapter(adapter);
|
||||
fragmentDraftsBinding.recyclerView.setAdapter(adapter);
|
||||
}
|
||||
else {
|
||||
|
||||
noData.setVisibility(View.VISIBLE);
|
||||
fragmentDraftsBinding.noData.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -119,7 +112,28 @@ public class MostVisitedReposFragment extends Fragment {
|
||||
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
|
||||
|
||||
inflater.inflate(R.menu.reset_menu, menu);
|
||||
inflater.inflate(R.menu.search_menu, menu);
|
||||
super.onCreateOptionsMenu(menu, inflater);
|
||||
|
||||
MenuItem searchItem = menu.findItem(R.id.action_search);
|
||||
SearchView searchView = (SearchView) searchItem.getActionView();
|
||||
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
|
||||
|
||||
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||
|
||||
@Override
|
||||
public boolean onQueryTextSubmit(String query) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onQueryTextChange(String newText) {
|
||||
|
||||
filter(newText);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -142,4 +156,22 @@ public class MostVisitedReposFragment extends Fragment {
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void filter(String text) {
|
||||
|
||||
List<Repository> arr = new ArrayList<>();
|
||||
|
||||
for(Repository d : mostVisitedReposList) {
|
||||
|
||||
if(d == null || d.getRepositoryOwner() == null || d.getRepositoryName() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(d.getRepositoryOwner().toLowerCase().contains(text) || d.getRepositoryName().toLowerCase().contains(text)) {
|
||||
arr.add(d);
|
||||
}
|
||||
}
|
||||
|
||||
adapter.updateList(arr);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user