跳到主要内容

Node Sharing

Share device access with other users, transfer ownership, and manage sharing requests.

What This Module Does ?​

Share — grant another user access (you stay owner). Transfer — hand off ownership. Manage requests — accept, decline, or cancel invitations.

GoalMethod
Share accessnode.shareWith()
Revoke accessnode.removeSharingFor()
Transfer ownershipnode.transferNode()
Invitations receivedgetReceivedNodeSharingRequests()
Invitations sentgetIssuedNodeSharingRequests()
Accept / declinerequest.accept() / decline()
Cancel sent inviterequest.remove()

Expected outcome: Pending requests are created; recipients accept to gain access, or ownership transfers after acceptance.

Common Workflows​

Share with another user​

const requestId = await node.shareWith({
username: "family_member@example.com",
});

Revoke access​

await node.removeSharingFor("former_user@example.com");

Transfer ownership​

await node.transferNode({
toUserName: "new_owner@example.com",
selfToSecondary: false,
});

Accept a received invitation​

const { sharedRequests } = await userInstance.getReceivedNodeSharingRequests();
const request = sharedRequests.find((r) => r.id === requestId);
await request.accept();

Decline or cancel​

await request.decline();

const { sharedRequests } = await userInstance.getIssuedNodeSharingRequests();
await sharedRequests[0].remove();

End-to-end share flow​

await node.shareWith({ username: "guest@example.com" });

// Guest session
const { sharedRequests } = await userInstance.getReceivedNodeSharingRequests();
await sharedRequests.find((r) => r.nodeId === node.id).accept();

// Owner revokes later
await node.removeSharingFor("guest@example.com");

Error Handling​

try {
await node.shareWith({ username: targetUser });
} catch (error) {
console.error("Sharing failed:", error);
}

Fails if the username is invalid or sharing already exists.

Advanced Concepts​

Share vs transfer vs primary​

Request lifecycle​

Best Practices​

  1. Share for collaboration; transfer only to change ownership
  2. Confirm before transfer
  3. Revoke access when no longer needed
  4. Surface pending sent and received requests in UI
  5. Use metadata on share requests for role/context

On this page