From 6916989ec12e19880f38bba6859004721b09253e Mon Sep 17 00:00:00 2001 From: qwerty287 Date: Sat, 21 May 2022 11:38:15 +0200 Subject: [PATCH] Some fixes and cleanups for PRs (#1146) 1. improve menu time (show when loading finished) 2. fix crashes from deleted forks I mainly tried to fix issue https://codeberg.org/gitnex/GitNex/issues/1137, but: 1. the missing UI options are Gitea's issue (the permission values are not correct when using notification endpoints) 2. the comments crash is an `SQLiteConstraintException` which we had already in #1084 but it seems that it wasn't fixed Closes https://codeberg.org/gitnex/GitNex/issues/1137 closes https://codeberg.org/gitnex/GitNex/issues/1144 Co-authored-by: qwerty287 Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1146 Reviewed-by: M M Arif Co-authored-by: qwerty287 Co-committed-by: qwerty287 --- .../org/mian/gitnex/actions/IssueActions.java | 2 +- .../gitnex/activities/DeepLinksActivity.java | 48 ++--------------- .../activities/IssueDetailActivity.java | 54 +++++++++++++------ .../activities/MergePullRequestActivity.java | 2 +- .../org/mian/gitnex/adapters/DiffAdapter.java | 2 +- .../gitnex/adapters/ExploreIssuesAdapter.java | 15 +----- .../adapters/ExploreRepositoriesAdapter.java | 16 +----- .../gitnex/adapters/RepoForksAdapter.java | 18 +------ .../gitnex/adapters/ReposListAdapter.java | 16 +----- .../adapters/profile/RepositoriesAdapter.java | 16 +----- .../profile/StarredRepositoriesAdapter.java | 16 +----- .../fragments/BottomSheetReplyFragment.java | 9 ++-- .../BottomSheetSingleIssueFragment.java | 3 +- .../gitnex/fragments/DiffFilesFragment.java | 2 +- .../mian/gitnex/fragments/DiffFragment.java | 1 + .../fragments/NotificationsFragment.java | 19 ++----- .../helpers/contexts/RepositoryContext.java | 19 +++++++ 17 files changed, 83 insertions(+), 175 deletions(-) diff --git a/app/src/main/java/org/mian/gitnex/actions/IssueActions.java b/app/src/main/java/org/mian/gitnex/actions/IssueActions.java index c269fbdc..b9ce83fe 100644 --- a/app/src/main/java/org/mian/gitnex/actions/IssueActions.java +++ b/app/src/main/java/org/mian/gitnex/actions/IssueActions.java @@ -93,7 +93,7 @@ public class IssueActions { IssuesFragment.resumeIssues = issue.getIssue().getPullRequest() == null; PullRequestsFragment.resumePullRequests = issue.getIssue().getPullRequest() != null; } - if(issue.getIssueType().equals("Pull")) { + if(issue.getIssueType().equalsIgnoreCase("Pull")) { if(issueState.equals("closed")) { Toasty.success(ctx, ctx.getString(R.string.prClosed)); } diff --git a/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java b/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java index 27802af1..98db07dc 100644 --- a/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/DeepLinksActivity.java @@ -180,23 +180,9 @@ public class DeepLinksActivity extends BaseActivity { "Issue" ); - final String repoOwner = data.getPathSegments().get(0); - final String repoName = data.getPathSegments().get(1); + issue.getRepository().saveToDB(ctx); - int currentActiveAccountId = tinyDB.getInt("currentActiveAccountId"); - RepositoriesApi repositoryData = BaseApi.getInstance(ctx, RepositoriesApi.class); - assert repositoryData != null; - - Integer count = repositoryData.checkRepository(currentActiveAccountId, repoOwner, repoName); - - int repoId; - if(count == 0) { - repoId = (int) repositoryData.insertRepository(currentActiveAccountId, repoOwner, repoName); - } - else { - repoId = repositoryData.getRepository(currentActiveAccountId, repoOwner, repoName).getRepositoryId(); - } - issue.getRepository().setRepositoryId(repoId); + issueIntent.putExtra(IssueContext.INTENT_EXTRA, issueIntent); ctx.startActivity(issueIntent); finish(); @@ -384,20 +370,7 @@ public class DeepLinksActivity extends BaseActivity { IssueContext issue = new IssueContext(prInfo, new RepositoryContext(repoOwner, repoName, ctx)); - int currentActiveAccountId = tinyDB.getInt("currentActiveAccountId"); - RepositoriesApi repositoryData = BaseApi.getInstance(ctx, RepositoriesApi.class); - assert repositoryData != null; - - Integer count = repositoryData.checkRepository(currentActiveAccountId, repoOwner, repoName); - - int id; - if(count == 0) { - id = (int) repositoryData.insertRepository(currentActiveAccountId, repoOwner, repoName); - } - else { - id = repositoryData.getRepository(currentActiveAccountId, repoOwner, repoName).getRepositoryId(); - } - issue.getRepository().setRepositoryId(id); + issue.getRepository().saveToDB(ctx); issueIntent.putExtra(IssueContext.INTENT_EXTRA, issue); ctx.startActivity(issueIntent); @@ -442,20 +415,7 @@ public class DeepLinksActivity extends BaseActivity { repoIntent.putExtra("goToSection", "yes"); repoIntent.putExtra("goToSectionType", type); - int currentActiveAccountId = tinyDB.getInt("currentActiveAccountId"); - RepositoriesApi repositoryData = BaseApi.getInstance(ctx, RepositoriesApi.class); - - Integer count = repositoryData.checkRepository(currentActiveAccountId, repoOwner, repoName); - - int id; - if(count == 0) { - id = (int) repositoryData.insertRepository(currentActiveAccountId, repoOwner, repoName); - } - else { - id = repositoryData.getRepository(currentActiveAccountId, repoOwner, repoName).getRepositoryId(); - } - - repo.setRepositoryId(id); + repo.saveToDB(ctx); repoIntent.putExtra(RepositoryContext.INTENT_EXTRA, repo); ctx.startActivity(repoIntent); diff --git a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java index 13624963..29c90825 100644 --- a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java @@ -116,7 +116,7 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt public static boolean singleIssueUpdate = false; public boolean commentEdited = false; - public boolean commentPosted = false; + public static boolean commentPosted = false; private IssueCommentsViewModel issueCommentsModel; @@ -415,18 +415,28 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt }); } + private Runnable showMenu = () -> {}; + private boolean loadingFinishedIssue = false; + private boolean loadingFinishedPr = false; + private boolean loadingFinishedRepo = false; + private void updateMenuState() { + if(loadingFinishedIssue && loadingFinishedPr && loadingFinishedRepo) showMenu.run(); + } + @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); - new Handler().postDelayed(() -> { + showMenu = () -> { inflater.inflate(R.menu.generic_nav_dotted_menu, menu); if(issue.getIssueType() != null) { if(issue.getIssueType().equalsIgnoreCase("pull")) { inflater.inflate(R.menu.pr_info_menu, menu); } } - }, 800); + showMenu = () -> {}; // reset Runnable + }; + updateMenuState(); return true; } @@ -437,7 +447,8 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt if(id == android.R.id.home) { - if(getIntent().getStringExtra("openedFromLink") != null && getIntent().getStringExtra("openedFromLink").equals("true")) { + if(issue.hasIssue() && getIntent().getStringExtra("openedFromLink") != null && + getIntent().getStringExtra("openedFromLink").equals("true")) { Intent intent = issue.getRepository().getIntent(ctx, RepoDetailActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); @@ -455,20 +466,22 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt } else if(id == R.id.prInfo) { - View view = LayoutInflater.from(ctx).inflate(R.layout.custom_pr_info_dialog, null); + if(issue.getPullRequest() != null) { + View view = LayoutInflater.from(ctx).inflate(R.layout.custom_pr_info_dialog, null); - TextView baseBranch = view.findViewById(R.id.baseBranch); - TextView headBranch = view.findViewById(R.id.headBranch); + TextView baseBranch = view.findViewById(R.id.baseBranch); + TextView headBranch = view.findViewById(R.id.headBranch); - baseBranch.setText(issue.getPullRequest().getBase().getRef()); - headBranch.setText(issue.getPullRequest().getHead().getRef()); + baseBranch.setText(issue.getPullRequest().getBase().getRef()); + headBranch.setText(issue.getPullRequest().getHead().getRef()); - AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx); + AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx); - alertDialog.setTitle(getResources().getString(R.string.prMergeInfo)); - alertDialog.setView(view); - alertDialog.setPositiveButton(getString(R.string.okButton), null); - alertDialog.create().show(); + alertDialog.setTitle(getResources().getString(R.string.prMergeInfo)); + alertDialog.setView(view); + alertDialog.setPositiveButton(getString(R.string.okButton), null); + alertDialog.create().show(); + } return true; } else { @@ -623,7 +636,11 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt private void initWithIssue() { if(!issue.getRepository().hasRepository()) { getRepoInfo(); + } else { + loadingFinishedRepo = true; } + loadingFinishedIssue = true; + updateMenuState(); viewBinding.issuePrState.setVisibility(View.VISIBLE); @@ -646,10 +663,13 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt } } else if(issue.getIssue().getState().equals("closed")) { // issue closed - + loadingFinishedPr = true; + updateMenuState(); viewBinding.issuePrState.setImageResource(R.drawable.ic_issue); ImageViewCompat.setImageTintList(viewBinding.issuePrState, ColorStateList.valueOf(ctx.getResources().getColor(R.color.iconIssuePrClosedColor))); } else { + loadingFinishedPr = true; + updateMenuState(); viewBinding.issuePrState.setImageResource(R.drawable.ic_issue); ImageViewCompat.setImageTintList(viewBinding.issuePrState, ColorStateList.valueOf(ctx.getResources().getColor(R.color.darkGreen))); } @@ -878,6 +898,8 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt public void onResponse(@NonNull Call call, @NonNull Response response) { if(response.isSuccessful() && response.body() != null) { issue.setPullRequest(response.body()); + loadingFinishedPr = true; + updateMenuState(); } } @@ -899,6 +921,8 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt if(response.code() == 200) { assert repoInfo != null; issue.getRepository().setRepository(repoInfo); + loadingFinishedRepo = true; + updateMenuState(); } else { Toasty.error(ctx, getString(R.string.genericError)); diff --git a/app/src/main/java/org/mian/gitnex/activities/MergePullRequestActivity.java b/app/src/main/java/org/mian/gitnex/activities/MergePullRequestActivity.java index 72460737..92cea91d 100644 --- a/app/src/main/java/org/mian/gitnex/activities/MergePullRequestActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/MergePullRequestActivity.java @@ -99,7 +99,7 @@ public class MergePullRequestActivity extends BaseActivity { viewBinding.mergeButton.setOnClickListener(mergePullRequest); } - if(!issue.getPullRequest().getHead().getRepo().getPermissions().isPush()) { + if(!(issue.getPullRequest().getHead().getRepo() != null ? issue.getPullRequest().getHead().getRepo().getPermissions().isPush() : false)) { viewBinding.deleteBranch.setVisibility(View.GONE); viewBinding.deleteBranchForkInfo.setVisibility(View.GONE); } diff --git a/app/src/main/java/org/mian/gitnex/adapters/DiffAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/DiffAdapter.java index 7fd2288a..132f1f3e 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/DiffAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/DiffAdapter.java @@ -89,7 +89,7 @@ public class DiffAdapter extends BaseAdapter { } - if(type.equals("pull")) { + if(type.equalsIgnoreCase("pull")) { convertView.setOnClickListener(v -> { if(selectedLines.contains(position)) { diff --git a/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java index c5418548..ee8e03e5 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ExploreIssuesAdapter.java @@ -119,22 +119,9 @@ public class ExploreIssuesAdapter extends RecyclerView.Adapter { Context context = v.getContext(); RepositoryContext repo = new RepositoryContext(userRepositories, context); + repo.saveToDB(context); Intent intent = repo.getIntent(context, RepoDetailActivity.class); - int currentActiveAccountId = tinyDb.getInt("currentActiveAccountId"); - RepositoriesApi repositoryData = BaseApi.getInstance(context, RepositoriesApi.class); - - assert repositoryData != null; - Integer count = repositoryData.checkRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - - if(count == 0) { - long id = repositoryData.insertRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId((int) id); - } - else { - Repository data = repositoryData.getRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId(data.getRepositoryId()); - } - context.startActivity(intent); }); } diff --git a/app/src/main/java/org/mian/gitnex/adapters/RepoForksAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/RepoForksAdapter.java index a5c12333..98d39464 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/RepoForksAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/RepoForksAdapter.java @@ -179,26 +179,10 @@ public class RepoForksAdapter extends RecyclerView.Adapter { Context context = v.getContext(); RepositoryContext repo = new RepositoryContext(userRepositories, context); + repo.saveToDB(context); Intent intent = repo.getIntent(context, RepoDetailActivity.class); - int currentActiveAccountId = TinyDB.getInstance(context).getInt("currentActiveAccountId"); - RepositoriesApi repositoryData = BaseApi.getInstance(context, RepositoriesApi.class); - - assert repositoryData != null; - Integer count = repositoryData.checkRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - - if(count == 0) { - long id = repositoryData.insertRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId((int) id); - } - else { - Repository data = repositoryData.getRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId(data.getRepositoryId()); - } - context.startActivity(intent); }); } diff --git a/app/src/main/java/org/mian/gitnex/adapters/profile/RepositoriesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/profile/RepositoriesAdapter.java index 171c3324..12036059 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/profile/RepositoriesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/profile/RepositoriesAdapter.java @@ -99,23 +99,9 @@ public class RepositoriesAdapter extends RecyclerView.Adapter { Context context = v.getContext(); RepositoryContext repo = new RepositoryContext(userRepositories, context); + repo.saveToDB(context); Intent intent = repo.getIntent(context, RepoDetailActivity.class); - int currentActiveAccountId = TinyDB.getInstance(context).getInt("currentActiveAccountId"); - RepositoriesApi repositoryData = BaseApi.getInstance(context, RepositoriesApi.class); - - assert repositoryData != null; - Integer count = repositoryData.checkRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - - if(count == 0) { - long id = repositoryData.insertRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId((int) id); - } - else { - org.mian.gitnex.database.models.Repository data = repositoryData.getRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId(data.getRepositoryId()); - } - context.startActivity(intent); }); diff --git a/app/src/main/java/org/mian/gitnex/adapters/profile/StarredRepositoriesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/profile/StarredRepositoriesAdapter.java index 5aa2ef4d..e5a11517 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/profile/StarredRepositoriesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/profile/StarredRepositoriesAdapter.java @@ -99,23 +99,9 @@ public class StarredRepositoriesAdapter extends RecyclerView.Adapter { Context context = v.getContext(); RepositoryContext repo = new RepositoryContext(userRepositories, context); + repo.saveToDB(context); Intent intent = repo.getIntent(context, RepoDetailActivity.class); - int currentActiveAccountId = TinyDB.getInstance(context).getInt("currentActiveAccountId"); - RepositoriesApi repositoryData = BaseApi.getInstance(context, RepositoriesApi.class); - - assert repositoryData != null; - Integer count = repositoryData.checkRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - - if(count == 0) { - long id = repositoryData.insertRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId((int) id); - } - else { - Repository data = repositoryData.getRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId(data.getRepositoryId()); - } - context.startActivity(intent); }); } diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetReplyFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetReplyFragment.java index 4fe938d1..c0754937 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetReplyFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetReplyFragment.java @@ -29,6 +29,8 @@ import org.mian.gitnex.activities.IssueDetailActivity; import org.mian.gitnex.activities.MainActivity; import org.mian.gitnex.database.api.BaseApi; import org.mian.gitnex.database.api.DraftsApi; +import org.mian.gitnex.database.api.RepositoriesApi; +import org.mian.gitnex.database.models.Repository; import org.mian.gitnex.databinding.BottomSheetReplyLayoutBinding; import org.mian.gitnex.helpers.Constants; import org.mian.gitnex.helpers.TinyDB; @@ -186,10 +188,7 @@ public class BottomSheetReplyFragment extends BottomSheetDialogFragment { if(status == ActionResult.Status.SUCCESS) { - FragmentActivity activity = requireActivity(); - if(activity instanceof IssueDetailActivity) { - ((IssueDetailActivity) activity).commentPosted = true; - } + IssueDetailActivity.commentPosted = true; Toasty.success(getContext(), getString(R.string.commentSuccess)); @@ -284,7 +283,7 @@ public class BottomSheetReplyFragment extends BottomSheetDialogFragment { if(draftId == 0) { - draftId = draftsApi.insertDraft(issue.getRepository().getRepositoryId(), currentActiveAccountId, issue.getIssueIndex(), text, draftType, "TODO", issue.getIssueType()); + draftId = draftsApi.insertDraft(issue.getRepository().saveToDB(requireContext()), currentActiveAccountId, issue.getIssueIndex(), text, draftType, "TODO", issue.getIssueType()); } else { diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSingleIssueFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSingleIssueFragment.java index f0239d5a..0c88dc38 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSingleIssueFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetSingleIssueFragment.java @@ -83,7 +83,8 @@ public class BottomSheetSingleIssueFragment extends BottomSheetDialogFragment { binding.editIssue.setText(R.string.menuEditText); - boolean canPushPullSource = issue.getPullRequest().getHead().getRepo().getPermissions().isPush(); + boolean canPushPullSource = issue.getPullRequest().getHead().getRepo() != null ? + issue.getPullRequest().getHead().getRepo().getPermissions().isPush() : false; if(issue.getPullRequest().isMerged() || issue.getIssue().getState().equals("closed")) { binding.updatePullRequest.setVisibility(View.GONE); binding.mergePullRequest.setVisibility(View.GONE); diff --git a/app/src/main/java/org/mian/gitnex/fragments/DiffFilesFragment.java b/app/src/main/java/org/mian/gitnex/fragments/DiffFilesFragment.java index 80dcd3af..0b6c8a7f 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/DiffFilesFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/DiffFilesFragment.java @@ -54,7 +54,7 @@ public class DiffFilesFragment extends Fragment { binding.diffFiles.setOnItemClickListener((parent, view, position, id) -> requireActivity().getSupportFragmentManager() .beginTransaction() - .replace(R.id.fragment_container, DiffFragment.newInstance((FileDiffView) parent.getItemAtPosition(position), issue.getIssueType().toLowerCase())) + .replace(R.id.fragment_container, DiffFragment.newInstance((FileDiffView) parent.getItemAtPosition(position), issue)) .commit()); getPullDiffFiles(issue.getRepository().getOwner(), issue.getRepository().getName(), String.valueOf(issue.getIssueIndex())); diff --git a/app/src/main/java/org/mian/gitnex/fragments/DiffFragment.java b/app/src/main/java/org/mian/gitnex/fragments/DiffFragment.java index c7a6d784..668d35f6 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/DiffFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/DiffFragment.java @@ -44,6 +44,7 @@ public class DiffFragment extends Fragment { DiffFragment fragment = new DiffFragment(); fragment.setFileDiffView(fileDiffView); fragment.setIssue(issue); + fragment.type = "pull"; return fragment; } diff --git a/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java index d12eb72c..5b5348de 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/NotificationsFragment.java @@ -247,25 +247,14 @@ public class NotificationsFragment extends Fragment implements NotificationsAdap if(StringUtils.containsAny(notificationThread.getSubject().getType().toLowerCase(), "pull", "issue")) { - RepositoryContext repo = new RepositoryContext(notificationThread.getRepository(), context); + RepositoryContext repo = new RepositoryContext(notificationThread.getRepository().getOwner().getLogin(), + notificationThread.getRepository().getName(), context); // we can't use the repository object here directly because the permissions are missing String issueUrl = notificationThread.getSubject().getUrl(); - int currentActiveAccountId = TinyDB.getInstance(requireContext()).getInt("currentActiveAccountId"); - RepositoriesApi repositoryData = BaseApi.getInstance(context, RepositoriesApi.class); - - Integer count = repositoryData.checkRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - - if(count == 0) { - long id = repositoryData.insertRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId((int) id); - } - else { - Repository data = repositoryData.getRepository(currentActiveAccountId, repo.getOwner(), repo.getName()); - repo.setRepositoryId(data.getRepositoryId()); - } + repo.saveToDB(context); Intent intent = new IssueContext( - new RepositoryContext(notificationThread.getRepository(), context), + repo, Integer.parseInt(issueUrl.substring(issueUrl.lastIndexOf("/") + 1)), notificationThread.getSubject().getType() ).getIntent(context, IssueDetailActivity.class); diff --git a/app/src/main/java/org/mian/gitnex/helpers/contexts/RepositoryContext.java b/app/src/main/java/org/mian/gitnex/helpers/contexts/RepositoryContext.java index 67768a6e..767817ff 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/contexts/RepositoryContext.java +++ b/app/src/main/java/org/mian/gitnex/helpers/contexts/RepositoryContext.java @@ -235,4 +235,23 @@ public class RepositoryContext implements Serializable { repository = null; } + public int saveToDB(Context context) { + int currentActiveAccountId = TinyDB.getInstance(context).getInt("currentActiveAccountId"); + RepositoriesApi repositoryData = BaseApi.getInstance(context, RepositoriesApi.class); + + assert repositoryData != null; + Integer count = repositoryData.checkRepository(currentActiveAccountId, getOwner(), getName()); + + if(count == 0) { + long id = repositoryData.insertRepository(currentActiveAccountId, getOwner(), getName()); + setRepositoryId((int) id); + return (int) id; + } + else { + Repository data = repositoryData.getRepository(currentActiveAccountId, getOwner(), getName()); + setRepositoryId(data.getRepositoryId()); + return data.getRepositoryId(); + } + } + }