Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 3 additions & 32 deletions src/issue-file-manager.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { App, TFile } from "obsidian";
import { GitHubTrackerSettings, RepositoryTracking, ProjectData } from "./types";
import { GitHubTrackerSettings, RepositoryTracking } from "./types";
import { escapeBody } from "./util/escapeUtils";
import { NoticeManager } from "./notice-manager";
import { GitHubClient } from "./github-client";
Expand Down Expand Up @@ -56,41 +56,14 @@ export class IssueFileManager {
allIssuesIncludingRecentlyClosed,
);

// Batch fetch project data if tracking is enabled globally
let projectDataMap = new Map<string, ProjectData[]>();
if (this.settings.enableProjectTracking) {
const nodeIds = openIssues
.filter((issue: any) => issue.node_id)
.map((issue: any) => issue.node_id);

if (nodeIds.length > 0) {
this.noticeManager.debug(
`Fetching project data for ${nodeIds.length} issues`
);
projectDataMap = await this.gitHubClient.fetchProjectDataForItems(nodeIds);
}
}

// Get tracked project IDs from global settings
const trackedProjectIds = this.settings.trackedProjects.map(p => p.id);

// Create or update issue files (openIssues contains filtered issues from main.ts)
// Note: projectData is only added for project items, not for repository issues
for (const issue of openIssues) {
let projectData = issue.node_id ? projectDataMap.get(issue.node_id) : undefined;

// Filter by tracked projects from global settings
if (projectData && trackedProjectIds.length > 0) {
projectData = projectData.filter(p =>
trackedProjectIds.includes(p.projectId)
);
}

await this.createOrUpdateIssueFile(
effectiveRepo,
ownerCleaned,
repoCleaned,
issue,
projectData,
);
}
}
Expand All @@ -100,7 +73,6 @@ export class IssueFileManager {
ownerCleaned: string,
repoCleaned: string,
issue: any,
projectData?: ProjectData[],
): Promise<void> {
// Generate filename using template
const templateData = createIssueTemplateData(issue, repo.repository);
Expand Down Expand Up @@ -141,7 +113,7 @@ export class IssueFileManager {
);
}

let content = await this.contentGenerator.createIssueContent(issue, repo, comments, this.settings, projectData);
let content = await this.contentGenerator.createIssueContent(issue, repo, comments, this.settings);

if (file) {
if (file instanceof TFile) {
Expand Down Expand Up @@ -174,7 +146,6 @@ export class IssueFileManager {
repo,
comments,
this.settings,
projectData,
);

// Merge persist blocks back into new content
Expand Down
34 changes: 2 additions & 32 deletions src/pr-file-manager.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { App, TFile } from "obsidian";
import { GitHubTrackerSettings, RepositoryTracking, ProjectData } from "./types";
import { GitHubTrackerSettings, RepositoryTracking } from "./types";
import { escapeBody } from "./util/escapeUtils";
import { NoticeManager } from "./notice-manager";
import { GitHubClient } from "./github-client";
Expand Down Expand Up @@ -58,41 +58,13 @@ export class PullRequestFileManager {
allPullRequestsIncludingRecentlyClosed,
);

// Batch fetch project data if tracking is enabled globally
let projectDataMap = new Map<string, ProjectData[]>();
if (this.settings.enableProjectTracking) {
const nodeIds = openPullRequests
.filter((pr: any) => pr.node_id)
.map((pr: any) => pr.node_id);

if (nodeIds.length > 0) {
this.noticeManager.debug(
`Fetching project data for ${nodeIds.length} pull requests`
);
projectDataMap = await this.gitHubClient.fetchProjectDataForItems(nodeIds);
}
}

// Get tracked project IDs from global settings
const trackedProjectIds = this.settings.trackedProjects.map(p => p.id);

// Create or update pull request files (openPullRequests contains filtered PRs from main.ts)
for (const pr of openPullRequests) {
let projectData = pr.node_id ? projectDataMap.get(pr.node_id) : undefined;

// Filter by tracked projects from global settings
if (projectData && trackedProjectIds.length > 0) {
projectData = projectData.filter(p =>
trackedProjectIds.includes(p.projectId)
);
}

await this.createOrUpdatePullRequestFile(
effectiveRepo,
ownerCleaned,
repoCleaned,
pr,
projectData,
);
}
}
Expand All @@ -102,7 +74,6 @@ export class PullRequestFileManager {
ownerCleaned: string,
repoCleaned: string,
pr: any,
projectData?: ProjectData[],
): Promise<void> {
// Generate filename using template
const templateData = createPullRequestTemplateData(pr, repo.repository);
Expand Down Expand Up @@ -143,7 +114,7 @@ export class PullRequestFileManager {
);
}

let content = await this.contentGenerator.createPullRequestContent(pr, repo, comments, this.settings, projectData);
let content = await this.contentGenerator.createPullRequestContent(pr, repo, comments, this.settings);

if (file) {
if (file instanceof TFile) {
Expand Down Expand Up @@ -176,7 +147,6 @@ export class PullRequestFileManager {
repo,
comments,
this.settings,
projectData,
);

// Merge persist blocks back into new content
Expand Down