From 87a3d372c95ce1c643ae31a4c8e64fcdbd696b19 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 17 Oct 2022 00:55:55 +0200
Subject: [PATCH] Update docs

---
 Docs/XXMessengerClient.md | 63 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 62 insertions(+), 1 deletion(-)

diff --git a/Docs/XXMessengerClient.md b/Docs/XXMessengerClient.md
index efbb9de7..c2f407c3 100644
--- a/Docs/XXMessengerClient.md
+++ b/Docs/XXMessengerClient.md
@@ -155,4 +155,65 @@ let restoredEmail = facts.get(.email)?.value
 let restoredPhone = facts.get(.phone)?.value
 ```
 
-If no error was thrown during restoration, the `Messenger` is already loaded, started, connected, and logged in.
\ No newline at end of file
+If no error was thrown during restoration, the `Messenger` is already loaded, started, connected, and logged in.
+
+## 🚢 File transfers
+
+### Setup for receiving files
+
+```swift
+// register receive file callback before starting file transfer manager:
+let cancellable = messenger.registerReceiveFileCallback(.init { result in
+  switch result {
+  case .success(let receivedFile):
+    // handle file metadata...
+
+    // start receiving file data:
+    try! messenger.receiveFile(.init(transferId: receivedFile.transferId)) { info in
+      switch info {
+      case .progress(let transmitted, let total):
+        // handle progress...
+
+      case .finished(let data):
+        // handle received file data...
+
+      case .failed(let error):
+        // handle error...
+      }
+    }
+
+  case .failure(let error):
+    // handle error...
+  }
+})
+
+// start file transfer manager:
+try messenger.startFileTransfer()
+```
+
+### Send files
+
+Make sure to call `messenger.startFileTransfer` before sending files.
+
+```swift
+let file = FileSend(
+  name: ...,
+  type: ...,
+  preview: ...,
+  contents: ...
+)
+
+// send file:
+let transferId = try messenger.sendFile(.init(file: file, recipientId: ...)) { info in
+  switch info {
+  case .progress(let transferId, let transmitted, let total):
+    // handle progress...
+
+  case .finished(let transferId):
+    // handle completion...
+
+  case .failed(let transferId, let error):
+    // handle error...
+  }
+}
+```
-- 
GitLab