Skip to content

Commit bd0070c

Browse files
committed
more refactoring, deep-links also changed.
1 parent 6b10de7 commit bd0070c

22 files changed

+899
-895
lines changed

.idea/runConfigurations/github___repositories.xml renamed to .idea/runConfigurations/github___reposearch.xml

Lines changed: 12 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lint.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343
<!-- NotifyDataSetChanged is fine when clearing the adapter. -->
4444
<issue id="NotifyDataSetChanged">
45-
<ignore regexp="io.syslogic.github.recyclerview.RepositoriesLinearView" />
45+
<ignore regexp="io.syslogic.github.recyclerview.RepositorySearchLinearView" />
4646
</issue>
4747

4848
<issue id="UnknownNullness">

mobile/src/main/java/io/syslogic/github/fragment/HomeScreenFragment.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
6161
/* Navigating to RepositoriesFragment */
6262
this.mDataBinding.buttonRepositories
6363
.setOnClickListener(view -> activity.getNavController()
64-
.navigate(R.id.action_homeScreenFragment_to_repositoriesFragment));
64+
.navigate(R.id.action_homeScreenFragment_to_repositoriesFragment));
6565

66-
/* Navigating to WorkflowFragment */
67-
this.mDataBinding.buttonWorkflows
66+
/* Navigating to RepositorySearchFragment */
67+
this.mDataBinding.buttonRepositorySearch
6868
.setOnClickListener(view -> activity.getNavController()
69-
.navigate(R.id.action_homeScreenFragment_to_workflowsFragment));
69+
.navigate(R.id.action_homeScreenFragment_to_repositorySearchFragment));
7070

7171
/* Navigating to GitHub Sponsors */
7272
this.mDataBinding.textGitHubSponsors
Lines changed: 20 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,37 @@
11
package io.syslogic.github.fragment;
22

33
import android.os.Bundle;
4-
import android.util.Log;
54
import android.view.LayoutInflater;
65
import android.view.View;
76
import android.view.ViewGroup;
8-
import android.widget.AdapterView;
97

108
import androidx.annotation.NonNull;
119
import androidx.annotation.Nullable;
12-
import androidx.appcompat.widget.AppCompatSpinner;
1310
import androidx.databinding.ViewDataBinding;
1411

15-
import java.util.List;
16-
17-
import io.syslogic.github.Constants;
1812
import io.syslogic.github.R;
1913
import io.syslogic.github.activity.NavHostActivity;
20-
import io.syslogic.github.model.PagerState;
21-
import io.syslogic.github.model.QueryString;
22-
import io.syslogic.github.model.SpinnerItem;
23-
import io.syslogic.github.adapter.QueryStringAdapter;
2414
import io.syslogic.github.databinding.FragmentRepositoriesBinding;
25-
import io.syslogic.github.model.User;
26-
import io.syslogic.github.network.TokenCallback;
27-
import io.syslogic.github.provider.RepositoriesMenuProvider;
15+
import io.syslogic.github.provider.WorkflowsMenuProvider;
2816
import io.syslogic.github.recyclerview.RepositoriesAdapter;
29-
import io.syslogic.github.recyclerview.RepositoriesLinearView;
30-
import io.syslogic.github.recyclerview.ScrollListener;
31-
import io.syslogic.github.room.Abstraction;
32-
import io.syslogic.github.room.QueryStringsDao;
3317

3418
/**
35-
* Repositories {@link BaseFragment}
19+
* Workflows {@link BaseFragment}
3620
*
3721
* @author Martin Zeitler
3822
*/
39-
public class RepositoriesFragment extends BaseFragment implements TokenCallback {
23+
public class RepositoriesFragment extends BaseFragment {
4024

4125
/** Log Tag */
4226
@SuppressWarnings("unused")
4327
private static final String LOG_TAG = RepositoriesFragment.class.getSimpleName();
4428

45-
@SuppressWarnings("unused") private static final int resId = R.layout.fragment_repositories;
29+
@SuppressWarnings("unused")
30+
private static final int resId = R.layout.fragment_repositories;
4631

4732
/** Data Binding */
4833
private FragmentRepositoriesBinding mDataBinding;
4934

50-
/** Preference: PREFERENCE_KEY_SHOW_REPOSITORY_TOPICS */
51-
boolean showRepositoryTopics = false;
52-
5335
/** Constructor */
5436
public RepositoriesFragment() {}
5537

@@ -59,77 +41,20 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
5941

6042
NavHostActivity activity = ((NavHostActivity) this.requireActivity());
6143
this.setDataBinding(FragmentRepositoriesBinding.inflate(inflater, container, false));
62-
this.getDataBinding().setPagerState(new PagerState());
6344

6445
/* It removes & adds {@link BaseMenuProvider} */
65-
activity.setMenuProvider(new RepositoriesMenuProvider(activity));
66-
67-
// the SpinnerItem has the same ID as the QueryString.
68-
activity.setSupportActionBar(this.getDataBinding().toolbarRepositories.toolbarRepositories);
69-
this.mDataBinding.toolbarRepositories.home.setOnClickListener(view -> activity.onBackPressed());
70-
71-
AppCompatSpinner spinner = this.getDataBinding().toolbarRepositories.spinnerQueryString;
72-
spinner.setAdapter(new QueryStringAdapter(requireContext()));
73-
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
74-
int count = 0;
75-
@Override
76-
public void onItemSelected(AdapterView<?> parent, View view, int position, long resId) {
77-
if (count > 0) {
78-
SpinnerItem item = (SpinnerItem) view.getTag();
79-
ScrollListener.setPageNumber(1);
80-
String queryString = item.getValue();
81-
RepositoriesLinearView recyclerview = getDataBinding().recyclerviewRepositories;
82-
recyclerview.setQueryString(queryString);
83-
PagerState pagerState = getDataBinding().getPagerState();
84-
if (pagerState != null) {
85-
pagerState.setQueryString(queryString);
86-
getDataBinding().setPagerState(pagerState);
87-
}
88-
if (recyclerview.getAdapter() != null) {
89-
recyclerview.clearAdapter();
90-
((RepositoriesAdapter) recyclerview.getAdapter()).fetchPage(1);
91-
}
92-
}
93-
count++;
94-
}
95-
@Override
96-
public void onNothingSelected(AdapterView<?> parent) {}
97-
});
98-
99-
/* It is quicker to query Room, because the QueryStringAdapter is populating too slow. */
100-
assert this.prefs != null;
101-
showRepositoryTopics = this.prefs.getBoolean(Constants.PREFERENCE_KEY_SHOW_REPOSITORY_TOPICS, false);
102-
if (this.getDataBinding().recyclerviewRepositories.getAdapter() == null) {
103-
if (isNetworkAvailable(requireContext())) {
104-
QueryStringsDao dao = Abstraction.getInstance(requireContext()).queryStringsDao();
105-
Abstraction.executorService.execute(() -> {
106-
try {
107-
assert dao != null;
108-
List<QueryString> items = dao.getItems();
109-
if (items.size() > 0) {
110-
String queryString = items.get(0).toQueryString();
111-
requireActivity().runOnUiThread(() -> {
112-
RepositoriesAdapter adapter = new RepositoriesAdapter(requireContext(), queryString, showRepositoryTopics, 1);
113-
getDataBinding().recyclerviewRepositories.setAdapter(adapter);
114-
PagerState pagerState = getDataBinding().getPagerState();
115-
if (pagerState != null) {
116-
pagerState.setQueryString(queryString);
117-
getDataBinding().setPagerState(pagerState);
118-
}
119-
});
120-
} else {
121-
if (mDebug) {Log.e(LOG_TAG, "table `" + Constants.TABLE_QUERY_STRINGS +"` has no records.");}
122-
this.getDataBinding().toolbarRepositories.spinnerQueryString.setVisibility(View.INVISIBLE);
123-
}
124-
} catch (IllegalStateException e) {
125-
if (mDebug) {Log.e(LOG_TAG, "" + e.getMessage());}
126-
}
127-
});
128-
} else {
129-
this.onNetworkLost();
130-
}
131-
}
46+
activity.setMenuProvider(new WorkflowsMenuProvider(activity));
13247

48+
activity.setSupportActionBar(this.getDataBinding().toolbarWorkflows.toolbarWorkflows);
49+
this.mDataBinding.toolbarWorkflows.home.setOnClickListener(view -> activity.onBackPressed());
50+
51+
if (! isNetworkAvailable(this.requireContext())) {
52+
this.onNetworkLost();
53+
} else {
54+
RepositoriesAdapter adapter = new RepositoriesAdapter(requireContext());
55+
this.getDataBinding().recyclerviewWorkflows.setAdapter(adapter);
56+
adapter.fetchPage(1);
57+
}
13358
return this.getDataBinding().getRoot();
13459
}
13560

@@ -140,64 +65,22 @@ public FragmentRepositoriesBinding getDataBinding() {
14065

14166
@Override
14267
protected void setDataBinding(@NonNull ViewDataBinding binding) {
143-
if (binding instanceof FragmentRepositoriesBinding) {
144-
this.mDataBinding = (FragmentRepositoriesBinding) binding;
145-
}
68+
this.mDataBinding = (FragmentRepositoriesBinding) binding;
14669
}
14770

14871
@Override
14972
public void onNetworkAvailable() {
150-
15173
super.onNetworkAvailable();
152-
153-
String token = this.getPersonalAccessToken();
154-
if (getCurrentUser() == null && token != null) {
155-
this.setUser(token, this);
156-
}
157-
158-
if (mDataBinding != null) {
159-
PagerState pagerState = this.getDataBinding().getPagerState();
160-
if (pagerState != null) {
161-
pagerState.setIsOffline(false);
162-
this.getDataBinding().setPagerState(pagerState);
163-
}
164-
165-
/* When being online for the first time, adapter is null. */
166-
RepositoriesAdapter adapter = ((RepositoriesAdapter) this.getDataBinding().recyclerviewRepositories.getAdapter());
167-
if (adapter == null) {
168-
/* Needs to run on UiThread */
169-
requireActivity().runOnUiThread(() -> {
170-
String queryString = getDataBinding().recyclerviewRepositories.getQueryString();
171-
if (queryString == null) {
172-
QueryStringAdapter queryStringArrayAdapter = (QueryStringAdapter) getDataBinding().toolbarRepositories.spinnerQueryString.getAdapter();
173-
if (queryStringArrayAdapter != null && queryStringArrayAdapter.getCount() > 0) {
174-
queryString = queryStringArrayAdapter.getItem(0).getValue();
175-
}
176-
}
177-
if (queryString != null) {
178-
getDataBinding().recyclerviewRepositories.setAdapter(new RepositoriesAdapter(requireActivity(), queryString, showRepositoryTopics, 1));
179-
}
180-
});
181-
} else if (adapter.getItemCount() == 0) {
182-
/* If required, fetch page 1 */
183-
adapter.fetchPage(1);
184-
}
185-
}
18674
}
18775

18876
@Override
18977
public void onNetworkLost() {
19078
super.onNetworkLost();
191-
PagerState pagerState = this.getDataBinding().getPagerState();
192-
if (pagerState != null) {
193-
pagerState.setIsLoading(false);
194-
pagerState.setIsOffline(true);
195-
this.getDataBinding().setPagerState(pagerState);
196-
}
19779
}
19880

19981
@Override
200-
public void onLogin(@NonNull User item) {
201-
this.mDataBinding.setUser(item);
82+
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
83+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
84+
// if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {}
20285
}
20386
}

0 commit comments

Comments
 (0)