feat: sync Today blockers offline (Closes #533)
This commit is contained in:
1 parent
ee36b8824a
commit
fff7bccf08
13 files changed
+357
-17
No files matched your search
+13
-7
@@ -1634,6 +1634,19 @@ async def mutate_assigned_issue_dependency(
|
||||
):
|
||||
raise IssueNotAvailableError("assigned issue not found")
|
||||
|
||||
current = await issue_dependencies(repository, number)
|
||||
currently_present = any(
|
||||
item["repository"] == blocker_repository and item["number"] == blocker_number
|
||||
for item in current
|
||||
)
|
||||
if currently_present != remove:
|
||||
return {
|
||||
"repository": repository,
|
||||
"number": number,
|
||||
"dependencies_available": True,
|
||||
"dependencies": current,
|
||||
}
|
||||
|
||||
if not remove:
|
||||
candidate = await fetch(f"repos/{blocker_repository}/issues/{blocker_number}")
|
||||
if (
|
||||
@@ -1643,13 +1656,6 @@ async def mutate_assigned_issue_dependency(
|
||||
or isinstance(candidate.get("pull_request"), dict)
|
||||
):
|
||||
raise IssueDependencyInvalidError("blocker must be an accessible open issue")
|
||||
current = await issue_dependencies(repository, number)
|
||||
if any(
|
||||
item["repository"] == blocker_repository and item["number"] == blocker_number
|
||||
for item in current
|
||||
):
|
||||
raise IssueDependencyInvalidError("that issue is already a blocker")
|
||||
|
||||
owner, repo = blocker_repository.split("/", 1)
|
||||
response = await _get_client().request(
|
||||
"DELETE" if remove else "POST",
|
||||
|
||||
+16
@@ -511,6 +511,10 @@ class IssueBlockerUpdate(BaseModel):
|
||||
number: PositiveInt
|
||||
|
||||
|
||||
class IssueBlockerDesiredState(IssueBlockerUpdate):
|
||||
present: bool
|
||||
|
||||
|
||||
class PullReviewComment(BaseModel):
|
||||
path: str = Field(min_length=1, max_length=1_000)
|
||||
body: str = Field(min_length=1, max_length=10_000)
|
||||
@@ -3269,6 +3273,18 @@ async def remove_assigned_issue_blocker(
|
||||
return await _mutate_assigned_issue_blocker(update, owner, repo, number, True)
|
||||
|
||||
|
||||
@app.patch("/api/v1/repos/{owner}/{repo}/issues/{number}/blockers")
|
||||
async def set_assigned_issue_blocker_state(
|
||||
update: IssueBlockerDesiredState,
|
||||
owner: str,
|
||||
repo: str,
|
||||
number: int = PathParam(gt=0),
|
||||
) -> JSONResponse:
|
||||
return await _mutate_assigned_issue_blocker(
|
||||
update, owner, repo, number, not update.present
|
||||
)
|
||||
|
||||
|
||||
@app.patch("/api/v1/repos/{owner}/{repo}/issues/{number}/content")
|
||||
async def update_assigned_issue_content(
|
||||
update: IssueContentUpdate,
|
||||
|
||||
Reference in new issue
Block a user