Search in sources :

Example 6 with Issue

use of com.fastaccess.data.dao.model.Issue in project FastHub by k0shk0sh.

the class IssueTimelinePresenter method onHandleDeletion.

@Override
public void onHandleDeletion(@Nullable Bundle bundle) {
    if (bundle != null) {
        long commId = bundle.getLong(BundleConstant.EXTRA, 0);
        if (commId != 0) {
            if (getView() == null || getView().getIssue() == null)
                return;
            Issue issue = getView().getIssue();
            makeRestCall(RestProvider.getIssueService(isEnterprise()).deleteIssueComment(issue.getLogin(), issue.getRepoId(), commId), booleanResponse -> sendToView(view -> {
                if (booleanResponse.code() == 204) {
                    Comment comment = new Comment();
                    comment.setId(commId);
                    view.onRemove(TimelineModel.constructComment(comment));
                } else {
                    view.showMessage(R.string.error, R.string.error_deleting_comment);
                }
            }));
        }
    }
}
Also used : Comment(com.fastaccess.data.dao.model.Comment) GenericEvent(com.fastaccess.data.dao.timeline.GenericEvent) Bundle(android.os.Bundle) SourceModel(com.fastaccess.data.dao.timeline.SourceModel) ActivityHelper(com.fastaccess.helper.ActivityHelper) Getter(lombok.Getter) TimelineModel(com.fastaccess.data.dao.TimelineModel) CommentsHelper(com.fastaccess.provider.timeline.CommentsHelper) Uri(android.net.Uri) InputHelper(com.fastaccess.helper.InputHelper) NonNull(android.support.annotation.NonNull) Issue(com.fastaccess.data.dao.model.Issue) CreateIssueActivity(com.fastaccess.ui.modules.repos.issues.create.CreateIssueActivity) SchemeParser(com.fastaccess.provider.scheme.SchemeParser) ArrayList(java.util.ArrayList) RxHelper(com.fastaccess.helper.RxHelper) PopupMenu(android.widget.PopupMenu) View(android.view.View) Observable(io.reactivex.Observable) ReactionTypes(com.fastaccess.data.dao.types.ReactionTypes) BasePresenter(com.fastaccess.ui.base.mvp.presenter.BasePresenter) BundleConstant(com.fastaccess.helper.BundleConstant) CommentRequestModel(com.fastaccess.data.dao.CommentRequestModel) Login(com.fastaccess.data.dao.model.Login) RestProvider(com.fastaccess.provider.rest.RestProvider) BaseMvp(com.fastaccess.ui.base.mvp.BaseMvp) ReactionsProvider(com.fastaccess.provider.timeline.ReactionsProvider) List(java.util.List) R(com.fastaccess.R) FilterIssuesActivity(com.fastaccess.ui.modules.filter.issues.FilterIssuesActivity) TimelineConverter(com.fastaccess.provider.timeline.TimelineConverter) Nullable(android.support.annotation.Nullable) Activity(android.app.Activity) Comment(com.fastaccess.data.dao.model.Comment) Issue(com.fastaccess.data.dao.model.Issue)

Example 7 with Issue

use of com.fastaccess.data.dao.model.Issue in project FastHub by k0shk0sh.

the class IssueTimelinePresenter method onHandleComment.

@Override
public void onHandleComment(@NonNull String text, @Nullable Bundle bundle) {
    if (getView() == null)
        return;
    Issue issue = getView().getIssue();
    if (issue != null) {
        if (bundle == null) {
            CommentRequestModel commentRequestModel = new CommentRequestModel();
            commentRequestModel.setBody(text);
            manageDisposable(RxHelper.getObservable(RestProvider.getIssueService(isEnterprise()).createIssueComment(issue.getLogin(), issue.getRepoId(), issue.getNumber(), commentRequestModel)).doOnSubscribe(disposable -> sendToView(view -> view.showBlockingProgress(0))).subscribe(comment -> sendToView(view -> view.addNewComment(TimelineModel.constructComment(comment))), throwable -> {
                onError(throwable);
                sendToView(IssueTimelineMvp.View::onHideBlockingProgress);
            }));
        }
    }
}
Also used : Comment(com.fastaccess.data.dao.model.Comment) GenericEvent(com.fastaccess.data.dao.timeline.GenericEvent) Bundle(android.os.Bundle) SourceModel(com.fastaccess.data.dao.timeline.SourceModel) ActivityHelper(com.fastaccess.helper.ActivityHelper) Getter(lombok.Getter) TimelineModel(com.fastaccess.data.dao.TimelineModel) CommentsHelper(com.fastaccess.provider.timeline.CommentsHelper) Uri(android.net.Uri) InputHelper(com.fastaccess.helper.InputHelper) NonNull(android.support.annotation.NonNull) Issue(com.fastaccess.data.dao.model.Issue) CreateIssueActivity(com.fastaccess.ui.modules.repos.issues.create.CreateIssueActivity) SchemeParser(com.fastaccess.provider.scheme.SchemeParser) ArrayList(java.util.ArrayList) RxHelper(com.fastaccess.helper.RxHelper) PopupMenu(android.widget.PopupMenu) View(android.view.View) Observable(io.reactivex.Observable) ReactionTypes(com.fastaccess.data.dao.types.ReactionTypes) BasePresenter(com.fastaccess.ui.base.mvp.presenter.BasePresenter) BundleConstant(com.fastaccess.helper.BundleConstant) CommentRequestModel(com.fastaccess.data.dao.CommentRequestModel) Login(com.fastaccess.data.dao.model.Login) RestProvider(com.fastaccess.provider.rest.RestProvider) BaseMvp(com.fastaccess.ui.base.mvp.BaseMvp) ReactionsProvider(com.fastaccess.provider.timeline.ReactionsProvider) List(java.util.List) R(com.fastaccess.R) FilterIssuesActivity(com.fastaccess.ui.modules.filter.issues.FilterIssuesActivity) TimelineConverter(com.fastaccess.provider.timeline.TimelineConverter) Nullable(android.support.annotation.Nullable) Activity(android.app.Activity) Issue(com.fastaccess.data.dao.model.Issue) CommentRequestModel(com.fastaccess.data.dao.CommentRequestModel)

Example 8 with Issue

use of com.fastaccess.data.dao.model.Issue in project FastHub by k0shk0sh.

the class IssueTimelinePresenter method onItemClick.

@Override
public void onItemClick(int position, View v, TimelineModel item) {
    if (getView() != null) {
        Issue issue = getView().getIssue();
        if (issue == null)
            return;
        if (item.getType() == TimelineModel.COMMENT) {
            if (v.getId() == R.id.commentMenu) {
                PopupMenu popupMenu = new PopupMenu(v.getContext(), v);
                popupMenu.inflate(R.menu.comments_menu);
                String username = Login.getUser().getLogin();
                boolean isOwner = CommentsHelper.isOwner(username, issue.getLogin(), item.getComment().getUser().getLogin()) || isCollaborator;
                popupMenu.getMenu().findItem(R.id.delete).setVisible(isOwner);
                popupMenu.getMenu().findItem(R.id.edit).setVisible(isOwner);
                popupMenu.setOnMenuItemClickListener(item1 -> {
                    if (getView() == null)
                        return false;
                    if (item1.getItemId() == R.id.delete) {
                        getView().onShowDeleteMsg(item.getComment().getId());
                    } else if (item1.getItemId() == R.id.reply) {
                        getView().onReply(item.getComment().getUser(), item.getComment().getBody());
                    } else if (item1.getItemId() == R.id.edit) {
                        getView().onEditComment(item.getComment());
                    } else if (item1.getItemId() == R.id.share) {
                        ActivityHelper.shareUrl(v.getContext(), item.getComment().getHtmlUrl());
                    }
                    return true;
                });
                popupMenu.show();
            } else {
                onHandleReaction(v.getId(), item.getComment().getId(), ReactionsProvider.COMMENT);
            }
        } else if (item.getType() == TimelineModel.EVENT) {
            GenericEvent issueEventModel = item.getGenericEvent();
            if (issueEventModel.getCommitUrl() != null) {
                SchemeParser.launchUri(v.getContext(), Uri.parse(issueEventModel.getCommitUrl()));
            } else if (issueEventModel.getLabel() != null) {
                FilterIssuesActivity.startActivity(v, issue.getLogin(), issue.getRepoId(), true, true, isEnterprise(), "label:\"" + issueEventModel.getLabel().getName() + "\"");
            } else if (issueEventModel.getMilestone() != null) {
                FilterIssuesActivity.startActivity(v, issue.getLogin(), issue.getRepoId(), true, true, isEnterprise(), "milestone:\"" + issueEventModel.getMilestone().getTitle() + "\"");
            } else if (issueEventModel.getAssignee() != null) {
                FilterIssuesActivity.startActivity(v, issue.getLogin(), issue.getRepoId(), true, true, isEnterprise(), "assignee:\"" + issueEventModel.getAssignee().getLogin() + "\"");
            } else {
                SourceModel sourceModel = issueEventModel.getSource();
                if (sourceModel != null) {
                    if (sourceModel.getCommit() != null) {
                        SchemeParser.launchUri(v.getContext(), sourceModel.getCommit().getUrl());
                    } else if (sourceModel.getPullRequest() != null) {
                        SchemeParser.launchUri(v.getContext(), sourceModel.getPullRequest().getUrl());
                    } else if (sourceModel.getIssue() != null) {
                        SchemeParser.launchUri(v.getContext(), sourceModel.getIssue().getHtmlUrl());
                    } else if (sourceModel.getRepository() != null) {
                        SchemeParser.launchUri(v.getContext(), sourceModel.getRepository().getUrl());
                    }
                }
            }
        } else if (item.getType() == TimelineModel.HEADER) {
            if (v.getId() == R.id.commentMenu) {
                PopupMenu popupMenu = new PopupMenu(v.getContext(), v);
                popupMenu.inflate(R.menu.comments_menu);
                String username = Login.getUser().getLogin();
                boolean isOwner = CommentsHelper.isOwner(username, item.getIssue().getLogin(), item.getIssue().getUser().getLogin()) || isCollaborator;
                popupMenu.getMenu().findItem(R.id.edit).setVisible(isOwner);
                popupMenu.setOnMenuItemClickListener(item1 -> {
                    if (getView() == null)
                        return false;
                    if (item1.getItemId() == R.id.reply) {
                        getView().onReply(item.getIssue().getUser(), item.getIssue().getBody());
                    } else if (item1.getItemId() == R.id.edit) {
                        Activity activity = ActivityHelper.getActivity(v.getContext());
                        if (activity == null)
                            return false;
                        CreateIssueActivity.startForResult(activity, item.getIssue().getLogin(), item.getIssue().getRepoId(), item.getIssue(), isEnterprise());
                    } else if (item1.getItemId() == R.id.share) {
                        ActivityHelper.shareUrl(v.getContext(), item.getIssue().getHtmlUrl());
                    }
                    return true;
                });
                popupMenu.show();
            } else {
                onHandleReaction(v.getId(), item.getIssue().getNumber(), ReactionsProvider.HEADER);
            }
        }
    }
}
Also used : SourceModel(com.fastaccess.data.dao.timeline.SourceModel) Issue(com.fastaccess.data.dao.model.Issue) GenericEvent(com.fastaccess.data.dao.timeline.GenericEvent) CreateIssueActivity(com.fastaccess.ui.modules.repos.issues.create.CreateIssueActivity) FilterIssuesActivity(com.fastaccess.ui.modules.filter.issues.FilterIssuesActivity) Activity(android.app.Activity) PopupMenu(android.widget.PopupMenu)

Example 9 with Issue

use of com.fastaccess.data.dao.model.Issue in project FastHub by k0shk0sh.

the class IssueTimelinePresenter method onItemLongClick.

@Override
public void onItemLongClick(int position, View v, TimelineModel item) {
    if (getView() == null)
        return;
    if (item.getType() == TimelineModel.COMMENT || item.getType() == TimelineModel.HEADER) {
        if (v.getId() == R.id.commentMenu && item.getType() == TimelineModel.COMMENT) {
            Comment comment = item.getComment();
            if (getView() != null)
                getView().onReply(comment.getUser(), comment.getBody());
        } else {
            if (getView().getIssue() == null)
                return;
            Issue issue = getView().getIssue();
            String login = issue.getLogin();
            String repoId = issue.getRepoId();
            if (!InputHelper.isEmpty(login) && !InputHelper.isEmpty(repoId)) {
                ReactionTypes type = ReactionTypes.get(v.getId());
                if (type != null) {
                    if (item.getType() == TimelineModel.HEADER) {
                        getView().showReactionsPopup(type, login, repoId, item.getIssue().getNumber(), true);
                    } else {
                        getView().showReactionsPopup(type, login, repoId, item.getComment().getId(), false);
                    }
                } else {
                    onItemClick(position, v, item);
                }
            }
        }
    } else {
        onItemClick(position, v, item);
    }
}
Also used : Comment(com.fastaccess.data.dao.model.Comment) Issue(com.fastaccess.data.dao.model.Issue) ReactionTypes(com.fastaccess.data.dao.types.ReactionTypes)

Example 10 with Issue

use of com.fastaccess.data.dao.model.Issue in project FastHub by k0shk0sh.

the class CreateIssueActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState == null) {
        Bundle bundle = getIntent().getExtras();
        login = bundle.getString(BundleConstant.EXTRA);
        repoId = bundle.getString(BundleConstant.ID);
        isFeedback = bundle.getBoolean(BundleConstant.EXTRA_TWO);
        if (bundle.getParcelable(BundleConstant.ITEM) != null) {
            if (bundle.getParcelable(BundleConstant.ITEM) instanceof Issue) {
                issue = bundle.getParcelable(BundleConstant.ITEM);
                setTitle(getString(R.string.update_issue));
            } else if (bundle.getParcelable(BundleConstant.ITEM) instanceof PullRequest) {
                pullRequest = bundle.getParcelable(BundleConstant.ITEM);
                setTitle(getString(R.string.update_pull_request));
            }
        }
        if (issue != null) {
            Logger.e(issue.getLabels(), issue.getMilestone(), issue.getAssignees());
            if (issue.getLabels() != null) {
                onSelectedLabels(new ArrayList<>(issue.getLabels()));
            }
            if (issue.getAssignees() != null) {
                onSelectedAssignees(new ArrayList<>(issue.getAssignees()), false);
            }
            if (issue.getMilestone() != null) {
                milestoneModel = issue.getMilestone();
                onMilestoneSelected(milestoneModel);
            }
            if (!InputHelper.isEmpty(issue.getTitle())) {
                if (title.getEditText() != null)
                    title.getEditText().setText(issue.getTitle());
            }
            if (!InputHelper.isEmpty(issue.getBody())) {
                onSetCode(issue.getBody());
            }
        }
        if (pullRequest != null) {
            if (pullRequest.getLabels() != null) {
                onSelectedLabels(new ArrayList<>(pullRequest.getLabels()));
            }
            if (pullRequest.getAssignees() != null) {
                users.addAll(pullRequest.getAssignees());
                onSelectedAssignees(new ArrayList<>(pullRequest.getAssignees()), false);
            }
            if (pullRequest.getMilestone() != null) {
                milestoneModel = pullRequest.getMilestone();
                onMilestoneSelected(milestoneModel);
            }
            if (!InputHelper.isEmpty(pullRequest.getTitle())) {
                if (title.getEditText() != null)
                    title.getEditText().setText(pullRequest.getTitle());
            }
            if (!InputHelper.isEmpty(pullRequest.getBody())) {
                onSetCode(pullRequest.getBody());
            }
        }
    }
    getPresenter().checkAuthority(login, repoId);
    if (isFeedback || ("k0shk0sh".equalsIgnoreCase(login) && repoId.equalsIgnoreCase("FastHub"))) {
        Toasty.info(App.getInstance(), getString(R.string.report_issue_warning), Toast.LENGTH_LONG).show();
        setTitle(R.string.submit_feedback);
        getPresenter().onCheckAppVersion();
    }
    if (BuildConfig.DEBUG && isFeedback) {
        alertDialog = new AlertDialog.Builder(this).setTitle("You are currently using a debug build").setMessage("If you have found a bug, please report it on slack." + "\n" + "Feature requests can be submitted here." + "\n" + "Happy Testing").setPositiveButton(android.R.string.ok, null).show();
    }
    if (toolbar != null)
        toolbar.setSubtitle(login + "/" + repoId);
    setTaskName(login + "/" + repoId + " - " + (isFeedback ? getString(R.string.submit_feedback) : getString(R.string.create_issue)));
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) Issue(com.fastaccess.data.dao.model.Issue) Bundle(android.os.Bundle) PullRequest(com.fastaccess.data.dao.model.PullRequest)

Aggregations

Issue (com.fastaccess.data.dao.model.Issue)13 Activity (android.app.Activity)4 Bundle (android.os.Bundle)4 NonNull (android.support.annotation.NonNull)4 Nullable (android.support.annotation.Nullable)4 R (com.fastaccess.R)4 Comment (com.fastaccess.data.dao.model.Comment)4 Login (com.fastaccess.data.dao.model.Login)4 BundleConstant (com.fastaccess.helper.BundleConstant)4 InputHelper (com.fastaccess.helper.InputHelper)4 RxHelper (com.fastaccess.helper.RxHelper)4 RestProvider (com.fastaccess.provider.rest.RestProvider)4 BaseMvp (com.fastaccess.ui.base.mvp.BaseMvp)4 BasePresenter (com.fastaccess.ui.base.mvp.presenter.BasePresenter)4 Observable (io.reactivex.Observable)4 ArrayList (java.util.ArrayList)4 PopupMenu (android.widget.PopupMenu)3 LabelModel (com.fastaccess.data.dao.LabelModel)3 TimelineModel (com.fastaccess.data.dao.TimelineModel)3 PullRequest (com.fastaccess.data.dao.model.PullRequest)3