MCPcopy
hub / github.com/directus/directus / receiveInit

Function receiveInit

app/src/composables/use-collab.ts:321–371  ·  view source on GitHub ↗
(message: InitMessage)

Source from the content-addressed store, hash-verified

319 };
320
321 async function receiveInit(message: InitMessage) {
322 if (joining === false) return;
323
324 joining = false;
325 roomId.value = message.room;
326 connectionId.value = message.connection;
327
328 activeRooms[roomId.value] = (activeRooms[roomId.value] ?? 0) + 1;
329
330 if (!isMatch({ ...initialValues.value, ...edits.value }, message.changes)) {
331 if (!isEmpty(edits.value)) collidingLocalChanges.value = edits.value;
332 edits.value = message.changes;
333 }
334
335 if (message.users.length > 0) {
336 const usersInfo = await sdk.request(
337 readUsers({
338 filter: {
339 id: {
340 _in: Array.from(new Set(message.users.map((user) => user.user))),
341 },
342 },
343 // Object syntax for nested fields - SDK types require schema definition for full support
344 // TODO: Update this once https://github.com/directus/directus/issues/26558 is Done
345 fields: ['id', 'first_name', 'last_name', { avatar: ['id', 'modified_on'] }] as (keyof DirectusUser)[],
346 }),
347 );
348
349 users.value = message.users
350 .map(({ user, color, connection }) => {
351 const info = usersInfo.find((u) => u.id === user) as CollabUserInfo | undefined;
352
353 if (message.connection === connection) {
354 sessionStorage.setItem(SESSION_COLOR_KEY, color);
355 }
356
357 return {
358 ...info,
359 color,
360 connection,
361 };
362 })
363 .sort((a, b) => {
364 if (a.connection === message.connection) return -1;
365 if (b.connection === message.connection) return 1;
366 return 0;
367 }) as CollabUser[];
368 }
369
370 focused.value = message.focuses;
371 }
372
373 function receiveUpdate(message: UpdateMessage) {
374 if (message.order > largestUpdateOrder) {

Callers 1

useCollabFunction · 0.85

Calls 5

readUsersFunction · 0.90
isEmptyFunction · 0.85
fromMethod · 0.80
requestMethod · 0.65
sortMethod · 0.65

Tested by

no test coverage detected