read method

Future<void> read()

Implementation

Future<void> read() async {
  state.loading();
  final List<UAdminPlaceRow> rows = <UAdminPlaceRow>[];
  bool failed = false;

  await UServices.hotel.readHotels(
    p: UHotelReadParams(pageSize: 200, selectorArgs: const UHotelSelectorArgs(media: UMediaSelectorArgs())),
    onOk: (UResponse<List<UHotelResponse>> r) => rows.addAll(
      (r.result ?? <UHotelResponse>[]).map(
        (UHotelResponse h) =>
            UAdminPlaceRow(id: h.id, isHotel: true, title: h.title, cityCode: h.cityCode, tags: h.tags, coverUrl: (h.media ?? <UMediaResponse>[]).sortedForGallery().firstOrNull?.url),
      ),
    ),
    onError: (UEmptyResponse e) => failed = true,
    onException: (String e) => failed = true,
  );
  await UServices.hotel.readDorms(
    p: UDormReadParams(pageSize: 200, selectorArgs: const UDormSelectorArgs(media: UMediaSelectorArgs())),
    onOk: (UResponse<List<UDormResponse>> r) => rows.addAll(
      (r.result ?? <UDormResponse>[]).map(
        (UDormResponse d) =>
            UAdminPlaceRow(id: d.id, isHotel: false, title: d.title, cityCode: d.cityCode, tags: d.tags, coverUrl: (d.media ?? <UMediaResponse>[]).sortedForGallery().firstOrNull?.url),
      ),
    ),
    onError: (UEmptyResponse e) => failed = true,
    onException: (String e) => failed = true,
  );

  if (failed && rows.isEmpty) return setError();
  list = rows;
  setListState(isEmpty: list.isEmpty);
}