@@ -29,7 +29,7 @@ export class FileManager {
2929 private app : App ,
3030 private settings : GitHubTrackerSettings ,
3131 private noticeManager : NoticeManager ,
32- gitHubClient : GitHubClient ,
32+ private gitHubClient : GitHubClient ,
3333 ) {
3434 this . issueFileManager = new IssueFileManager ( app , settings , noticeManager , gitHubClient ) ;
3535 this . prFileManager = new PullRequestFileManager ( app , settings , noticeManager , gitHubClient ) ;
@@ -159,6 +159,29 @@ export class FileManager {
159159 const repository = this . extractRepositoryFromUrl ( content . url ) || `${ project . owner } /unknown` ;
160160 const projectData = this . convertFieldValuesToProjectData ( project , status , item . fieldValues ?. nodes || [ ] ) ;
161161
162+ // Fetch sub-issues and parent issue for template support (only if enabled for project)
163+ let subIssues : any [ ] = [ ] ;
164+ let parentIssue : any = null ;
165+
166+ if ( isIssue && project . includeSubIssues ) {
167+ const [ owner , repoName ] = repository . split ( "/" ) ;
168+ if ( owner && repoName ) {
169+ subIssues = await this . gitHubClient . fetchSubIssues ( owner , repoName , content . number ) ;
170+ parentIssue = await this . gitHubClient . fetchParentIssue ( owner , repoName , content . number ) ;
171+
172+ // Enrich sub-issues with vault paths if they exist
173+ const noteTemplate = project . issueNoteTemplate || "Issue - {number} - {title}" ;
174+ subIssues = await this . fileHelpers . enrichSubIssuesWithVaultPaths (
175+ subIssues ,
176+ folderPath ,
177+ noteTemplate ,
178+ repository ,
179+ this . settings . dateFormat ,
180+ this . settings . escapeMode
181+ ) ;
182+ }
183+ }
184+
162185 const templateData = isIssue
163186 ? createIssueTemplateData (
164187 this . convertToIssueFormat ( content ) ,
@@ -167,7 +190,9 @@ export class FileManager {
167190 this . settings . dateFormat ,
168191 this . settings . escapeMode ,
169192 this . settings . escapeHashTags ,
170- [ projectData ]
193+ [ projectData ] ,
194+ subIssues ,
195+ parentIssue
171196 )
172197 : createPullRequestTemplateData (
173198 this . convertToPullRequestFormat ( content ) ,
@@ -193,7 +218,9 @@ export class FileManager {
193218 project ,
194219 status ,
195220 isIssue ,
196- item . fieldValues ?. nodes || [ ]
221+ item . fieldValues ?. nodes || [ ] ,
222+ subIssues ,
223+ parentIssue
197224 ) ;
198225
199226 if ( existingFile && existingFile instanceof TFile ) {
@@ -226,6 +253,8 @@ export class FileManager {
226253 status : string ,
227254 isIssue : boolean ,
228255 fieldValues : any [ ] ,
256+ subIssues ?: any [ ] ,
257+ parentIssue ?: any ,
229258 ) : Promise < string > {
230259 const shouldEscapeHashTags = this . settings . escapeHashTags ;
231260
@@ -255,7 +284,9 @@ export class FileManager {
255284 this . settings . dateFormat ,
256285 this . settings . escapeMode ,
257286 shouldEscapeHashTags ,
258- [ projectData ]
287+ [ projectData ] ,
288+ subIssues ,
289+ parentIssue
259290 )
260291 : createPullRequestTemplateData (
261292 this . convertToPullRequestFormat ( content ) ,
@@ -272,7 +303,7 @@ export class FileManager {
272303 }
273304
274305 // Fallback to default format
275- return this . generateDefaultProjectItemContent ( content , project , status , isIssue , fieldValues ) ;
306+ return this . generateDefaultProjectItemContent ( content , project , status , isIssue , fieldValues , subIssues , parentIssue ) ;
276307 }
277308
278309 /**
@@ -284,6 +315,8 @@ export class FileManager {
284315 status : string ,
285316 isIssue : boolean ,
286317 fieldValues : any [ ] ,
318+ subIssues ?: any [ ] ,
319+ parentIssue ?: any ,
287320 ) : string {
288321 const shouldEscapeHashTags = this . settings . escapeHashTags ;
289322 const dateFormat = this . settings . dateFormat ;
0 commit comments