From 747e6c6069c373b90d76df10ad642a97724510d2 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Mon, 5 Sep 2022 11:00:24 +0200
Subject: [PATCH] Add Stored.tryGet extension

---
 Sources/XXMessengerClient/Utils/Stored.swift | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/Sources/XXMessengerClient/Utils/Stored.swift b/Sources/XXMessengerClient/Utils/Stored.swift
index 3f5d5fdb..052d6387 100644
--- a/Sources/XXMessengerClient/Utils/Stored.swift
+++ b/Sources/XXMessengerClient/Utils/Stored.swift
@@ -31,6 +31,23 @@ private final class Memory<Value> {
   var value: Value
 }
 
+extension Stored {
+  public struct MissingValueError: Error, Equatable {
+    public init(typeDescription: String) {
+      self.typeDescription = typeDescription
+    }
+
+    public var typeDescription: String
+  }
+
+  public func tryGet<T>() throws -> T where Value == Optional<T> {
+    guard let value = get() else {
+      throw MissingValueError(typeDescription: "\(Self.self)")
+    }
+    return value
+  }
+}
+
 extension Stored {
   public static func unimplemented(placeholder: Value) -> Stored<Value> {
     Stored<Value>(
-- 
GitLab