mirror of
https://github.com/gitnex-org/gitnex.git
synced 2026-07-23 14:24:51 -05:00
Extend my issues with assigned to me filter
This commit is contained in:
@@ -520,6 +520,11 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
getFragmentRefreshListener().onRefresh("closed");
|
||||
}
|
||||
break;
|
||||
case "assignedToMe":
|
||||
if(getFragmentRefreshListener() != null) {
|
||||
getFragmentRefreshListener().onRefresh("assignedToMe");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -630,7 +635,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
private void giteaVersion() {
|
||||
|
||||
Call<ServerVersion> callVersion = RetrofitClient.getApiInterface(ctx).getVersion();
|
||||
callVersion.enqueue(new Callback<ServerVersion>() {
|
||||
callVersion.enqueue(new Callback<>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull final Call<ServerVersion> callVersion, @NonNull retrofit2.Response<ServerVersion> responseVersion) {
|
||||
@@ -645,7 +650,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<ServerVersion> callVersion, @NonNull Throwable t) {
|
||||
Log.e("onFailure-version", t.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -653,7 +657,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
private void loadUserInfo() {
|
||||
Call<User> call = RetrofitClient.getApiInterface(ctx).userGetCurrent();
|
||||
|
||||
call.enqueue(new Callback<User>() {
|
||||
call.enqueue(new Callback<>() {
|
||||
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<User> call, @NonNull retrofit2.Response<User> response) {
|
||||
@@ -671,16 +675,18 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
if(!getAccount().getAccount().getUserName().equals(userDetails.getLogin())) {
|
||||
// user changed it's name -> update database
|
||||
int accountId = getAccount().getAccount().getAccountId();
|
||||
BaseApi.getInstance(MainActivity.this, UserAccountsApi.class).updateUsername(accountId,
|
||||
userDetails.getLogin());
|
||||
BaseApi.getInstance(MainActivity.this, UserAccountsApi.class).updateUsername(accountId, userDetails.getLogin());
|
||||
getAccount().setAccount(BaseApi.getInstance(MainActivity.this, UserAccountsApi.class).getAccountById(accountId));
|
||||
}
|
||||
if(profileInitListener != null) profileInitListener.onButtonClicked(null);
|
||||
if(profileInitListener != null) {
|
||||
profileInitListener.onButtonClicked(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(response.code() == 401) {
|
||||
|
||||
AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle), getResources().getString(R.string.alertDialogTokenRevokedMessage), getResources().getString(R.string.cancelButton), getResources().getString(R.string.navLogout));
|
||||
AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle), getResources().getString(R.string.alertDialogTokenRevokedMessage), getResources().getString(R.string.cancelButton),
|
||||
getResources().getString(R.string.navLogout));
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -691,8 +697,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<User> call, @NonNull Throwable t) {
|
||||
|
||||
Log.e("onFailure", t.toString());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -719,8 +723,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<NotificationCount> call, @NonNull Throwable t) {
|
||||
|
||||
Log.e("onFailure-notification", t.toString());
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -730,7 +732,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
|
||||
this.profileInitListener = profileInitListener;
|
||||
}
|
||||
|
||||
// My issues-open-close interface
|
||||
// My issues interface
|
||||
public FragmentRefreshListener getFragmentRefreshListener() { return fragmentRefreshListenerMyIssues; }
|
||||
public void setFragmentRefreshListenerMyIssues(FragmentRefreshListener fragmentRefreshListener) { this.fragmentRefreshListenerMyIssues = fragmentRefreshListener; }
|
||||
}
|
||||
|
||||
@@ -35,6 +35,11 @@ public class BottomSheetMyIssuesFilterFragment extends BottomSheetDialogFragment
|
||||
dismiss();
|
||||
});
|
||||
|
||||
bottomSheetIssuesFilterBinding.assignedToMe.setOnClickListener(v12 -> {
|
||||
bmListener.onButtonClicked("assignedToMe");
|
||||
dismiss();
|
||||
});
|
||||
|
||||
return bottomSheetIssuesFilterBinding.getRoot();
|
||||
}
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ public class ExploreIssuesFragment extends Fragment {
|
||||
|
||||
IssuesViewModel issuesModel = new ViewModelProvider(this).get(IssuesViewModel.class);
|
||||
|
||||
issuesModel.getIssuesList(searchKeyword, "issues", null, "open", getContext()).observe(getViewLifecycleOwner(), issuesListMain -> {
|
||||
issuesModel.getIssuesList(searchKeyword, "issues", null, "open", null, getContext()).observe(getViewLifecycleOwner(), issuesListMain -> {
|
||||
|
||||
adapter = new ExploreIssuesAdapter(issuesListMain, getContext());
|
||||
adapter.setLoadMoreListener(new ExploreIssuesAdapter.OnLoadMoreListener() {
|
||||
@@ -66,7 +66,7 @@ public class ExploreIssuesFragment extends Fragment {
|
||||
public void onLoadMore() {
|
||||
|
||||
page += 1;
|
||||
IssuesViewModel.loadMoreIssues(searchKeyword, "issues", null, "open", page, getContext(), adapter);
|
||||
IssuesViewModel.loadMoreIssues(searchKeyword, "issues", null, "open", page, null, getContext(), adapter);
|
||||
viewBinding.progressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ public class MyIssuesFragment extends Fragment {
|
||||
private int page = 1;
|
||||
private Menu menu;
|
||||
public String state = "open";
|
||||
public boolean assignedToMe = false;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
@@ -45,40 +46,42 @@ public class MyIssuesFragment extends Fragment {
|
||||
DividerItemDecoration.VERTICAL);
|
||||
fragmentIssuesBinding.recyclerView.addItemDecoration(dividerItemDecoration);
|
||||
|
||||
((MainActivity) requireActivity()).setFragmentRefreshListenerMyIssues(myIssuesState -> {
|
||||
((MainActivity) requireActivity()).setFragmentRefreshListenerMyIssues(myIssues -> {
|
||||
|
||||
state = myIssuesState;
|
||||
if(myIssuesState.equals("open")) {
|
||||
menu.getItem(1).setIcon(R.drawable.ic_filter);
|
||||
}
|
||||
else {
|
||||
state = myIssues;
|
||||
if(state.equals("closed")) {
|
||||
menu.getItem(1).setIcon(R.drawable.ic_filter_closed);
|
||||
}
|
||||
else {
|
||||
menu.getItem(1).setIcon(R.drawable.ic_filter);
|
||||
}
|
||||
|
||||
assignedToMe = state.equals("assignedToMe");
|
||||
|
||||
fragmentIssuesBinding.progressBar.setVisibility(View.VISIBLE);
|
||||
fragmentIssuesBinding.noDataIssues.setVisibility(View.GONE);
|
||||
|
||||
fetchDataAsync(null, myIssuesState);
|
||||
fetchDataAsync(null, state, assignedToMe);
|
||||
});
|
||||
|
||||
fragmentIssuesBinding.pullToRefresh.setOnRefreshListener(() -> new Handler(Looper.getMainLooper()).postDelayed(() -> {
|
||||
|
||||
page = 1;
|
||||
fragmentIssuesBinding.pullToRefresh.setRefreshing(false);
|
||||
IssuesViewModel.loadIssuesList(null, "issues", true, state, getContext());
|
||||
IssuesViewModel.loadIssuesList(null, "issues", true, state, assignedToMe, getContext());
|
||||
fragmentIssuesBinding.progressBar.setVisibility(View.VISIBLE);
|
||||
}, 50));
|
||||
|
||||
fetchDataAsync(null, state);
|
||||
fetchDataAsync(null, state, assignedToMe);
|
||||
|
||||
return fragmentIssuesBinding.getRoot();
|
||||
};
|
||||
|
||||
private void fetchDataAsync(String query, String state) {
|
||||
private void fetchDataAsync(String query, String state, boolean assignedToMe) {
|
||||
|
||||
IssuesViewModel issuesModel = new ViewModelProvider(this).get(IssuesViewModel.class);
|
||||
|
||||
issuesModel.getIssuesList(query, "issues", true, state, getContext()).observe(getViewLifecycleOwner(), issuesListMain -> {
|
||||
issuesModel.getIssuesList(query, "issues", true, state, assignedToMe, getContext()).observe(getViewLifecycleOwner(), issuesListMain -> {
|
||||
|
||||
adapter = new ExploreIssuesAdapter(issuesListMain, getContext());
|
||||
adapter.setLoadMoreListener(new ExploreIssuesAdapter.OnLoadMoreListener() {
|
||||
@@ -87,7 +90,7 @@ public class MyIssuesFragment extends Fragment {
|
||||
public void onLoadMore() {
|
||||
|
||||
page += 1;
|
||||
IssuesViewModel.loadMoreIssues(query, "issues", true, state, page, getContext(), adapter);
|
||||
IssuesViewModel.loadMoreIssues(query, "issues", true, state, page, assignedToMe, getContext(), adapter);
|
||||
fragmentIssuesBinding.progressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@@ -128,7 +131,7 @@ public class MyIssuesFragment extends Fragment {
|
||||
|
||||
@Override
|
||||
public boolean onQueryTextSubmit(String query) {
|
||||
fetchDataAsync(query, state);
|
||||
fetchDataAsync(query, state, assignedToMe);
|
||||
searchView.setQuery(null, false);
|
||||
searchItem.collapseActionView();
|
||||
return false;
|
||||
|
||||
@@ -26,7 +26,7 @@ public class IssuesViewModel extends ViewModel {
|
||||
private static MutableLiveData<List<Issue>> issuesList;
|
||||
private static int resultLimit = Constants.resultLimitOldGiteaInstances;
|
||||
|
||||
public LiveData<List<Issue>> getIssuesList(String searchKeyword, String type, Boolean created, String state, Context ctx) {
|
||||
public LiveData<List<Issue>> getIssuesList(String searchKeyword, String type, Boolean created, String state, Boolean assignedToMe, Context ctx) {
|
||||
|
||||
issuesList = new MutableLiveData<>();
|
||||
|
||||
@@ -35,17 +35,16 @@ public class IssuesViewModel extends ViewModel {
|
||||
resultLimit = Constants.resultLimitNewGiteaInstances;
|
||||
}
|
||||
|
||||
loadIssuesList(searchKeyword, type, created, state, ctx);
|
||||
loadIssuesList(searchKeyword, type, created, state, assignedToMe, ctx);
|
||||
|
||||
return issuesList;
|
||||
}
|
||||
|
||||
public static void loadIssuesList(String searchKeyword, String type, Boolean created, String state, Context ctx) {
|
||||
public static void loadIssuesList(String searchKeyword, String type, Boolean created, String state, Boolean assignedToMe, Context ctx) {
|
||||
|
||||
Call<List<Issue>> call = RetrofitClient
|
||||
.getApiInterface(ctx)
|
||||
.issueSearchIssues(state, null, null, searchKeyword, null, type, null, null,
|
||||
null, created, null, null, null, null, 1, resultLimit);
|
||||
Call<List<Issue>> call = RetrofitClient.getApiInterface(ctx)
|
||||
.issueSearchIssues(state, null, null, searchKeyword, null, type, null, null, assignedToMe, created, null, null, null, null, 1,
|
||||
resultLimit);
|
||||
|
||||
call.enqueue(new Callback<>() {
|
||||
|
||||
@@ -68,12 +67,10 @@ public class IssuesViewModel extends ViewModel {
|
||||
});
|
||||
}
|
||||
|
||||
public static void loadMoreIssues(String searchKeyword, String type, Boolean created, String state, int page, Context ctx, ExploreIssuesAdapter adapter) {
|
||||
public static void loadMoreIssues(String searchKeyword, String type, Boolean created, String state, int page, Boolean assignedToMe, Context ctx, ExploreIssuesAdapter adapter) {
|
||||
|
||||
Call<List<Issue>> call = RetrofitClient
|
||||
.getApiInterface(ctx)
|
||||
.issueSearchIssues(state, null, null, searchKeyword, null, type, null, null,
|
||||
null, created, null, null, null, null, page, resultLimit);
|
||||
Call<List<Issue>> call = RetrofitClient.getApiInterface(ctx)
|
||||
.issueSearchIssues(state, null, null, searchKeyword, null, type, null, null, assignedToMe, created, null, null, null, null, page, resultLimit);
|
||||
|
||||
call.enqueue(new Callback<>() {
|
||||
|
||||
|
||||
@@ -71,6 +71,19 @@
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/assignedToMe"
|
||||
android:layout_width="98dp"
|
||||
android:layout_height="100dp"
|
||||
android:padding="8dp"
|
||||
android:background="?android:attr/selectableItemBackgroundBorderless"
|
||||
app:layout_alignSelf="flex_start"
|
||||
android:gravity="center"
|
||||
app:drawableTopCompat="@drawable/ic_person"
|
||||
android:text="@string/assignedToMe"
|
||||
android:textColor="?attr/primaryTextColor"
|
||||
android:textSize="16sp" />
|
||||
|
||||
</com.google.android.flexbox.FlexboxLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -145,6 +145,7 @@
|
||||
<string name="issueMilestone">Milestone %1$s</string>
|
||||
<string name="dueDate">Due on %1$s</string>
|
||||
<string name="assignedTo">Assigned to: %1$s</string>
|
||||
<string name="assignedToMe">Assigned to Me</string>
|
||||
<string name="commentButtonText">Comment</string>
|
||||
<string name="commentEmptyError">Please write your comment</string>
|
||||
<string name="commentSuccess">Comment posted</string>
|
||||
|
||||
Reference in New Issue
Block a user