load method

Future<void> load()

Implementation

Future<void> load() async {
  MeshErrorReporter.instance.log(
    'loading auth settings',
    category: 'auth.settings.load',
    metadata: <String, String>{
      if (_config.appset?.isNotEmpty ?? false) 'appset': _config.appset!,
    },
  );
  state = state.copyWith(
    loading: true,
    error: null,
    settings: null,
    appset: _config.appset,
  );
  try {
    final devops = Proxy.mpi<Devops>();
    final settings = await devops.settings();
    final appset = _config.appset ?? 'mesh';
    final setting = settings?[appset];
    if (null == setting) {
      throw StateError('auth settings not found');
    }
    state = state
        .copyWith(
          loading: false,
          error: null,
          settings: setting,
          appset: appset,
        )
        .resolved();
    MeshErrorReporter.instance.log(
      'loaded auth settings',
      category: 'auth.settings.load',
      metadata: <String, String>{
        'appset': appset,
        'authMode': state.authMode.name,
        'accountProvider': state.accountProvider.name,
        if (state.scanProvider != null)
          'scanProvider': state.scanProvider!.name,
      },
    );
  } catch (error, stackTrace) {
    await MeshErrorReporter.instance.report(
      error,
      stackTrace,
      category: 'auth.settings.load',
      metadata: <String, String>{
        if (_config.appset?.isNotEmpty ?? false) 'appset': _config.appset!,
      },
    );
    state = state.copyWith(loading: false, error: error);
  }
}