User

public extension User
extension User: ObservableObject
  • Links the currently authenticated user with a new identity, where the identity is defined by the credential specified as a parameter. This will only be successful if this User is the currently authenticated with the client from which it was created. On success a new user will be returned with the new linked credentials. @param credentials The Credentials used to link the user to a new identity. @completion A completion that eventually return Result.success(User) with user’s data or Result.failure(Error).

    Declaration

    Swift

    func linkUser(credentials: Credentials, _ completion: @escaping (Result<User, Error>) -> Void)
  • Create a sync configuration instance.

    Additional settings can be optionally specified. Descriptions of these settings follow.

    ClientResetMode is .manual by default.

    Warning

    NEVER disable SSL validation for a system running in production.

    Declaration

    Swift

    func configuration<T>(partitionValue: T) -> Realm.Configuration where T : BSON
  • Create a sync configuration instance.

    Declaration

    Swift

    func configuration<T: BSON>(partitionValue: T,
                                clientResetMode: ClientResetMode) -> Realm.Configuration

    Parameters

    partitionValue

    The BSON value the Realm is partitioned on.

    clientResetMode

    Determines file recovery behavior during a client reset.

    notifyBeforeClientReset

    A callback which notifies prior to a client reset occurring. See: notifyBeforeClientReset.

    notifyAfterClientReset

    A callback which notifies after a client reset has occurred. See: notifyAfterClientReset.

  • Create a sync configuration instance.

    Warning

    NEVER disable SSL validation for a system running in production.

    Declaration

    Swift

    func configuration(partitionValue: AnyBSON,
                       cancelAsyncOpenOnNonFatalErrors: Bool = false) -> Realm.Configuration

    Parameters

    partitionValue

    Takes nil as a partition value.

    cancelAsyncOpenOnNonFatalErrors

    By default, Realm.asyncOpen() swallows non-fatal connection errors such as a connection attempt timing out and simply retries until it succeeds. If this is set to true, instead the error will be reported to the callback and the async open will be cancelled.

  • Create a sync configuration instance.

    Warning

    NEVER disable SSL validation for a system running in production.

    Declaration

    Swift

    func configuration<T: BSON>(partitionValue: T,
                                cancelAsyncOpenOnNonFatalErrors: Bool = false) -> Realm.Configuration

    Parameters

    partitionValue

    The BSON value the Realm is partitioned on.

    cancelAsyncOpenOnNonFatalErrors

    By default, Realm.asyncOpen() swallows non-fatal connection errors such as a connection attempt timing out and simply retries until it succeeds. If this is set to true, instead the error will be reported to the callback and the async open will be cancelled.

  • The custom data of the user. This is configured in your MongoDB Realm App.

    Declaration

    Swift

    var customData: Document { get }
  • A client for interacting with a remote MongoDB instance

    Declaration

    Swift

    func mongoClient(_ serviceName: String) -> MongoClient

    Parameters

    serviceName

    The name of the MongoDB service

    Return Value

    A MongoClient which is used for interacting with a remote MongoDB service

  • Call a MongoDB Realm function with the provided name and arguments.

    user.functions.sum([1, 2, 3, 4, 5]) { sum, error in
        guard case let .int64(value) = sum else {
            print(error?.localizedDescription)
        }
    
        assert(value == 15)
    }
    

    The dynamic member name (sum in the above example) is directly associated with the function name. The first argument is the BSONArray of arguments to be provided to the function. The second and final argument is the completion handler to call when the function call is complete. This handler is executed on a non-main global DispatchQueue.

    Declaration

    Swift

    var functions: Functions { get }
  • Refresh a user’s custom data. This will, in effect, refresh the user’s auth session. @returns A publisher that eventually return Dictionary with user’s data or Error.

    Declaration

    Swift

    func refreshCustomData() -> Future<[AnyHashable : Any], Error>
  • Links the currently authenticated user with a new identity, where the identity is defined by the credential specified as a parameter. This will only be successful if this User is the currently authenticated with the client from which it was created. On success a new user will be returned with the new linked credentials. @param credentials The Credentials used to link the user to a new identity. @returns A publisher that eventually return Result.success or Error.

    Declaration

    Swift

    func linkUser(credentials: Credentials) -> Future<User, Error>
  • Removes the user This logs out and destroys the session related to this user. The completion block will return an error if the user is not found or is already removed. @returns A publisher that eventually return Result.success or Error.

    Declaration

    Swift

    func remove() -> Future<Void, Error>
  • Logs out the current user The users state will be set to Removed is they are an anonymous user or LoggedOut if they are authenticated by a username / password or third party auth clients / If the logout request fails, this method will still clear local authentication state. @returns A publisher that eventually return Result.success or Error.

    Declaration

    Swift

    func logOut() -> Future<Void, Error>
  • Permanently deletes this user from your MongoDB Realm app. The users state will be set to Removed and the session will be destroyed. If the delete request fails, the local authentication state will be untouched. @returns A publisher that eventually return Result.success or Error.

    Declaration

    Swift

    func delete() -> Future<Void, Error>
  • A publisher that emits Void each time the user changes.

    Despite the name, this actually emits after the user has changed.

    Declaration

    Swift

    public var objectWillChange: UserPublisher { get }
  • Refresh a user’s custom data. This will, in effect, refresh the user’s auth session. @completion A completion that eventually return Result.success(Dictionary) with user’s data or Result.failure(Error).

    Declaration

    Swift

    func refreshCustomData(_ completion: @escaping (Result<[AnyHashable : Any], Error>) -> Void)
  • linkUser(credentials:) Asynchronous

    Links the currently authenticated user with a new identity, where the identity is defined by the credential specified as a parameter. This will only be successful if this User is the currently authenticated with the client from which it was created. On success a new user will be returned with the new linked credentials.

    Declaration

    Swift

    func linkUser(credentials: Credentials) async throws -> User

    Parameters

    credentials

    The Credentials used to link the user to a new identity.

    Return Value

    A User after successfully update its identity.

  • Create a flexible sync configuration instance, which can be used to open a realm which supports flexible sync.

    It won’t be possible to combine flexible and partition sync in the same app, which means if you open a realm with a flexible sync configuration, you won’t be able to open a realm with a PBS configuration and the other way around.

    @return A Realm.Configuration instance with a flexible sync configuration.

    Declaration

    Swift

    public func flexibleSyncConfiguration() -> Realm.Configuration