build method

  1. @override
ClientState build(
  1. {required String apiKey,
  2. required ClientEntry entry}
)

Implementation

@override
ClientState build({required String apiKey, required ClientEntry entry}) {
  // final services = ref.watch(workerProvider(apiKey).select(
  //   (workerState) {
  //     final listPlanned =
  //         workerState.planned.where((e) => e.contractId == entry.contractId);
  //     final acceptId = listPlanned.map((e) => e.servId).toSet();
  //     return workerState.services
  //         .where((service) {
  //           if (acceptId.contains(service.id)) {
  //             return true;
  //           } else {
  //             return false;
  //             // todo: also add services not in list as stub readOnly, or throw error, or send error to administrator
  //           }
  //         })
  //         .map((entry) => ClientService(
  //               ref: ref,
  //               apiKey: apiKey,
  //               service: entry,
  //               planned: listPlanned
  //                   .firstWhere((element) => element.servId == entry.id),
  //             ))
  //         .toList(growable: false)
  //       ..sort((a, b) => a.servId.compareTo(b.servId)); // preserve id order
  //   },
  // ));
  final workerState = ref.watch(workerProvider(apiKey));

  final listPlanned =
      workerState.planned.where((e) => e.contractId == entry.contractId);
  final acceptId = listPlanned.map((e) => e.servId).toSet();
  final services = workerState.services
      .where((service) {
        if (acceptId.contains(service.id)) {
          return true;
        } else {
          return false;
          // todo: also add services not in list as stub readOnly, or throw error, or send error to administrator
        }
      })
      .map((entry) => ClientService(
            ref: ref,
            apiKey: apiKey,
            service: entry,
            planned: listPlanned
                .firstWhere((element) => element.servId == entry.id),
          ))
      .toList(growable: false)
    ..sort((a, b) => a.servId.compareTo(b.servId)); // preserve id order

  return ClientState(
      ref: ref,
      apiKey: apiKey,
      entry: entry,
      services: services,
      state: ref.watch(appStateProvider),
      worker: ref.read(workerProvider(apiKey).notifier));
}