mirror of
https://github.com/alamion/obsidian-jira-sync.git
synced 2026-07-22 05:43:04 +00:00
fix: update status only — don't call updateJiraToLocal with partial issue
Passing {fields: {status: {name: ...}}} to updateJiraToLocal caused all
fromJira mappings to run with undefined inputs, producing empty strings
that overwrote description and comments. Now updates only the status
field in frontmatter and sync content markers directly.
This commit is contained in:
parent
a3211bcdb2
commit
5229b2d1a5
1 changed files with 20 additions and 3 deletions
|
|
@ -5,6 +5,7 @@ import { prepareJiraFieldsFromFile } from './commonPrepareData';
|
|||
import { localToJiraFields, updateJiraToLocal } from '../tools/mapObsidianJiraFields';
|
||||
import { JiraIssue, JiraTransitionType } from '../interfaces';
|
||||
import { obsidianJiraFieldMappings } from '../default/obsidianJiraFieldsMapping';
|
||||
import { updateJiraSyncContent } from '../tools/sectionTools';
|
||||
|
||||
export async function updateIssueFromFile(plugin: JiraPlugin, file: TFile): Promise<string> {
|
||||
let fields = await prepareJiraFieldsFromFile(plugin, file);
|
||||
|
|
@ -72,8 +73,24 @@ export async function updateStatusFromFile(
|
|||
}
|
||||
|
||||
await updateJiraStatus(plugin, fields.key, transition.id);
|
||||
await updateJiraToLocal(plugin, file, {
|
||||
fields: { status: { name: transition.status } },
|
||||
} as JiraIssue);
|
||||
|
||||
// Only update the status field. Calling updateJiraToLocal with a partial issue
|
||||
// causes all fromJira mappings to run with undefined inputs, producing empty strings
|
||||
// that overwrite description and comments.
|
||||
const allMappings = {...obsidianJiraFieldMappings, ...plugin.settings.fieldMapping.fieldMappings};
|
||||
const statusMapping = allMappings['status'];
|
||||
const minimalIssue = {fields: {status: {name: transition.status}}} as JiraIssue;
|
||||
const localStatusValue = statusMapping
|
||||
? statusMapping.fromJira(minimalIssue, {})
|
||||
: transition.status;
|
||||
|
||||
if (localStatusValue !== null && localStatusValue !== undefined) {
|
||||
await plugin.app.fileManager.processFrontmatter(file, (frontmatter) => {
|
||||
frontmatter['status'] = localStatusValue;
|
||||
});
|
||||
await plugin.app.vault.process(file, (fileContent) => {
|
||||
return updateJiraSyncContent(fileContent, {status: String(localStatusValue)});
|
||||
});
|
||||
}
|
||||
return fields.key;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue