Skip to content

Commit e98c602

Browse files
committed
also set publishedToGroup
1 parent 07a5ec2 commit e98c602

2 files changed

Lines changed: 35 additions & 3 deletions

File tree

apps/obsidian/src/utils/publishNode.ts

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
getFileForNodeInstanceIds,
1212
loadRelations,
1313
saveRelations,
14+
type RelationsFile,
1415
} from "./relationsStore";
1516
import type { RelationInstance } from "~/types";
1617
import { getAvailableGroupIds } from "./importNodes";
@@ -270,15 +271,18 @@ export const publishNode = async ({
270271
export const ensurePublishedRelationsAccuracy = async ({
271272
client,
272273
context,
274+
plugin,
273275
allNodesById,
274-
relationInstances,
276+
relationInstancesData,
275277
}: {
276278
client: DGSupabaseClient;
277279
context: SupabaseContext;
280+
plugin: DiscourseGraphPlugin;
278281
allNodesById: Record<string, DiscourseNodeInVault>;
279-
relationInstances: RelationInstance[];
282+
relationInstancesData: RelationsFile;
280283
}): Promise<void> => {
281284
const myGroups = await getAvailableGroupIds(client);
285+
const relationInstances = Object.values(relationInstancesData.relations);
282286
const syncedRelationIdsResult = await client
283287
.from("Concept")
284288
.select("source_local_id")
@@ -310,11 +314,13 @@ export const ensurePublishedRelationsAccuracy = async ({
310314
}
311315
}
312316
}
317+
let changed = false;
313318
const missingPublishRecords: TablesInsert<"ResourceAccess">[] = [];
314319
for (const group of myGroups) {
315320
const publishableRelations = relationInstances.filter(
316321
(r) =>
317322
!r.importedFromRid &&
323+
syncedRelationIds.has(r.id) &&
318324
(
319325
(allNodesById[r.source]?.frontmatter?.publishedToGroups as
320326
| string[]
@@ -369,11 +375,36 @@ export const ensurePublishedRelationsAccuracy = async ({
369375
.eq("space_id", context.spaceId)
370376
.in("source_local_id", [...extraPublishableIds]);
371377
if (r.error) console.error(r.error);
378+
else {
379+
for (const id of extraPublishableIds) {
380+
const rel = relationInstancesData.relations[id];
381+
const pos = (rel?.publishedToGroupId || []).indexOf(group);
382+
if (pos >= 0) {
383+
rel!.publishedToGroupId!.splice(pos, 1);
384+
changed = true;
385+
}
386+
}
387+
}
372388
}
373389
}
374390
if (missingPublishRecords.length > 0) {
375391
const r = await client.from("ResourceAccess").upsert(missingPublishRecords);
376392
if (r.error) console.error(r.error);
393+
else {
394+
for (const record of missingPublishRecords) {
395+
const rel = relationInstancesData.relations[record.source_local_id];
396+
const group = record.account_uid;
397+
const pos = (rel?.publishedToGroupId || []).indexOf(group);
398+
if (rel && pos < 1) {
399+
if (rel.publishedToGroupId === undefined) rel.publishedToGroupId = [];
400+
rel.publishedToGroupId.push(group);
401+
changed = true;
402+
}
403+
}
404+
}
405+
}
406+
if (changed) {
407+
await saveRelations(plugin, relationInstancesData);
377408
}
378409
};
379410

apps/obsidian/src/utils/syncDgNodesToSupabase.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,8 +570,9 @@ const convertDgToSupabaseConcepts = async ({
570570
await ensurePublishedRelationsAccuracy({
571571
client: supabaseClient,
572572
context,
573+
plugin,
573574
allNodesById,
574-
relationInstances: Object.values(relationInstancesData.relations),
575+
relationInstancesData,
575576
});
576577
}
577578
}

0 commit comments

Comments
 (0)