Skip to content
Snippets Groups Projects
XXMessengerClient.md 2.29 KiB
Newer Older
# XXMessengerClient

`XXMessengerClient` is a client wrapper library for use in xx-messenger application.

Dariusz Rybicki's avatar
Dariusz Rybicki committed
## ▶️ Instantiate messenger

Example:

```swift
// setup environment:
Dariusz Rybicki's avatar
Dariusz Rybicki committed
var environment: MessengerEnvironment = .live()

// change cMix NDF environment if needed:
environment.ndfEnvironment = ...

// use alternative user-discovery if needed:
environment.udAddress = ...
environment.udCert = ...
environment.udContact = ...

// instantiate messenger:
let messenger: Messenger = .live(environment)
```

## 🚀 Start messenger

Example:

```swift
// allow cancellation of callbacks:
Dariusz Rybicki's avatar
Dariusz Rybicki committed
var authCallbacksCancellable: Cancellable?
var messageListenerCancellable: Cancellable?
Dariusz Rybicki's avatar
Dariusz Rybicki committed

func start(messenger: Messenger) throws {
  // check if messenger is loaded:
  if messenger.isLoaded() == false {
    // check if messenger is created and stored on disk:
    if messenger.isCreated() == false {
      // create new messenger and store it on disk:
      try messenger.create()
    }
    // load messenger stored on disk:
    try messenger.load()
  }

Dariusz Rybicki's avatar
Dariusz Rybicki committed
  // start messenger's network follower:
  try messenger.start()

Dariusz Rybicki's avatar
Dariusz Rybicki committed
  // register auth callbacks before connecting:
  authCallbacksCancellable = messenger.registerAuthCallbacks(
    AuthCallbacks(handle: { callback in
      // implement auth callbacks handling
    })
  )
  
  // register message listener before connecting:
  messageListenerCancellable = messenger.registerMessageListener(
  	Listener(handle: { message in
  	  // handle incoming message
  	})
  )
Dariusz Rybicki's avatar
Dariusz Rybicki committed

  // check if messenger is connected:
  if messenger.isConnected() == false {
    // start end-to-end connection:
    try messenger.connect()
    // start listening for messanges:
    try messener.listenForMessages()
  }

  // check if messenger is logged in with user-discovery:
  if messenger.isLoggedIn() == false {
    // check if messenger is registered with user-discovery:
    if try messenger.isRegistered() == false {
      // register new user with user-discovery:
      try messenger.register(username: "new-username")
    } else {
      // login previously registered user with user-discovery:
      try messenger.logIn()
    }
  }
}
Dariusz Rybicki's avatar
Dariusz Rybicki committed
```

## 🛠 Use client components directly

Example:

```swift
// get cMix:
let cMix = messenger.cMix()

// get E2E:
let e2e = messenger.e2e()

// get UserDicovery:
let ud = messenger.ud()
Dariusz Rybicki's avatar
Dariusz Rybicki committed
```