login method
Connects to hub as principal using token. When remember is set the
token is persisted for the next reload; otherwise it is kept in memory
only. Updates state to reflect connecting → connected/error.
Implementation
Future<void> login({
required String hub,
required String principal,
required String token,
required bool remember,
}) async {
state.value = const AuthSnapshot(status: AuthStatus.connecting);
try {
final identity = await _service.connect(
hubUri: hub,
principal: principal,
token: token,
);
final uri = _service.hubUri!.toString();
_settings
..hub = hub
..principal = principal
..rememberToken = remember;
if (remember) {
_settings.saveToken(uri, token);
} else {
_settings.clearToken(uri);
}
state.value = AuthSnapshot(
status: AuthStatus.connected,
principal: identity,
hubUri: uri,
);
} on Object catch (e) {
final err = AppError.from(e);
state.value = AuthSnapshot(status: AuthStatus.error, error: err);
}
}