P2P Communication DNA

tags: Kizuna-architecture

This document describes how a private communication DNA is generated using Conductor Admin Calls in Kizuna Messaging Application

Dependency

  • "Public/Lobby" DNA with request Zome

DNA Instantiation Flow

  • Same color means it is part of one graphql resolver
  • Heavily dependent on a public DNA that has a request zome
sequenceDiagram
    rect rgb(0, 255, 0)
    Kizuna_UI_SENDER-->>P2P Comm DNA:1. Create P2PCommDNA with DNA Property (initializeP2PDNA)
    end
    
    rect rgb(0, 255, 0)
    Kizuna_UI_SENDER-->>P2P Comm DNA: 2. ensure that the agent was able to join the DNA
    end
    
    alt Failed to join DNA
    loop Until DNA joined
    rect rgb(0, 255, 0)
    Kizuna_UI_SENDER-->>P2P Comm DNA: 3. limitedly retry joining DNA
    end
    end
    end
    
    P2P Comm DNA-->>P2P Comm DNA: 4. validate_agent() check if the address of the agent is in members property
    
    Kizuna_UI_SENDER-->>Lobby_DNA_SENDER: 5. call request_to_chat zomeFunc in request zome
    
    Lobby_DNA_SENDER-->>Lobby_DNA_RECEIVER: 6. HDK::API::SEND to receiver agent in lobby DNA to request the receiver to join p2pDNA
        
    alt receiver online
        par 7.1
        Lobby_DNA_RECEIVER-->>Lobby_DNA_SENDER: receive callback: return request_received
        
        and 7.2
        Lobby_DNA_SENDER-->>Kizuna_UI_SENDER: return request_pending
        
        and 7.3
        Kizuna_UI_SENDER-->>Kizuna_UI_SENDER: render chat screen
        
        and 7.4
        alt sender exist in contact
        Lobby_DNA_RECEIVER-->>Kizuna_UI_RECEIVER: receive callback: emit_signal with in_contact: true
        
        else sender doesnt exist in contact
        Lobby_DNA_RECEIVER-->>Kizuna_UI_RECEIVER: receive callback: emit_signal with in_contact: false
        end
        
        and 7.5
        rect rgb(255,160,122)
        Kizuna_UI_RECEIVER-->>P2P Comm DNA: onSignal: join the DNA (joinChatResolver)
        end
        end
        
    else receiver offline
        par 7.1
        Lobby_DNA_RECEIVER-->>Lobby_DNA_SENDER: receive callback: return recipient_offline
        
        and 7.2
        Lobby_DNA_SENDER-->>Lobby_DNA_SENDER: commit request_notif entry and link it to receiver agent_address
        
        and 7.3
        Lobby_DNA_SENDER-->>Kizuna_UI_SENDER: return receiver_offline
        
        and 7.4
        Kizuna_UI_SENDER-->>Kizuna_UI_SENDER: render chat screen
        
        and 7.5
        Kizuna_UI_RECEIVER-->>Lobby_DNA_RECEIVER: call fetchRequestNotifs zomeFunc in request Zome when back online
        
        and 7.6
        rect rgb(255,160,122)
        Kizuna_UI_RECEIVER-->>P2P Comm DNA: join the DNA (joinChatResolver)
        end
        end
        end
    
        rect rgb(255,160,122)
        Kizuna_UI_RECEIVER-->>P2P Comm DNA: 8. ensure that the agent was able to join the DNA
        end
        
        alt Failed to join DNA
        loop Until DNA joined
        rect rgb(255,160,122)
        Kizuna_UI_RECEIVER-->>P2P Comm DNA: 9. limitedly retry joining DNA
        end
        end
        end
        
        P2P Comm DNA-->>P2P Comm DNA: 10. validate_agent()
        
        Kizuna_UI_RECEIVER-->>P2P Comm DNA: 11. getMessages()
        
        alt messages exist
        alt address in contact
        Kizuna_UI_RECEIVER-->>Kizuna_UI_RECEIVER: 12. render chat in messages page
        else address not in contact
        Kizuna_UI_RECEIVER-->>Kizuna_UI_RECEIVER: 12. render chat in messages request page
        end
        end
    
Select a repo