2 Commits

Author SHA1 Message Date
Chris Daßler
ebb4f105f9 feat: Add metadata support for peer discovery events
- Add metadata field to PeerDiscoveredEvent interface
- Add metadata field to PeerInfo interface
- Update event handler to forward metadata from native events
- Enables proper user identification in discovery

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-29 11:40:36 +02:00
e3067c3404 Add event for multiaddresses changed (#2)
Co-authored-by: Chris Daßler <chris.dassler@me.com>
Reviewed-on: #2
2025-09-20 02:43:55 +02:00
4 changed files with 26 additions and 3 deletions

View File

@@ -135,13 +135,14 @@ export class Libp2pComponent implements ILibp2pComponent {
// Peer discovery
this.eventEmitter.addListener(
'onPeerDiscovered',
({ peerId, addresses, multiaddrs }: PeerDiscoveredEvent) => {
({ peerId, addresses, multiaddrs, metadata }: PeerDiscoveredEvent) => {
const addrs = (multiaddrs || addresses || []).map(
(addr: string) => new SimpleMultiaddr(addr),
);
this.emit('peer:discovery', {
id: new SimplePeerId(peerId),
multiaddrs: addrs,
metadata: metadata, // Pass metadata through
});
},
);
@@ -153,6 +154,15 @@ export class Libp2pComponent implements ILibp2pComponent {
});
});
// Multiaddresses changed event
this.eventEmitter.addListener('onMultiaddressesChanged', ({ multiaddrs }: { multiaddrs: string[] }) => {
logger.debug('[Libp2pComponent] Multiaddresses changed:', multiaddrs);
this._multiaddrs = multiaddrs.map((addr: string) => new SimpleMultiaddr(addr));
this.emit('multiaddresses:changed', {
multiaddrs: this._multiaddrs,
});
});
// Connection events
this.eventEmitter.addListener(
'onConnectionStatus',

View File

@@ -33,6 +33,12 @@ export interface Connection {
export interface PeerInfo {
id: PeerId;
multiaddrs: Multiaddr[];
metadata?: {
userId?: string;
deviceName?: string;
source?: string;
[key: string]: any;
};
}
export interface ProtocolHandler {
@@ -78,6 +84,7 @@ export interface Libp2pEvents {
'connection:open': CustomEvent<Connection>;
'connection:close': CustomEvent<Connection>;
'self:peer:update': CustomEvent<{ peerId: PeerId; multiaddrs: Multiaddr[] }>;
'multiaddresses:changed': CustomEvent<{ multiaddrs: Multiaddr[] }>;
}
export interface Libp2pOptions {

View File

@@ -1,11 +1,11 @@
{
"name": "@metatrom/libp2p-native-bridge",
"version": "1.0.0",
"version": "1.2.0-beta.1",
"main": "index.ts",
"type": "module",
"description": "Native libp2p bridge for React Native applications",
"metatrom": {
"ior": "com.metatrom.libp2p-native-bridge@1.0.0",
"ior": "com.metatrom.libp2p-native-bridge@1.2.0-beta.1",
"capabilities": {
"p2p": true,
"contracts": false,

View File

@@ -32,6 +32,12 @@ export interface PeerDiscoveredEvent {
peerId: string;
addresses?: string[];
multiaddrs?: string[];
metadata?: {
userId?: string;
deviceName?: string;
source?: string;
[key: string]: any;
};
}
export interface PeerLostEvent {