Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • mobile/ios/elixxir-dapps-sdk-swift
1 result
Show changes
Commits on Source (7)
Showing
with 495 additions and 10 deletions
...@@ -6,30 +6,30 @@ ...@@ -6,30 +6,30 @@
<array> <array>
<dict> <dict>
<key>LibraryIdentifier</key> <key>LibraryIdentifier</key>
<string>ios-arm64</string> <string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key> <key>LibraryPath</key>
<string>Bindings.framework</string> <string>Bindings.framework</string>
<key>SupportedArchitectures</key> <key>SupportedArchitectures</key>
<array> <array>
<string>arm64</string> <string>arm64</string>
<string>x86_64</string>
</array> </array>
<key>SupportedPlatform</key> <key>SupportedPlatform</key>
<string>ios</string> <string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict> </dict>
<dict> <dict>
<key>LibraryIdentifier</key> <key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string> <string>ios-arm64</string>
<key>LibraryPath</key> <key>LibraryPath</key>
<string>Bindings.framework</string> <string>Bindings.framework</string>
<key>SupportedArchitectures</key> <key>SupportedArchitectures</key>
<array> <array>
<string>arm64</string> <string>arm64</string>
<string>x86_64</string>
</array> </array>
<key>SupportedPlatform</key> <key>SupportedPlatform</key>
<string>ios</string> <string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict> </dict>
</array> </array>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
......
No preview for this file type
...@@ -404,6 +404,11 @@ Parameters: ...@@ -404,6 +404,11 @@ Parameters:
* GetID returns the ID for this Cmix in the cmixTracker. * GetID returns the ID for this Cmix in the cmixTracker.
*/ */
- (long)getID; - (long)getID;
/**
* GetReceptionRegistrationValidationSignature returns the signature provided by
the xx network.
*/
- (NSData* _Nullable)getReceptionRegistrationValidationSignature;
/** /**
* HasRunningProcessies checks if any background threads are running and returns * HasRunningProcessies checks if any background threads are running and returns
true if one or more are. true if one or more are.
...@@ -724,6 +729,17 @@ The first payload is index 0. ...@@ -724,6 +729,17 @@ The first payload is index 0.
* PayloadSize returns the max payload size for a partitionable E2E message. * PayloadSize returns the max payload size for a partitionable E2E message.
*/ */
- (long)payloadSize; - (long)payloadSize;
/**
* RegisterListener registers a new listener.
Parameters:
- senderId - the user ID who sends messages to this user that
this function will register a listener for.
- messageType - message type from the sender you want to listen for.
- newListener: A provider for a callback to hear a message.
Do not pass nil to this.
*/
- (BOOL)registerListener:(NSData* _Nullable)senderID messageType:(long)messageType newListener:(id<BindingsListener> _Nullable)newListener error:(NSError* _Nullable* _Nullable)error;
/** /**
* RemoveService removes all services for the given tag. * RemoveService removes all services for the given tag.
*/ */
...@@ -1329,6 +1345,15 @@ object. ...@@ -1329,6 +1345,15 @@ object.
- (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error; - (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error;
@end @end
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedCode;
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedMessage;
/** /**
* AsyncRequestRestLike sends an asynchronous restlike request to a given * AsyncRequestRestLike sends an asynchronous restlike request to a given
contact. contact.
...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received. ...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received.
*/ */
FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error);
/**
* CreateUserFriendlyErrorMessage will convert the passed in error string
to an error string that is user-friendly if a substring match is
found to a common error. Common errors is a map which can be updated
using UpdateCommonErrors. If the error is not common, some simple parsing
is done on the error message to make it more user-accessible, removing
backend specific jargon.
Parameters
- errStr - an error returned from the backend.
Returns
- A user-friendly error message. This should be devoid of technical speak
but still be meaningful for front-end or back-end teams.
*/
FOUNDATION_EXPORT NSString* _Nonnull BindingsCreateUserFriendlyErrorMessage(NSString* _Nullable errStr);
/** /**
* DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL. * DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL.
The NDF is processed into a protobuf containing a signature that is verified The NDF is processed into a protobuf containing a signature that is verified
...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s ...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s
Parameters: Parameters:
- e2eID - e2e object ID in the tracker - e2eID - e2e object ID in the tracker
- follower - network follower func wrapped in UdNetworkStatus - follower - network follower func wrapped in UdNetworkStatus
- username - the username the user wants to register with UD.
If the user is already registered, this field may be blank
- registrationValidationSignature - the signature provided by the xx network.
This signature is optional for other consumers who deploy their own UD.
*/ */
FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error);
...@@ -1711,6 +1757,21 @@ Returns: ...@@ -1711,6 +1757,21 @@ Returns:
*/ */
FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error);
/**
* UpdateCommonErrors updates the internal error mapping DB. This internal database
maps errors returned from the backend to user-friendly error messages.
Parameters
- jsonFile - contents of a JSON file whose format conforms to the example below.
Example Input:
{
"Failed to Unmarshal Conversation": "Could not retrieve conversation",
"Failed to unmarshal SentRequestMap": "Failed to pull up friend requests",
"cannot create username when network is not health": "Cannot create username, unable to connect to network",
}
*/
FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile, NSError* _Nullable* _Nullable error);
@class BindingsAuthCallbacks; @class BindingsAuthCallbacks;
@class BindingsBroadcastListener; @class BindingsBroadcastListener;
......
No preview for this file type
...@@ -404,6 +404,11 @@ Parameters: ...@@ -404,6 +404,11 @@ Parameters:
* GetID returns the ID for this Cmix in the cmixTracker. * GetID returns the ID for this Cmix in the cmixTracker.
*/ */
- (long)getID; - (long)getID;
/**
* GetReceptionRegistrationValidationSignature returns the signature provided by
the xx network.
*/
- (NSData* _Nullable)getReceptionRegistrationValidationSignature;
/** /**
* HasRunningProcessies checks if any background threads are running and returns * HasRunningProcessies checks if any background threads are running and returns
true if one or more are. true if one or more are.
...@@ -724,6 +729,17 @@ The first payload is index 0. ...@@ -724,6 +729,17 @@ The first payload is index 0.
* PayloadSize returns the max payload size for a partitionable E2E message. * PayloadSize returns the max payload size for a partitionable E2E message.
*/ */
- (long)payloadSize; - (long)payloadSize;
/**
* RegisterListener registers a new listener.
Parameters:
- senderId - the user ID who sends messages to this user that
this function will register a listener for.
- messageType - message type from the sender you want to listen for.
- newListener: A provider for a callback to hear a message.
Do not pass nil to this.
*/
- (BOOL)registerListener:(NSData* _Nullable)senderID messageType:(long)messageType newListener:(id<BindingsListener> _Nullable)newListener error:(NSError* _Nullable* _Nullable)error;
/** /**
* RemoveService removes all services for the given tag. * RemoveService removes all services for the given tag.
*/ */
...@@ -1329,6 +1345,15 @@ object. ...@@ -1329,6 +1345,15 @@ object.
- (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error; - (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error;
@end @end
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedCode;
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedMessage;
/** /**
* AsyncRequestRestLike sends an asynchronous restlike request to a given * AsyncRequestRestLike sends an asynchronous restlike request to a given
contact. contact.
...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received. ...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received.
*/ */
FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error);
/**
* CreateUserFriendlyErrorMessage will convert the passed in error string
to an error string that is user-friendly if a substring match is
found to a common error. Common errors is a map which can be updated
using UpdateCommonErrors. If the error is not common, some simple parsing
is done on the error message to make it more user-accessible, removing
backend specific jargon.
Parameters
- errStr - an error returned from the backend.
Returns
- A user-friendly error message. This should be devoid of technical speak
but still be meaningful for front-end or back-end teams.
*/
FOUNDATION_EXPORT NSString* _Nonnull BindingsCreateUserFriendlyErrorMessage(NSString* _Nullable errStr);
/** /**
* DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL. * DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL.
The NDF is processed into a protobuf containing a signature that is verified The NDF is processed into a protobuf containing a signature that is verified
...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s ...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s
Parameters: Parameters:
- e2eID - e2e object ID in the tracker - e2eID - e2e object ID in the tracker
- follower - network follower func wrapped in UdNetworkStatus - follower - network follower func wrapped in UdNetworkStatus
- username - the username the user wants to register with UD.
If the user is already registered, this field may be blank
- registrationValidationSignature - the signature provided by the xx network.
This signature is optional for other consumers who deploy their own UD.
*/ */
FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error);
...@@ -1711,6 +1757,21 @@ Returns: ...@@ -1711,6 +1757,21 @@ Returns:
*/ */
FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error);
/**
* UpdateCommonErrors updates the internal error mapping DB. This internal database
maps errors returned from the backend to user-friendly error messages.
Parameters
- jsonFile - contents of a JSON file whose format conforms to the example below.
Example Input:
{
"Failed to Unmarshal Conversation": "Could not retrieve conversation",
"Failed to unmarshal SentRequestMap": "Failed to pull up friend requests",
"cannot create username when network is not health": "Cannot create username, unable to connect to network",
}
*/
FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile, NSError* _Nullable* _Nullable error);
@class BindingsAuthCallbacks; @class BindingsAuthCallbacks;
@class BindingsBroadcastListener; @class BindingsBroadcastListener;
......
...@@ -404,6 +404,11 @@ Parameters: ...@@ -404,6 +404,11 @@ Parameters:
* GetID returns the ID for this Cmix in the cmixTracker. * GetID returns the ID for this Cmix in the cmixTracker.
*/ */
- (long)getID; - (long)getID;
/**
* GetReceptionRegistrationValidationSignature returns the signature provided by
the xx network.
*/
- (NSData* _Nullable)getReceptionRegistrationValidationSignature;
/** /**
* HasRunningProcessies checks if any background threads are running and returns * HasRunningProcessies checks if any background threads are running and returns
true if one or more are. true if one or more are.
...@@ -724,6 +729,17 @@ The first payload is index 0. ...@@ -724,6 +729,17 @@ The first payload is index 0.
* PayloadSize returns the max payload size for a partitionable E2E message. * PayloadSize returns the max payload size for a partitionable E2E message.
*/ */
- (long)payloadSize; - (long)payloadSize;
/**
* RegisterListener registers a new listener.
Parameters:
- senderId - the user ID who sends messages to this user that
this function will register a listener for.
- messageType - message type from the sender you want to listen for.
- newListener: A provider for a callback to hear a message.
Do not pass nil to this.
*/
- (BOOL)registerListener:(NSData* _Nullable)senderID messageType:(long)messageType newListener:(id<BindingsListener> _Nullable)newListener error:(NSError* _Nullable* _Nullable)error;
/** /**
* RemoveService removes all services for the given tag. * RemoveService removes all services for the given tag.
*/ */
...@@ -1329,6 +1345,15 @@ object. ...@@ -1329,6 +1345,15 @@ object.
- (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error; - (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error;
@end @end
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedCode;
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedMessage;
/** /**
* AsyncRequestRestLike sends an asynchronous restlike request to a given * AsyncRequestRestLike sends an asynchronous restlike request to a given
contact. contact.
...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received. ...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received.
*/ */
FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error);
/**
* CreateUserFriendlyErrorMessage will convert the passed in error string
to an error string that is user-friendly if a substring match is
found to a common error. Common errors is a map which can be updated
using UpdateCommonErrors. If the error is not common, some simple parsing
is done on the error message to make it more user-accessible, removing
backend specific jargon.
Parameters
- errStr - an error returned from the backend.
Returns
- A user-friendly error message. This should be devoid of technical speak
but still be meaningful for front-end or back-end teams.
*/
FOUNDATION_EXPORT NSString* _Nonnull BindingsCreateUserFriendlyErrorMessage(NSString* _Nullable errStr);
/** /**
* DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL. * DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL.
The NDF is processed into a protobuf containing a signature that is verified The NDF is processed into a protobuf containing a signature that is verified
...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s ...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s
Parameters: Parameters:
- e2eID - e2e object ID in the tracker - e2eID - e2e object ID in the tracker
- follower - network follower func wrapped in UdNetworkStatus - follower - network follower func wrapped in UdNetworkStatus
- username - the username the user wants to register with UD.
If the user is already registered, this field may be blank
- registrationValidationSignature - the signature provided by the xx network.
This signature is optional for other consumers who deploy their own UD.
*/ */
FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error);
...@@ -1711,6 +1757,21 @@ Returns: ...@@ -1711,6 +1757,21 @@ Returns:
*/ */
FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error);
/**
* UpdateCommonErrors updates the internal error mapping DB. This internal database
maps errors returned from the backend to user-friendly error messages.
Parameters
- jsonFile - contents of a JSON file whose format conforms to the example below.
Example Input:
{
"Failed to Unmarshal Conversation": "Could not retrieve conversation",
"Failed to unmarshal SentRequestMap": "Failed to pull up friend requests",
"cannot create username when network is not health": "Cannot create username, unable to connect to network",
}
*/
FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile, NSError* _Nullable* _Nullable error);
@class BindingsAuthCallbacks; @class BindingsAuthCallbacks;
@class BindingsBroadcastListener; @class BindingsBroadcastListener;
......
...@@ -404,6 +404,11 @@ Parameters: ...@@ -404,6 +404,11 @@ Parameters:
* GetID returns the ID for this Cmix in the cmixTracker. * GetID returns the ID for this Cmix in the cmixTracker.
*/ */
- (long)getID; - (long)getID;
/**
* GetReceptionRegistrationValidationSignature returns the signature provided by
the xx network.
*/
- (NSData* _Nullable)getReceptionRegistrationValidationSignature;
/** /**
* HasRunningProcessies checks if any background threads are running and returns * HasRunningProcessies checks if any background threads are running and returns
true if one or more are. true if one or more are.
...@@ -724,6 +729,17 @@ The first payload is index 0. ...@@ -724,6 +729,17 @@ The first payload is index 0.
* PayloadSize returns the max payload size for a partitionable E2E message. * PayloadSize returns the max payload size for a partitionable E2E message.
*/ */
- (long)payloadSize; - (long)payloadSize;
/**
* RegisterListener registers a new listener.
Parameters:
- senderId - the user ID who sends messages to this user that
this function will register a listener for.
- messageType - message type from the sender you want to listen for.
- newListener: A provider for a callback to hear a message.
Do not pass nil to this.
*/
- (BOOL)registerListener:(NSData* _Nullable)senderID messageType:(long)messageType newListener:(id<BindingsListener> _Nullable)newListener error:(NSError* _Nullable* _Nullable)error;
/** /**
* RemoveService removes all services for the given tag. * RemoveService removes all services for the given tag.
*/ */
...@@ -1329,6 +1345,15 @@ object. ...@@ -1329,6 +1345,15 @@ object.
- (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error; - (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error;
@end @end
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedCode;
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedMessage;
/** /**
* AsyncRequestRestLike sends an asynchronous restlike request to a given * AsyncRequestRestLike sends an asynchronous restlike request to a given
contact. contact.
...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received. ...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received.
*/ */
FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error);
/**
* CreateUserFriendlyErrorMessage will convert the passed in error string
to an error string that is user-friendly if a substring match is
found to a common error. Common errors is a map which can be updated
using UpdateCommonErrors. If the error is not common, some simple parsing
is done on the error message to make it more user-accessible, removing
backend specific jargon.
Parameters
- errStr - an error returned from the backend.
Returns
- A user-friendly error message. This should be devoid of technical speak
but still be meaningful for front-end or back-end teams.
*/
FOUNDATION_EXPORT NSString* _Nonnull BindingsCreateUserFriendlyErrorMessage(NSString* _Nullable errStr);
/** /**
* DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL. * DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL.
The NDF is processed into a protobuf containing a signature that is verified The NDF is processed into a protobuf containing a signature that is verified
...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s ...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s
Parameters: Parameters:
- e2eID - e2e object ID in the tracker - e2eID - e2e object ID in the tracker
- follower - network follower func wrapped in UdNetworkStatus - follower - network follower func wrapped in UdNetworkStatus
- username - the username the user wants to register with UD.
If the user is already registered, this field may be blank
- registrationValidationSignature - the signature provided by the xx network.
This signature is optional for other consumers who deploy their own UD.
*/ */
FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error);
...@@ -1711,6 +1757,21 @@ Returns: ...@@ -1711,6 +1757,21 @@ Returns:
*/ */
FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error);
/**
* UpdateCommonErrors updates the internal error mapping DB. This internal database
maps errors returned from the backend to user-friendly error messages.
Parameters
- jsonFile - contents of a JSON file whose format conforms to the example below.
Example Input:
{
"Failed to Unmarshal Conversation": "Could not retrieve conversation",
"Failed to unmarshal SentRequestMap": "Failed to pull up friend requests",
"cannot create username when network is not health": "Cannot create username, unable to connect to network",
}
*/
FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile, NSError* _Nullable* _Nullable error);
@class BindingsAuthCallbacks; @class BindingsAuthCallbacks;
@class BindingsBroadcastListener; @class BindingsBroadcastListener;
......
...@@ -404,6 +404,11 @@ Parameters: ...@@ -404,6 +404,11 @@ Parameters:
* GetID returns the ID for this Cmix in the cmixTracker. * GetID returns the ID for this Cmix in the cmixTracker.
*/ */
- (long)getID; - (long)getID;
/**
* GetReceptionRegistrationValidationSignature returns the signature provided by
the xx network.
*/
- (NSData* _Nullable)getReceptionRegistrationValidationSignature;
/** /**
* HasRunningProcessies checks if any background threads are running and returns * HasRunningProcessies checks if any background threads are running and returns
true if one or more are. true if one or more are.
...@@ -724,6 +729,17 @@ The first payload is index 0. ...@@ -724,6 +729,17 @@ The first payload is index 0.
* PayloadSize returns the max payload size for a partitionable E2E message. * PayloadSize returns the max payload size for a partitionable E2E message.
*/ */
- (long)payloadSize; - (long)payloadSize;
/**
* RegisterListener registers a new listener.
Parameters:
- senderId - the user ID who sends messages to this user that
this function will register a listener for.
- messageType - message type from the sender you want to listen for.
- newListener: A provider for a callback to hear a message.
Do not pass nil to this.
*/
- (BOOL)registerListener:(NSData* _Nullable)senderID messageType:(long)messageType newListener:(id<BindingsListener> _Nullable)newListener error:(NSError* _Nullable* _Nullable)error;
/** /**
* RemoveService removes all services for the given tag. * RemoveService removes all services for the given tag.
*/ */
...@@ -1329,6 +1345,15 @@ object. ...@@ -1329,6 +1345,15 @@ object.
- (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error; - (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error;
@end @end
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedCode;
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedMessage;
/** /**
* AsyncRequestRestLike sends an asynchronous restlike request to a given * AsyncRequestRestLike sends an asynchronous restlike request to a given
contact. contact.
...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received. ...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received.
*/ */
FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error);
/**
* CreateUserFriendlyErrorMessage will convert the passed in error string
to an error string that is user-friendly if a substring match is
found to a common error. Common errors is a map which can be updated
using UpdateCommonErrors. If the error is not common, some simple parsing
is done on the error message to make it more user-accessible, removing
backend specific jargon.
Parameters
- errStr - an error returned from the backend.
Returns
- A user-friendly error message. This should be devoid of technical speak
but still be meaningful for front-end or back-end teams.
*/
FOUNDATION_EXPORT NSString* _Nonnull BindingsCreateUserFriendlyErrorMessage(NSString* _Nullable errStr);
/** /**
* DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL. * DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL.
The NDF is processed into a protobuf containing a signature that is verified The NDF is processed into a protobuf containing a signature that is verified
...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s ...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s
Parameters: Parameters:
- e2eID - e2e object ID in the tracker - e2eID - e2e object ID in the tracker
- follower - network follower func wrapped in UdNetworkStatus - follower - network follower func wrapped in UdNetworkStatus
- username - the username the user wants to register with UD.
If the user is already registered, this field may be blank
- registrationValidationSignature - the signature provided by the xx network.
This signature is optional for other consumers who deploy their own UD.
*/ */
FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error);
...@@ -1711,6 +1757,21 @@ Returns: ...@@ -1711,6 +1757,21 @@ Returns:
*/ */
FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error);
/**
* UpdateCommonErrors updates the internal error mapping DB. This internal database
maps errors returned from the backend to user-friendly error messages.
Parameters
- jsonFile - contents of a JSON file whose format conforms to the example below.
Example Input:
{
"Failed to Unmarshal Conversation": "Could not retrieve conversation",
"Failed to unmarshal SentRequestMap": "Failed to pull up friend requests",
"cannot create username when network is not health": "Cannot create username, unable to connect to network",
}
*/
FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile, NSError* _Nullable* _Nullable error);
@class BindingsAuthCallbacks; @class BindingsAuthCallbacks;
@class BindingsBroadcastListener; @class BindingsBroadcastListener;
......
...@@ -404,6 +404,11 @@ Parameters: ...@@ -404,6 +404,11 @@ Parameters:
* GetID returns the ID for this Cmix in the cmixTracker. * GetID returns the ID for this Cmix in the cmixTracker.
*/ */
- (long)getID; - (long)getID;
/**
* GetReceptionRegistrationValidationSignature returns the signature provided by
the xx network.
*/
- (NSData* _Nullable)getReceptionRegistrationValidationSignature;
/** /**
* HasRunningProcessies checks if any background threads are running and returns * HasRunningProcessies checks if any background threads are running and returns
true if one or more are. true if one or more are.
...@@ -724,6 +729,17 @@ The first payload is index 0. ...@@ -724,6 +729,17 @@ The first payload is index 0.
* PayloadSize returns the max payload size for a partitionable E2E message. * PayloadSize returns the max payload size for a partitionable E2E message.
*/ */
- (long)payloadSize; - (long)payloadSize;
/**
* RegisterListener registers a new listener.
Parameters:
- senderId - the user ID who sends messages to this user that
this function will register a listener for.
- messageType - message type from the sender you want to listen for.
- newListener: A provider for a callback to hear a message.
Do not pass nil to this.
*/
- (BOOL)registerListener:(NSData* _Nullable)senderID messageType:(long)messageType newListener:(id<BindingsListener> _Nullable)newListener error:(NSError* _Nullable* _Nullable)error;
/** /**
* RemoveService removes all services for the given tag. * RemoveService removes all services for the given tag.
*/ */
...@@ -1329,6 +1345,15 @@ object. ...@@ -1329,6 +1345,15 @@ object.
- (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error; - (BOOL)unsetAlternativeUserDiscovery:(NSError* _Nullable* _Nullable)error;
@end @end
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedCode;
/**
* Error codes
*/
FOUNDATION_EXPORT NSString* _Nonnull const BindingsUnrecognizedMessage;
/** /**
* AsyncRequestRestLike sends an asynchronous restlike request to a given * AsyncRequestRestLike sends an asynchronous restlike request to a given
contact. contact.
...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received. ...@@ -1345,6 +1370,23 @@ of JSON marshalling the response when received.
*/ */
FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BOOL BindingsAsyncRequestRestLike(long e2eID, NSData* _Nullable recipient, NSData* _Nullable request, NSData* _Nullable paramsJSON, id<BindingsRestlikeCallback> _Nullable cb, NSError* _Nullable* _Nullable error);
/**
* CreateUserFriendlyErrorMessage will convert the passed in error string
to an error string that is user-friendly if a substring match is
found to a common error. Common errors is a map which can be updated
using UpdateCommonErrors. If the error is not common, some simple parsing
is done on the error message to make it more user-accessible, removing
backend specific jargon.
Parameters
- errStr - an error returned from the backend.
Returns
- A user-friendly error message. This should be devoid of technical speak
but still be meaningful for front-end or back-end teams.
*/
FOUNDATION_EXPORT NSString* _Nonnull BindingsCreateUserFriendlyErrorMessage(NSString* _Nullable errStr);
/** /**
* DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL. * DownloadAndVerifySignedNdfWithUrl retrieves the NDF from a specified URL.
The NDF is processed into a protobuf containing a signature that is verified The NDF is processed into a protobuf containing a signature that is verified
...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s ...@@ -1488,6 +1530,10 @@ FOUNDATION_EXPORT BindingsCmix* _Nullable BindingsLoadCmix(NSString* _Nullable s
Parameters: Parameters:
- e2eID - e2e object ID in the tracker - e2eID - e2e object ID in the tracker
- follower - network follower func wrapped in UdNetworkStatus - follower - network follower func wrapped in UdNetworkStatus
- username - the username the user wants to register with UD.
If the user is already registered, this field may be blank
- registrationValidationSignature - the signature provided by the xx network.
This signature is optional for other consumers who deploy their own UD.
*/ */
FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT BindingsUserDiscovery* _Nullable BindingsLoadOrNewUserDiscovery(long e2eID, id<BindingsUdNetworkStatus> _Nullable follower, NSString* _Nullable username, NSData* _Nullable registrationValidationSignature, NSError* _Nullable* _Nullable error);
...@@ -1711,6 +1757,21 @@ Returns: ...@@ -1711,6 +1757,21 @@ Returns:
*/ */
FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error); FOUNDATION_EXPORT NSData* _Nullable BindingsTransmitSingleUse(long e2eID, NSData* _Nullable recipient, NSString* _Nullable tag, NSData* _Nullable payload, NSData* _Nullable paramsJSON, id<BindingsSingleUseResponse> _Nullable responseCB, NSError* _Nullable* _Nullable error);
/**
* UpdateCommonErrors updates the internal error mapping DB. This internal database
maps errors returned from the backend to user-friendly error messages.
Parameters
- jsonFile - contents of a JSON file whose format conforms to the example below.
Example Input:
{
"Failed to Unmarshal Conversation": "Could not retrieve conversation",
"Failed to unmarshal SentRequestMap": "Failed to pull up friend requests",
"cannot create username when network is not health": "Cannot create username, unable to connect to network",
}
*/
FOUNDATION_EXPORT BOOL BindingsUpdateCommonErrors(NSString* _Nullable jsonFile, NSError* _Nullable* _Nullable error);
@class BindingsAuthCallbacks; @class BindingsAuthCallbacks;
@class BindingsBroadcastListener; @class BindingsBroadcastListener;
......
...@@ -2,6 +2,7 @@ import Bindings ...@@ -2,6 +2,7 @@ import Bindings
public struct Cmix { public struct Cmix {
public var getId: CmixGetId public var getId: CmixGetId
public var getReceptionRegistrationValidationSignature: CmixGetReceptionRegistrationValidationSignature
public var makeReceptionIdentity: CmixMakeReceptionIdentity public var makeReceptionIdentity: CmixMakeReceptionIdentity
public var makeLegacyReceptionIdentity: CmixMakeLegacyReceptionIdentity public var makeLegacyReceptionIdentity: CmixMakeLegacyReceptionIdentity
public var isHealthy: CmixIsHealthy public var isHealthy: CmixIsHealthy
...@@ -20,6 +21,7 @@ extension Cmix { ...@@ -20,6 +21,7 @@ extension Cmix {
public static func live(_ bindingsCmix: BindingsCmix) -> Cmix { public static func live(_ bindingsCmix: BindingsCmix) -> Cmix {
Cmix( Cmix(
getId: .live(bindingsCmix), getId: .live(bindingsCmix),
getReceptionRegistrationValidationSignature: .live(bindingsCmix),
makeReceptionIdentity: .live(bindingsCmix), makeReceptionIdentity: .live(bindingsCmix),
makeLegacyReceptionIdentity: .live(bindingsCmix), makeLegacyReceptionIdentity: .live(bindingsCmix),
isHealthy: .live(bindingsCmix), isHealthy: .live(bindingsCmix),
...@@ -39,6 +41,7 @@ extension Cmix { ...@@ -39,6 +41,7 @@ extension Cmix {
extension Cmix { extension Cmix {
public static let unimplemented = Cmix( public static let unimplemented = Cmix(
getId: .unimplemented, getId: .unimplemented,
getReceptionRegistrationValidationSignature: .unimplemented,
makeReceptionIdentity: .unimplemented, makeReceptionIdentity: .unimplemented,
makeLegacyReceptionIdentity: .unimplemented, makeLegacyReceptionIdentity: .unimplemented,
isHealthy: .unimplemented, isHealthy: .unimplemented,
......
import Bindings
import XCTestDynamicOverlay
public struct CmixGetReceptionRegistrationValidationSignature {
public var run: () -> Data
public func callAsFunction() -> Data {
run()
}
}
extension CmixGetReceptionRegistrationValidationSignature {
public static func live(_ bindingsCmix: BindingsCmix) -> CmixGetReceptionRegistrationValidationSignature {
CmixGetReceptionRegistrationValidationSignature {
guard let data = bindingsCmix.getReceptionRegistrationValidationSignature() else {
fatalError("BindingsCmix.getReceptionRegistrationValidationSignature returned `nil`")
}
return data
}
}
}
extension CmixGetReceptionRegistrationValidationSignature {
public static let unimplemented = CmixGetReceptionRegistrationValidationSignature(
run: XCTUnimplemented("\(Self.self)")
)
}
...@@ -22,6 +22,7 @@ public struct E2E { ...@@ -22,6 +22,7 @@ public struct E2E {
public var confirmReceivedRequest: E2EConfirmReceivedRequest public var confirmReceivedRequest: E2EConfirmReceivedRequest
public var replayConfirmReceivedRequest: E2EReplayConfirmReceivedRequest public var replayConfirmReceivedRequest: E2EReplayConfirmReceivedRequest
public var send: E2ESend public var send: E2ESend
public var registerListener: E2ERegisterListener
} }
extension E2E { extension E2E {
...@@ -47,7 +48,8 @@ extension E2E { ...@@ -47,7 +48,8 @@ extension E2E {
verifyOwnership: .live(bindingsE2E), verifyOwnership: .live(bindingsE2E),
confirmReceivedRequest: .live(bindingsE2E), confirmReceivedRequest: .live(bindingsE2E),
replayConfirmReceivedRequest: .live(bindingsE2E), replayConfirmReceivedRequest: .live(bindingsE2E),
send: .live(bindingsE2E) send: .live(bindingsE2E),
registerListener: .live(bindingsE2E)
) )
} }
} }
...@@ -74,6 +76,7 @@ extension E2E { ...@@ -74,6 +76,7 @@ extension E2E {
verifyOwnership: .unimplemented, verifyOwnership: .unimplemented,
confirmReceivedRequest: .unimplemented, confirmReceivedRequest: .unimplemented,
replayConfirmReceivedRequest: .unimplemented, replayConfirmReceivedRequest: .unimplemented,
send: .unimplemented send: .unimplemented,
registerListener: .unimplemented
) )
} }
import Bindings
import XCTestDynamicOverlay
public struct E2ERegisterListener {
public var run: (Data, Int, Listener) throws -> Void
public func callAsFunction(
senderId: Data,
messageType: Int,
callback: Listener
) throws {
try run(senderId, messageType, callback)
}
}
extension E2ERegisterListener {
public static func live(_ bindingsE2E: BindingsE2e) -> E2ERegisterListener {
E2ERegisterListener { senderId, messageType, callback in
try bindingsE2E.registerListener(
senderId,
messageType: messageType,
newListener: callback.makeBindingsListener()
)
}
}
}
extension E2ERegisterListener {
public static let unimplemented = E2ERegisterListener(
run: XCTUnimplemented("\(Self.self)")
)
}
import Bindings
import XCTestDynamicOverlay
public struct CreateUserFriendlyErrorMessage {
public var run: (String) -> String
public func callAsFunction(_ errorString: String) -> String {
run(errorString)
}
}
extension CreateUserFriendlyErrorMessage {
public static let live = CreateUserFriendlyErrorMessage { errorString in
BindingsCreateUserFriendlyErrorMessage(errorString)
}
}
extension CreateUserFriendlyErrorMessage {
public static let unimplemented = CreateUserFriendlyErrorMessage(
run: XCTUnimplemented("\(Self.self)")
)
}
...@@ -2,13 +2,13 @@ import Bindings ...@@ -2,13 +2,13 @@ import Bindings
import XCTestDynamicOverlay import XCTestDynamicOverlay
public struct LoadOrNewUserDiscovery { public struct LoadOrNewUserDiscovery {
public var run: (Int, UdNetworkStatus, String, Data) throws -> UserDiscovery public var run: (Int, UdNetworkStatus, String?, Data?) throws -> UserDiscovery
public func callAsFunction( public func callAsFunction(
e2eId: Int, e2eId: Int,
follower: UdNetworkStatus, follower: UdNetworkStatus,
username: String, username: String?,
registrationValidationSignature: Data registrationValidationSignature: Data?
) throws -> UserDiscovery { ) throws -> UserDiscovery {
try run(e2eId, follower, username, registrationValidationSignature) try run(e2eId, follower, username, registrationValidationSignature)
} }
......
import Bindings
import XCTestDynamicOverlay
public struct UpdateCommonErrors {
public var run: (String) throws -> Void
public func callAsFunction(jsonFile: String) throws {
try run(jsonFile)
}
}
extension UpdateCommonErrors {
public static let live = UpdateCommonErrors { jsonFile in
var error: NSError?
let result = BindingsUpdateCommonErrors(
jsonFile,
&error
)
if let error = error {
throw error
}
guard result else {
fatalError("BindingsUpdateCommonErrors returned `false` without providing error")
}
}
}
extension UpdateCommonErrors {
public static let unimplemented = UpdateCommonErrors(
run: XCTUnimplemented("\(Self.self)")
)
}