Skip to content

Commit 3ebdad9

Browse files
committed
fix server reflistener
1 parent 343d59c commit 3ebdad9

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

packages/server/src/hocuspocus/extension-supabase/SupabaseHocuspocus.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ export class SupabaseHocuspocus extends Database {
8181
.from("documents")
8282
.update(
8383
{ data: "\\x" + data.state.toString("hex") }, // add \x for postgres binary data
84-
{ count: "exact" }
84+
{ count: "exact" },
8585
)
8686
.eq("nano_id", data.documentName)
8787
.select();
8888
if (ret.data?.length !== 1) {
8989
throw new Error(
90-
"unexpected: not found when storing " + data.documentName
90+
"unexpected: not found when storing " + data.documentName,
9191
);
9292
}
9393
},
@@ -164,7 +164,7 @@ export class SupabaseHocuspocus extends Database {
164164
socketId: string,
165165
documentId: string,
166166
event: Y.YEvent<any>[],
167-
tr: Y.Transaction
167+
tr: Y.Transaction,
168168
) => {
169169
const supabase = this.supabaseMap.get(socketId);
170170
if (!supabase) {
@@ -191,9 +191,15 @@ export class SupabaseHocuspocus extends Database {
191191
.filter(
192192
(r) =>
193193
r.namespace === ChildReference.namespace &&
194-
r.type === ChildReference.type
194+
r.type === ChildReference.type,
195195
)
196-
.map((r) => r.target as string);
196+
.map((r) => {
197+
const target = r.target as string;
198+
if (!target.startsWith("typecell:typecell.org/")) {
199+
console.error("invalid target", target);
200+
}
201+
return target.split("/", 2)[1];
202+
});
197203

198204
const refsIds = await serviceClient
199205
.from("documents")
@@ -229,19 +235,20 @@ export class SupabaseHocuspocus extends Database {
229235

230236
if (ret.error) {
231237
throw new Error(
232-
"error executing supabase request (remove) " + ret.error.message
238+
"error executing supabase request (remove) " + ret.error.message,
233239
);
234240
}
235241
}
236242

237243
if (toAdd.length) {
238-
const ret = await supabase
239-
.from("document_relations")
240-
.insert(toAdd.map((e) => ({ parent_id: documentId, child_id: e })));
244+
const ret = await supabase.from("document_relations").upsert(
245+
toAdd.map((e) => ({ parent_id: documentId, child_id: e })),
246+
{ ignoreDuplicates: true },
247+
);
241248

242249
if (ret.error) {
243250
throw new Error(
244-
"error executing supabase request (add) " + ret.error.message
251+
"error executing supabase request (add) " + ret.error.message,
245252
);
246253
}
247254
}
@@ -259,7 +266,7 @@ export class SupabaseHocuspocus extends Database {
259266
data.socketId,
260267
documentIdByDocument.get(data.document)!,
261268
event,
262-
tr
269+
tr,
263270
);
264271

265272
data.document.getMap("refs").observeDeep(refListener);

0 commit comments

Comments
 (0)