Search in sources :

Example 6 with Login

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

the class CreateIssuePresenter method onSubmit.

@Override
public void onSubmit(@NonNull String title, @NonNull CharSequence description, @NonNull String login, @NonNull String repo, @Nullable Issue issue, @Nullable PullRequest pullRequestModel, @Nullable ArrayList<LabelModel> labels, @Nullable MilestoneModel milestoneModel, @Nullable ArrayList<User> users) {
    boolean isEmptyTitle = InputHelper.isEmpty(title);
    if (getView() != null) {
        getView().onTitleError(isEmptyTitle);
    }
    if (!isEmptyTitle) {
        if (issue == null && pullRequestModel == null) {
            CreateIssueModel createIssue = new CreateIssueModel();
            createIssue.setBody(InputHelper.toString(description));
            createIssue.setTitle(title);
            if (isCollaborator) {
                if (labels != null && !labels.isEmpty()) {
                    createIssue.setLabels(Stream.of(labels).map(LabelModel::getName).collect(Collectors.toCollection(ArrayList::new)));
                }
                if (users != null && !users.isEmpty()) {
                    createIssue.setAssignees(Stream.of(users).map(User::getLogin).collect(Collectors.toCollection(ArrayList::new)));
                }
                if (milestoneModel != null) {
                    createIssue.setMilestone((long) milestoneModel.getNumber());
                }
            }
            makeRestCall(RestProvider.getIssueService(isEnterprise()).createIssue(login, repo, createIssue), issueModel -> {
                if (issueModel != null) {
                    sendToView(view -> view.onSuccessSubmission(issueModel));
                } else {
                    sendToView(view -> view.showMessage(R.string.error, R.string.error_creating_issue));
                }
            }, false);
        } else {
            if (issue != null) {
                issue.setBody(InputHelper.toString(description));
                issue.setTitle(title);
                int number = issue.getNumber();
                if (isCollaborator) {
                    if (labels != null) {
                        LabelListModel labelModels = new LabelListModel();
                        labelModels.addAll(labels);
                        issue.setLabels(labelModels);
                    }
                    if (milestoneModel != null) {
                        issue.setMilestone(milestoneModel);
                    }
                    if (users != null) {
                        UsersListModel usersListModel = new UsersListModel();
                        usersListModel.addAll(users);
                        issue.setAssignees(usersListModel);
                    }
                }
                IssueRequestModel requestModel = IssueRequestModel.clone(issue, false);
                makeRestCall(RestProvider.getIssueService(isEnterprise()).editIssue(login, repo, number, requestModel), issueModel -> {
                    if (issueModel != null) {
                        sendToView(view -> view.onSuccessSubmission(issueModel));
                    } else {
                        sendToView(view -> view.showMessage(R.string.error, R.string.error_creating_issue));
                    }
                }, false);
            }
            if (pullRequestModel != null) {
                int number = pullRequestModel.getNumber();
                pullRequestModel.setBody(InputHelper.toString(description));
                pullRequestModel.setTitle(title);
                if (isCollaborator) {
                    if (labels != null) {
                        LabelListModel labelModels = new LabelListModel();
                        labelModels.addAll(labels);
                        pullRequestModel.setLabels(labelModels);
                    }
                    if (milestoneModel != null) {
                        pullRequestModel.setMilestone(milestoneModel);
                    }
                    if (users != null) {
                        UsersListModel usersListModel = new UsersListModel();
                        usersListModel.addAll(users);
                        pullRequestModel.setAssignees(usersListModel);
                    }
                }
                IssueRequestModel requestModel = IssueRequestModel.clone(pullRequestModel, false);
                makeRestCall(RestProvider.getPullRequestService(isEnterprise()).editPullRequest(login, repo, number, requestModel).flatMap(pullRequest1 -> RestProvider.getIssueService(isEnterprise()).getIssue(login, repo, number), (pullRequest1, issueReaction) -> {
                    // hack to get reactions from issue api
                    if (issueReaction != null) {
                        pullRequest1.setReactions(issueReaction.getReactions());
                    }
                    return pullRequest1;
                }), pr -> {
                    if (pr != null) {
                        sendToView(view -> view.onSuccessSubmission(pr));
                    } else {
                        sendToView(view -> view.showMessage(R.string.error, R.string.error_creating_issue));
                    }
                }, false);
            }
        }
    }
}
Also used : Stream(com.annimon.stream.Stream) IssueRequestModel(com.fastaccess.data.dao.IssueRequestModel) InputHelper(com.fastaccess.helper.InputHelper) Intent(android.content.Intent) NonNull(android.support.annotation.NonNull) Issue(com.fastaccess.data.dao.model.Issue) ArrayList(java.util.ArrayList) RxHelper(com.fastaccess.helper.RxHelper) MilestoneModel(com.fastaccess.data.dao.MilestoneModel) LabelListModel(com.fastaccess.data.dao.LabelListModel) User(com.fastaccess.data.dao.model.User) BasePresenter(com.fastaccess.ui.base.mvp.presenter.BasePresenter) BundleConstant(com.fastaccess.helper.BundleConstant) Login(com.fastaccess.data.dao.model.Login) RestProvider(com.fastaccess.provider.rest.RestProvider) Collectors(com.annimon.stream.Collectors) BaseMvp(com.fastaccess.ui.base.mvp.BaseMvp) CreateIssueModel(com.fastaccess.data.dao.CreateIssueModel) LabelModel(com.fastaccess.data.dao.LabelModel) PullRequest(com.fastaccess.data.dao.model.PullRequest) R(com.fastaccess.R) BuildConfig(com.fastaccess.BuildConfig) UsersListModel(com.fastaccess.data.dao.UsersListModel) Nullable(android.support.annotation.Nullable) Activity(android.app.Activity) User(com.fastaccess.data.dao.model.User) IssueRequestModel(com.fastaccess.data.dao.IssueRequestModel) UsersListModel(com.fastaccess.data.dao.UsersListModel) LabelModel(com.fastaccess.data.dao.LabelModel) LabelListModel(com.fastaccess.data.dao.LabelListModel) CreateIssueModel(com.fastaccess.data.dao.CreateIssueModel) ArrayList(java.util.ArrayList)

Example 7 with Login

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

the class IssuePagerPresenter method onOpenCloseIssue.

@Override
public void onOpenCloseIssue() {
    Issue currentIssue = getIssue();
    if (currentIssue != null) {
        IssueRequestModel requestModel = IssueRequestModel.clone(currentIssue, true);
        manageDisposable(RxHelper.getObservable(RestProvider.getIssueService(isEnterprise()).editIssue(login, repoId, issueNumber, requestModel)).doOnSubscribe(disposable -> sendToView(view -> view.showProgress(0))).subscribe(issue -> {
            if (issue != null) {
                sendToView(view -> view.showSuccessIssueActionMsg(currentIssue.getState() == IssueState.open));
                issue.setRepoId(issueModel.getRepoId());
                issue.setLogin(issueModel.getLogin());
                issueModel = issue;
                sendToView(view -> view.onSetupIssue(false));
            }
        }, this::onError));
    }
}
Also used : Bundle(android.os.Bundle) Stream(com.annimon.stream.Stream) IssueRequestModel(com.fastaccess.data.dao.IssueRequestModel) IssueState(com.fastaccess.data.dao.types.IssueState) InputHelper(com.fastaccess.helper.InputHelper) Intent(android.content.Intent) NonNull(android.support.annotation.NonNull) Issue(com.fastaccess.data.dao.model.Issue) Response(retrofit2.Response) ArrayList(java.util.ArrayList) RxHelper(com.fastaccess.helper.RxHelper) MilestoneModel(com.fastaccess.data.dao.MilestoneModel) LabelListModel(com.fastaccess.data.dao.LabelListModel) Observable(io.reactivex.Observable) User(com.fastaccess.data.dao.model.User) BasePresenter(com.fastaccess.ui.base.mvp.presenter.BasePresenter) BundleConstant(com.fastaccess.helper.BundleConstant) Login(com.fastaccess.data.dao.model.Login) RestProvider(com.fastaccess.provider.rest.RestProvider) Collectors(com.annimon.stream.Collectors) BaseMvp(com.fastaccess.ui.base.mvp.BaseMvp) PinnedIssues(com.fastaccess.data.dao.model.PinnedIssues) IssueService(com.fastaccess.data.service.IssueService) AssigneesRequestModel(com.fastaccess.data.dao.AssigneesRequestModel) NotificationSubscriptionBodyModel(com.fastaccess.data.dao.NotificationSubscriptionBodyModel) LabelModel(com.fastaccess.data.dao.LabelModel) TextUtils(android.text.TextUtils) Logger(com.fastaccess.helper.Logger) PullsIssuesParser(com.fastaccess.data.dao.PullsIssuesParser) LockIssuePrModel(com.fastaccess.data.dao.LockIssuePrModel) R(com.fastaccess.R) UsersListModel(com.fastaccess.data.dao.UsersListModel) Nullable(android.support.annotation.Nullable) Issue(com.fastaccess.data.dao.model.Issue) IssueRequestModel(com.fastaccess.data.dao.IssueRequestModel)

Example 8 with Login

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

the class IssuePagerPresenter method getIssueFromApi.

private void getIssueFromApi() {
    Login loginUser = Login.getUser();
    if (loginUser == null)
        return;
    makeRestCall(RxHelper.getObservable(Observable.zip(RestProvider.getIssueService(isEnterprise()).getIssue(login, repoId, issueNumber), RestProvider.getRepoService(isEnterprise()).isCollaborator(login, repoId, loginUser.getLogin()), (issue, booleanResponse) -> {
        isCollaborator = booleanResponse.code() == 204;
        return issue;
    })), this::setupIssue);
}
Also used : Login(com.fastaccess.data.dao.model.Login)

Example 9 with Login

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

the class IssuePagerPresenter method isOwner.

@Override
public boolean isOwner() {
    if (getIssue() == null)
        return false;
    User userModel = getIssue() != null ? getIssue().getUser() : null;
    Login me = Login.getUser();
    PullsIssuesParser parser = PullsIssuesParser.getForIssue(getIssue().getHtmlUrl());
    return (userModel != null && userModel.getLogin().equalsIgnoreCase(me.getLogin())) || (parser != null && parser.getLogin().equalsIgnoreCase(me.getLogin()));
}
Also used : User(com.fastaccess.data.dao.model.User) Login(com.fastaccess.data.dao.model.Login) PullsIssuesParser(com.fastaccess.data.dao.PullsIssuesParser)

Example 10 with Login

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

the class LoginPresenter method login.

@Override
public void login(@NonNull String username, @NonNull String password, @Nullable String twoFactorCode, boolean isBasicAuth, @Nullable String endpoint) {
    boolean usernameIsEmpty = InputHelper.isEmpty(username);
    boolean passwordIsEmpty = InputHelper.isEmpty(password);
    boolean endpointIsEmpty = InputHelper.isEmpty(endpoint) && isEnterprise();
    if (getView() == null)
        return;
    getView().onEmptyUserName(usernameIsEmpty);
    getView().onEmptyPassword(passwordIsEmpty);
    getView().onEmptyEndpoint(endpointIsEmpty);
    if ((!usernameIsEmpty && !passwordIsEmpty)) {
        try {
            String authToken = Credentials.basic(username, password);
            if (isBasicAuth && !isEnterprise()) {
                AuthModel authModel = new AuthModel();
                authModel.setScopes(Arrays.asList("user", "repo", "gist", "notifications", "read:org"));
                authModel.setNote(BuildConfig.APPLICATION_ID);
                authModel.setClientSecret(GithubConfigHelper.getSecret());
                authModel.setClientId(GithubConfigHelper.getClientId());
                authModel.setNoteUrl(GithubConfigHelper.getRedirectUrl());
                if (!InputHelper.isEmpty(twoFactorCode)) {
                    authModel.setOtpCode(twoFactorCode);
                }
                makeRestCall(LoginProvider.getLoginRestService(authToken, twoFactorCode, null).login(authModel), accessTokenModel -> {
                    if (!InputHelper.isEmpty(twoFactorCode)) {
                        PrefGetter.setOtpCode(twoFactorCode);
                    }
                    onTokenResponse(accessTokenModel);
                });
            } else {
                accessTokenLogin(password, endpoint, twoFactorCode, authToken);
            }
        } catch (Exception e) {
            sendToView(view -> view.showMessage("Error", "The app was about to crash!!(" + e.getMessage() + ")"));
        }
    }
}
Also used : LoginProvider(com.fastaccess.provider.rest.LoginProvider) Arrays(java.util.Arrays) Login(com.fastaccess.data.dao.model.Login) RestProvider(com.fastaccess.provider.rest.RestProvider) Uri(android.net.Uri) InputHelper(com.fastaccess.helper.InputHelper) HttpException(retrofit2.HttpException) Intent(android.content.Intent) NonNull(android.support.annotation.NonNull) Credentials(okhttp3.Credentials) PrefGetter(com.fastaccess.helper.PrefGetter) R(com.fastaccess.R) BuildConfig(com.fastaccess.BuildConfig) AccessTokenModel(com.fastaccess.data.dao.AccessTokenModel) AuthModel(com.fastaccess.data.dao.AuthModel) Nullable(android.support.annotation.Nullable) GithubConfigHelper(com.fastaccess.helper.GithubConfigHelper) BasePresenter(com.fastaccess.ui.base.mvp.presenter.BasePresenter) AuthModel(com.fastaccess.data.dao.AuthModel) HttpException(retrofit2.HttpException)

Aggregations

Login (com.fastaccess.data.dao.model.Login)19 NonNull (android.support.annotation.NonNull)11 Nullable (android.support.annotation.Nullable)11 RestProvider (com.fastaccess.provider.rest.RestProvider)11 BasePresenter (com.fastaccess.ui.base.mvp.presenter.BasePresenter)11 R (com.fastaccess.R)10 BundleConstant (com.fastaccess.helper.BundleConstant)10 InputHelper (com.fastaccess.helper.InputHelper)10 RxHelper (com.fastaccess.helper.RxHelper)10 ArrayList (java.util.ArrayList)10 Bundle (android.os.Bundle)9 Observable (io.reactivex.Observable)9 User (com.fastaccess.data.dao.model.User)8 BaseMvp (com.fastaccess.ui.base.mvp.BaseMvp)8 CommentRequestModel (com.fastaccess.data.dao.CommentRequestModel)7 Intent (android.content.Intent)6 PullsIssuesParser (com.fastaccess.data.dao.PullsIssuesParser)6 PullRequest (com.fastaccess.data.dao.model.PullRequest)6 TextUtils (android.text.TextUtils)5 Activity (android.app.Activity)4