# registerAccountStateHandler

Register a callback that will be called whenever [`NamiCustomerManager.login`](https://docs.namiml.com/sdk-reference/namicustomermanager/login) or [`NamiCustomerManager.logout`](https://docs.namiml.com/sdk-reference/namicustomermanager/logout) is called with results from those calls.

{% tabs %}
{% tab title="Swift" %}

```swift
NamiCustomerManager.registerAccountStateHandler { accountStateAction, success, error in
   if success {
       if accountStateAction == .login {
         // logged in
       } else if accountStateAction == .logout {
         // logged out
       }        
   } else {
     // an error occured
   }
}
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
NamiCustomerManager.registerAccountStateHandler { accountStateAction, success, error ->
if (success) {
    if (accountStateAction == AccountStateAction.LOGIN) {
        Log.d(LOG_TAG, "User is logged in")
    } else if (accountStateAction == AccountStateAction.LOGOUT) {
        Log.d(LOG_TAG, "User is logged out")
    }
} else if (error != null) {
    if (accountStateAction == AccountStateAction.LOGIN) {
        Log.d(LOG_TAG, "There was an error logging in. Error - ${error}")
    } else if (accountStateAction == AccountStateAction.LOGOUT) {
        Log.d(LOG_TAG, "There was an error logging out. Error - ${error}")
    }
}
}
```

{% endtab %}

{% tab title="Flutter" %}

```dart
NamiCustomerManager.registerAccountStateHandler()
    .listen((accountState) {
  print("AccountStateHandler triggered");

  if (accountState.success) {
    if (accountState.accountStateAction == AccountStateAction.login) {
      print("Login success");
    } else
    if (accountState.accountStateAction == AccountStateAction.logout) {
      print("Logout success");
    }
  } else {
    if (accountState.accountStateAction == AccountStateAction.login) {
      print("Login error - ${accountState.error}");
    } else
    if (accountState.accountStateAction == AccountStateAction.logout) {
      print("Logout error - ${accountState.error}");
    }
  }
});
```

{% endtab %}

{% tab title="React Native" %}

```jsx
useEffect(() => {
  checkIsLoggedIn();
  const subscriptionAccountStateRemover =
    NamiCustomerManager.registerAccountStateHandler(
      (action, success, error) => {
        console.log('accountState', action, success, error);
        if (action === 'login' && success) {
          setIsUserLogin(success);
          checkId();
        }
        if (action === 'logout' && success) {
          setIsUserLogin(!success);
          checkId();
        }
      },
    );
  return () => {
    subscriptionAccountStateRemover();
  };
}, []);
```

{% endtab %}

{% tab title="Unity" %}

```c
NamiCustomerManager.RegisterAccountStateHandler(accountStateCallback);
```

{% endtab %}
{% endtabs %}
