Skip to content

Commit

Permalink
As a reviewee, I want to be able of refreshing the pull request list (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
duxtinto committed Feb 13, 2018
1 parent bb75106 commit 023e3f1
Show file tree
Hide file tree
Showing 70 changed files with 544 additions and 220 deletions.
23 changes: 22 additions & 1 deletion gradle/scripts/intellij.build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,30 @@ intellij {
}

patchPluginXml {
version '0.0.2'
version '1.0.0'
sinceBuild 162
untilBuild '181.*'
changeNotes '''
Use cases implemented by the v1.0.0 release:
- As a reviewee, before moving the caret into the comment line, I want to checkout the pull request branch if it's not checked out yet (#15)
- As a reviewee, I want to visually see whenever a review comment is outdated (#16)
- [bug] As a reviewee, only my open pull request should be displayed in the pull request list (#17)
- [bug] As a reviewee, if I authenticate myself by using a token, the list of my PRs is not loaded (#18)
- As a reviewee, I want to be able of refreshing the pull request list (#19)
Use cases implemented by the v0.0.2 pre-release:
- As a reviewee, I want to see a list of the reviews related to my open pull requests (#7)
- As a reviewer, I want to be able of changing the plugin into reviewer mode (#10)
- As a reviewee, I want to see a list of comments under each item on the review list (#11)
- As a reviewee, I want to see the list of pull request after making visible the tool window (#12)
- As a reviewee, I want to be able of setting the caret in the proper line after clicking on a comment (#14)
Use cases implemented by the v0.0.1 pre-release:
- As a reviewee, I want to see the list of my open reviews in a tool window (#1)
- As a reviewee, I want to be able of opening in my browser any of my open PRs (#2)
- As a reviewee, I want to see the issue number (if any) associated to the PR (#3)
- As a reviewee, I want to be able of switching task context by clicking on the issue's column (#6)
'''
}

idea {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.components

import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.ToolWindowFactory
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.presentation.toolwindow.ToolWindowFactory

interface UiInjectors {
fun inject(factory: ToolWindowFactory)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules

import com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules.idea.*
import com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules.idea.actions.IdeaActionModule
import dagger.Module

@Module(includes = [
IdeaActionModule::class,
IdeaTaskModule::class,
IdeaToolWindowModule::class,
IdeaUiContentModule::class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import com.duxtinto.intellij.plugin.github.codereviews.data.codereviews.comments
import com.duxtinto.intellij.plugin.github.codereviews.di.scopes.ProjectScoped
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.reviews.CodeReviewsDomainContract
import com.duxtinto.intellij.plugin.github.codereviews.net.codereviews.apiv3.CodeReviewsFetcher
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.codereviews.CodeReviews
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.codereviews.CodeReviewsPresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.codereviews.CodeReviewsTreeCellRenderer
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.codereviews.CodeReviewsView
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.codereviews.events.MouseListener
import com.duxtinto.intellij.plugin.github.codereviews.presentation.codereviews.CodeReviews
import com.duxtinto.intellij.plugin.github.codereviews.presentation.codereviews.CodeReviewsPresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.codereviews.CodeReviewsTreeCellRenderer
import com.duxtinto.intellij.plugin.github.codereviews.presentation.codereviews.CodeReviewsView
import com.duxtinto.intellij.plugin.github.codereviews.presentation.codereviews.events.MouseListener
import dagger.Binds
import dagger.Module
import javax.inject.Named
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules
import com.duxtinto.intellij.plugin.github.codereviews.di.scopes.ProjectScoped
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.PullRequestEntity
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.entities.ProjectExt
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.pullrequestlist.columns.ColumnInfoFactory
import com.duxtinto.intellij.plugin.github.codereviews.presentation.pullrequestlist.columns.ColumnInfoFactory
import com.intellij.openapi.progress.EmptyProgressIndicator
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.util.ui.ColumnInfo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules
import com.duxtinto.intellij.plugin.github.codereviews.data.pullrequests.PullRequestRepository
import com.duxtinto.intellij.plugin.github.codereviews.di.scopes.ProjectScoped
import com.duxtinto.intellij.plugin.github.codereviews.domain.DomainDataMapper
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllMyOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.PullRequestDomainContract
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.PullRequestEntity
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.PullRequestsByRepositoryInteractor
Expand All @@ -13,18 +13,18 @@ import com.duxtinto.intellij.plugin.github.codereviews.net.pullrequests.apiv3.Pu
import com.duxtinto.intellij.plugin.github.codereviews.net.pullrequests.apiv3.PullRequestResponse
import com.duxtinto.intellij.plugin.github.codereviews.net.pullrequests.apiv3.PullRequestResponseMapper
import com.duxtinto.intellij.plugin.github.codereviews.services.pullrequests.GithubDescriptionParser
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.pullrequestlist.PullRequestList
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.pullrequestlist.PullRequestListPresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.pullrequestlist.PullRequestListView
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.pullrequestlist.events.SelectionListener
import com.duxtinto.intellij.plugin.github.codereviews.presentation.pullrequestlist.PullRequestList
import com.duxtinto.intellij.plugin.github.codereviews.presentation.pullrequestlist.PullRequestListPresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.pullrequestlist.PullRequestListView
import com.duxtinto.intellij.plugin.github.codereviews.presentation.pullrequestlist.events.SelectionListener
import dagger.Binds
import dagger.Module

@Module
abstract class PullRequestModule {
@Binds
@ProjectScoped
abstract fun provideGetAllOpenForRepoInteractor(interactor: GetAllOpenForRepoInteractor): PullRequestsByRepositoryInteractor
abstract fun provideGetAllMyOpenForRepoInteractor(interactor: GetAllMyOpenForRepoInteractor): PullRequestsByRepositoryInteractor

@Binds
@ProjectScoped
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules
import com.duxtinto.intellij.plugin.github.codereviews.di.scopes.ProjectScoped
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.reviews.comments.*
import com.duxtinto.intellij.plugin.github.codereviews.presentation.Formatter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.codereviews.formatters.CommentFormatter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.codereviews.formatters.CommentFormatter
import dagger.Binds
import dagger.Module
import javax.inject.Named
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules

import com.duxtinto.intellij.plugin.github.codereviews.di.scopes.ProjectScoped
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.ToolWindowContent
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.ToolWindowContentPresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.reviewee.RevieweePresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.reviewee.RevieweeView
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.reviewer.ReviewerPresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.reviewer.ReviewerView
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.presentation.toolwindow.ToolWindowContent
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.presentation.toolwindow.ToolWindowContentPresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewee.RevieweeContent
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewee.RevieweePresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewee.RevieweeView
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewer.ReviewerContent
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewer.ReviewerPresenter
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewer.ReviewerView
import dagger.Binds
import dagger.Module

Expand All @@ -18,17 +20,17 @@ abstract class ToolWindowModule {

@Binds
@ProjectScoped
abstract fun provideToolWindowContentRevieweeView(view: RevieweeView): ToolWindowContent.Reviewee.View
abstract fun provideToolWindowContentRevieweeView(view: RevieweeView): RevieweeContent.View

@Binds
@ProjectScoped
abstract fun provideToolWindowContentRevieweePresenter(presenter: RevieweePresenter): ToolWindowContent.Reviewee.Presenter
abstract fun provideToolWindowContentRevieweePresenter(presenter: RevieweePresenter): RevieweeContent.Presenter

@Binds
@ProjectScoped
abstract fun provideToolWindowContentReviewerView(view: ReviewerView): ToolWindowContent.Reviewer.View
abstract fun provideToolWindowContentReviewerView(view: ReviewerView): ReviewerContent.View

@Binds
@ProjectScoped
abstract fun provideToolWindowContentReviewerPresenter(presenter: ReviewerPresenter): ToolWindowContent.Reviewer.Presenter
abstract fun provideToolWindowContentReviewerPresenter(presenter: ReviewerPresenter): ReviewerContent.Presenter
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules.idea

import com.duxtinto.intellij.plugin.github.codereviews.di.scopes.ProjectScoped
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllMyOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.repositories.FindGithubRepoForRootFolderInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.repositories.RepositoriesDomainContract.Git
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.entities.ProjectExt
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.events.repositories.GitChangeListener
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.services.git.IdeaBranchOperator
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.pullrequestlist.PullRequestList
import com.duxtinto.intellij.plugin.github.codereviews.presentation.pullrequestlist.PullRequestList
import com.intellij.dvcs.repo.VcsRepositoryMappingListener
import dagger.Module
import dagger.Provides
Expand All @@ -20,7 +20,7 @@ class IdeaGitModule {
@ProjectScoped
fun provideVcsRepositoryMappingListener(
repoFinder: FindGithubRepoForRootFolderInteractor,
prFetcher: GetAllOpenForRepoInteractor,
prFetcher: GetAllMyOpenForRepoInteractor,
prPresenter: PullRequestList.Presenter): VcsRepositoryMappingListener {
return GitChangeListener(repoFinder, prFetcher, prPresenter)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules.idea.actions

import com.intellij.openapi.actionSystem.ActionManager
import dagger.Module
import dagger.Provides

@Module(includes = [
IdeaRevieweeActionModule::class
])
class IdeaActionModule {
@Provides
fun provideActionManager(): ActionManager {
return ActionManager.getInstance()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.duxtinto.intellij.plugin.github.codereviews.di.impl.dagger.modules.idea.actions

import com.duxtinto.intellij.plugin.github.codereviews.di.qualifiers.Reviewee
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllMyOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.repositories.FindGithubRepoForRootFolderInteractor
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.presentation.toolwindow.toolbar.RevieweeToolbarFactory
import com.duxtinto.intellij.plugin.github.codereviews.ide.acl.presentation.toolwindow.toolbar.reviewee.RefreshPullRequestListAction
import com.duxtinto.intellij.plugin.github.codereviews.presentation.Toolbar
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewee.RevieweeContent
import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.openapi.actionSystem.AnAction
import dagger.Module
import dagger.Provides

@Module
class IdeaRevieweeActionModule {
@Provides
fun provideRefreshPullRequestListAction(
findRepoInteractor: FindGithubRepoForRootFolderInteractor,
getPullRequestsInteractor: GetAllMyOpenForRepoInteractor,
presenter: RevieweeContent.Presenter
): RefreshPullRequestListAction {
return RefreshPullRequestListAction(findRepoInteractor, getPullRequestsInteractor, presenter)
}

@Provides
@Reviewee
fun provideRevieweeToolbarActions(
refreshPullRequestsAction: RefreshPullRequestListAction
): List<AnAction> {
return listOf(
refreshPullRequestsAction
)
}

@Provides
@Reviewee
fun provideToolbarFactory(
actionManager: ActionManager,
@Reviewee actions: @JvmSuppressWildcards List<AnAction>
): Toolbar.Factory {
return RevieweeToolbarFactory(actionManager, actions)
}

@Provides
@Reviewee
fun provideToolbar(@Reviewee toolbar: Toolbar.Factory): Toolbar {
return toolbar.create()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.duxtinto.intellij.plugin.github.codereviews.di.qualifiers

import javax.inject.Qualifier

@Qualifier
@MustBeDocumented
@Retention(AnnotationRetention.RUNTIME)
annotation class Reviewee
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.duxtinto.intellij.plugin.github.codereviews.di.qualifiers

import javax.inject.Qualifier

@Qualifier
@MustBeDocumented
@Retention(AnnotationRetention.RUNTIME)
annotation class Reviewer
Original file line number Diff line number Diff line change
@@ -1,21 +1,14 @@
package com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests

import com.duxtinto.intellij.plugin.github.codereviews.domain.repositories.GithubRepositoryEntity
import java.io.IOException
import javax.inject.Inject

class GetAllOpenForRepoInteractor
class GetAllMyOpenForRepoInteractor
@Inject
constructor(private val repository: PullRequestDomainContract.Repository)
: PullRequestsByRepositoryInteractor {

override fun run(request: GithubRepositoryEntity): List<PullRequestEntity>? {
try {
return repository.getAllMyOpenBy(request.ownerName, request.name)
} catch (e: IOException) {
e.printStackTrace()
throw RuntimeException(e)
}

override fun run(request: GithubRepositoryEntity): List<PullRequestEntity> {
return repository.getAllMyOpenBy(request.ownerName, request.name)
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.duxtinto.intellij.plugin.github.codereviews.ide.acl.events.repositories

import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllMyOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.repositories.FindGithubRepoForRootFolderInteractor
import com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow.pullrequestlist.PullRequestList
import com.duxtinto.intellij.plugin.github.codereviews.presentation.pullrequestlist.PullRequestList
import com.intellij.dvcs.repo.VcsRepositoryMappingListener
import javax.inject.Inject

class GitChangeListener
@Inject
constructor(
private val githubRepoFinder: FindGithubRepoForRootFolderInteractor,
private val pullRequestFetcher: GetAllOpenForRepoInteractor,
private val pullRequestsPresenter: PullRequestList.Presenter)
private val githubRepoFinder: FindGithubRepoForRootFolderInteractor,
private val pullRequestFetcher: GetAllMyOpenForRepoInteractor,
private val pullRequestsPresenter: PullRequestList.Presenter)
: VcsRepositoryMappingListener {

override fun mappingChanged() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.duxtinto.intellij.plugin.github.codereviews.ide.acl.presentation.toolwindow

interface ToolWindowContent {
interface Model

interface Presenter {
fun displayToolWindow()
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow
package com.duxtinto.intellij.plugin.github.codereviews.ide.acl.presentation.toolwindow

import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllMyOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.repositories.FindGithubRepoForRootFolderInteractor
import com.duxtinto.intellij.plugin.github.codereviews.domain.pullrequests.GetAllOpenForRepoInteractor
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewee.RevieweeContent
import com.duxtinto.intellij.plugin.github.codereviews.presentation.reviewer.ReviewerContent
import com.intellij.ui.content.ContentFactory
import com.intellij.ui.content.ContentManager
import javax.inject.Inject
Expand All @@ -11,13 +13,13 @@ class ToolWindowContentPresenter
@Inject
constructor(
private val githubRepoFinder: FindGithubRepoForRootFolderInteractor,
private val pullRequestFetcher: GetAllOpenForRepoInteractor,
private val pullRequestFetcher: GetAllMyOpenForRepoInteractor,
private val contentFactory: ContentFactory,
@Named("GH_Reviews") private val contentManager: ContentManager,
private val revieweeView: ToolWindowContent.Reviewee.View,
private val revieweePresenter: ToolWindowContent.Reviewee.Presenter,
private val reviewerView: ToolWindowContent.Reviewer.View,
reviewerPresenter: ToolWindowContent.Reviewer.Presenter)
private val revieweeView: RevieweeContent.View,
private val revieweePresenter: RevieweeContent.Presenter,
private val reviewerView: ReviewerContent.View,
reviewerPresenter: ReviewerContent.Presenter)
: ToolWindowContent.Presenter {

init {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.duxtinto.intellij.plugin.github.codereviews.presentation.toolwindow
package com.duxtinto.intellij.plugin.github.codereviews.ide.acl.presentation.toolwindow

import com.duxtinto.intellij.plugin.github.codereviews.di.contracts.DiContainerAware
import com.intellij.openapi.project.DumbAware
Expand Down
Loading

0 comments on commit 023e3f1

Please sign in to comment.