dormBed static method

Future<void> dormBed(
  1. UDormBedResponse item, {
  2. VoidCallback? onDone,
})

Implementation

static Future<void> dormBed(UDormBedResponse item, {VoidCallback? onDone}) async {
  final (UResponse<UDormBedResponse>? fetched, _, _) = await UServices.hotel.readDormBedById(
    p: UIdParams(
      id: item.id,
      selectorArgs: const UDormBedSelectorArgs(media: UMediaSelectorArgs()),
    ),
  );
  final UDormBedResponse b = fetched?.result ?? item;

  final List<int> tags = List<int>.from(b.tags);
  final UAdminMediaDraft draft = UAdminMediaDraft();
  final List<UMediaResponse> media = (b.media ?? <UMediaResponse>[]).sortedForGallery();

  await _open(
    title: "${U.s.detailsAndPhotos} — ${b.title}",
    onDone: onDone,
    body: (BuildContext context, StateSetter setState) => Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        UAdminSection(
          title: U.s.photos,
          children: <Widget>[UAdminMediaManager(media: media, draft: draft)],
        ),
        UAdminSection(
          title: U.s.details,
          children: <Widget>[
            UAdminTagChips<TagDormBed>(title: U.s.bedLevel, options: TagDormBed.values.group(200), tags: tags, single: true),
            UAdminTagChips<TagDormBed>(title: U.s.bedAmenities, options: TagDormBed.values.group(500), tags: tags),
          ],
        ),
      ],
    ),
    save: () async {
      final (UEmptyResponse? ok, UEmptyResponse? error, String? exception) = await UServices.hotel.updateDormBed(
        p: UDormBedUpdateParams(id: b.id, tags: tags),
      );
      if (!_isOk(ok, error, exception)) return false;
      await UAdminMediaSync.apply(draft: draft, existing: media, dormBedId: b.id);
      return true;
    },
  );
}