eventsCollapsedContent function

Widget eventsCollapsedContent(
  1. EventNotificationModel eventListenerKeyword
)

Implementation

Widget eventsCollapsedContent(EventNotificationModel eventListenerKeyword) {
  bool? isExited = false;

  eventListenerKeyword.group!.members!.forEach((groupMember) {
    if (groupMember.atSign ==
        AtEventNotificationListener().atClientInstance!.currentAtSign) {
      isExited = groupMember.tags!['isExited'];
    }
  });

  bool? isSharingEvent = false, isAdmin = false;
  var currentAtSign = AtEventNotificationListener().currentAtSign;
  isAdmin = eventListenerKeyword.atsignCreator == currentAtSign;
  if (isAdmin) {
    if (eventListenerKeyword.isSharing!) isSharingEvent = true;
  } else {
    eventListenerKeyword.group!.members!.forEach((groupMember) {
      if (groupMember.atSign == currentAtSign) {
        if (groupMember.tags!['isSharing'] == true) {
          isSharingEvent = true;
        }
      }
    });
  }

  /// TODO: remove extra columns
  return Container(
    height: 431,
    padding: EdgeInsets.fromLTRB(15, 3, 15, 0),
    decoration: BoxDecoration(
      borderRadius: BorderRadius.only(
          topLeft: Radius.circular(10.0), topRight: Radius.circular(10.0)),
      color: AllColors().WHITE,
      boxShadow: [
        BoxShadow(
          color: AllColors().DARK_GREY,
          blurRadius: 10.0,
          spreadRadius: 1.0,
          offset: Offset(0.0, 0.0),
        )
      ],
    ),
    child: Column(
        mainAxisSize: MainAxisSize.min,
        crossAxisAlignment: CrossAxisAlignment.start,
        mainAxisAlignment: MainAxisAlignment.start,
        children: [
          DraggableSymbol(),
          SizedBox(height: 3),
          Container(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Flexible(
                      child: Text(
                        eventListenerKeyword.title!,
                        style: TextStyle(
                            color: AllColors().Black, fontSize: 18.toFont),
                        maxLines: 1,
                        overflow: TextOverflow.ellipsis,
                      ),
                    ),
                    isAdmin
                        ? InkWell(
                            onTap: () {
                              bottomSheet(
                                AtEventNotificationListener()
                                    .navKey!
                                    .currentContext!,
                                CreateEvent(
                                  AtEventNotificationListener()
                                      .atClientInstance,
                                  isUpdate: true,
                                  eventData: eventListenerKeyword,
                                  onEventSaved: (event) {},
                                ),
                                SizeConfig().screenHeight * 0.9,
                              );
                            },
                            child: Row(
                              mainAxisAlignment: MainAxisAlignment.end,
                              children: [
                                Text('Edit',
                                    style: CustomTextStyles().orange16),
                                Icon(Icons.edit, color: AllColors().ORANGE)
                              ],
                            ),
                          )
                        : SizedBox()
                  ],
                ),
                Text(
                  '${eventListenerKeyword.atsignCreator}',
                  style: CustomTextStyles().black14,
                  maxLines: 1,
                  overflow: TextOverflow.ellipsis,
                ),
                SizedBox(
                  height: 3,
                ),
                Text(
                  dateToString(eventListenerKeyword.event!.date!),
                  style: CustomTextStyles().darkGrey14,
                  maxLines: 1,
                  overflow: TextOverflow.ellipsis,
                ),
                SizedBox(
                  height: 3,
                ),
                Text(
                  '${timeOfDayToString(eventListenerKeyword.event!.startTime!)} - ${timeOfDayToString(eventListenerKeyword.event!.endTime!)}',
                  style: CustomTextStyles().darkGrey14,
                  maxLines: 1,
                  overflow: TextOverflow.ellipsis,
                ),
                Divider(),
                DisplayTile(
                  title:
                      '${eventListenerKeyword.atsignCreator} and ${eventListenerKeyword.group!.members!.length} more',
                  atsignCreator: eventListenerKeyword.atsignCreator,
                  semiTitle: (eventListenerKeyword.group!.members!.length == 1)
                      ? '${eventListenerKeyword.group!.members!.length} person'
                      : '${eventListenerKeyword.group!.members!.length} people',
                  number: eventListenerKeyword.group!.members!.length,
                  subTitle:
                      'Share my location from ${timeOfDayToString(eventListenerKeyword.event!.startTime!)} on ${dateToString(eventListenerKeyword.event!.date!)}',
                ),
              ],
            ),
          ),
          // StreamBuilder(
          //     stream: LocationService().atHybridUsersStream,
          //     builder: (context, AsyncSnapshot<List<HybridModel>> snapshot) {
          //       if (snapshot.connectionState == ConnectionState.active) {
          //         if (snapshot.hasError) {
          //           return SeeParticipants(() => null);
          //         } else {
          //           var data = snapshot.data;

          //           ParticipantsData().putData(data);
          //           ParticipantsData()
          //               .putAtsign(LocationService().atsignsAtMonitor);

          //           return SeeParticipants(() => bottomSheet(
          //               context,
          //               Participants(
          //                 true,
          //                 data: data,
          //                 atsign: LocationService().atsignsAtMonitor,
          //               ),
          //               422));
          //         }
          //       } else {
          //         ParticipantsData().putData([]);
          //         ParticipantsData()
          //             .putAtsign(LocationService().atsignsAtMonitor);

          //         return SeeParticipants(() => bottomSheet(
          //             context,
          //             Participants(
          //               false,
          //               atsign: LocationService().atsignsAtMonitor,
          //             ),
          //             422));
          //       }
          //     }),
          ///
          // isSharingEvent = false;
          //           if (widget.isAdmin) {
          //             if (snapshot.data.isSharing) isSharingEvent = true;
          //           } else {
          //             if (snapshot.data != null) {
          //               snapshot.data.group.members.forEach((groupMember) {
          //                 if (groupMember.atSign ==
          //                     BackendService.getInstance()
          //                         .atClientServiceInstance
          //                         .atClient
          //                         .currentAtSign) {
          //                   if (groupMember.tags['isSharing'] == true) {
          //                     isSharingEvent = true;
          //                   }
          //                 }
          //               });
          //             }
          //           }
          // return

          /// Next
          // Column(
          //   crossAxisAlignment: CrossAxisAlignment.start,
          //   mainAxisSize: MainAxisSize.min,
          // children: [
          InkWell(
            onTap: () => bottomSheet(
                AtEventNotificationListener().navKey!.currentContext!,
                Participants(),
                422),
            child: Text(
              'See Participants',
              style: CustomTextStyles().orange14,
            ),
          ),
          Divider(),
          Flexible(
              child: RichText(
            text: TextSpan(
              text: 'Address: ',
              style: CustomTextStyles().darkGrey16,
              children: [
                TextSpan(
                  text: ' ${eventListenerKeyword.venue!.label}',
                  style: CustomTextStyles().darkGrey14,
                )
              ],
            ),
          )),
          Divider(),
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Text(
                'Share Location',
                style: CustomTextStyles().darkGrey16,
              ),
              Switch(
                  value: isSharingEvent!,
                  onChanged: (value) async {
                    LoadingDialog().show(
                        text: isAdmin!
                            ? 'Updating data'
                            : 'Sending request to update data');
                    try {
                      // if (isAdmin) {
                      //   LocationService().eventListenerKeyword.isSharing =
                      //       value;
                      // }

                      var result = await EventKeyStreamService().actionOnEvent(
                        eventListenerKeyword,
                        isAdmin
                            ? ATKEY_TYPE_ENUM.CREATEEVENT
                            : ATKEY_TYPE_ENUM.ACKNOWLEDGEEVENT,
                        isSharing: value,
                      );
                      if (result == true) {
                        if (!isAdmin) {
                          CustomToast().show(
                              'Request to update data is submitted',
                              AtEventNotificationListener()
                                  .navKey!
                                  .currentContext);
                        }
                      } else {
                        CustomToast().show(
                            'something went wrong , please try again.',
                            AtEventNotificationListener()
                                .navKey!
                                .currentContext);
                      }
                      LoadingDialog().hide();
                    } catch (e) {
                      print(e);
                      CustomToast().show(
                          'something went wrong , please try again.',
                          AtEventNotificationListener().navKey!.currentContext);
                      LoadingDialog().hide();
                    }
                  })
            ],
          ),
          Divider(),
          isAdmin
              ? SizedBox()
              : Expanded(
                  child: InkWell(
                    onTap: () async {
                      var isExited = true;
                      eventListenerKeyword.group!.members!
                          .forEach((groupMember) {
                        if (groupMember.atSign == currentAtSign) {
                          if (groupMember.tags!['isExited'] == false) {
                            isExited = false;
                          }
                        }
                      });
                      if (!isExited) {
                        //if member has not exited then only following code will run.
                        LoadingDialog().show();
                        try {
                          await EventKeyStreamService().actionOnEvent(
                            eventListenerKeyword,
                            isAdmin!
                                ? ATKEY_TYPE_ENUM.CREATEEVENT
                                : ATKEY_TYPE_ENUM.ACKNOWLEDGEEVENT,
                            isExited: true,
                          );
                          LoadingDialog().hide();
                          Navigator.of(AtEventNotificationListener()
                                  .navKey!
                                  .currentContext!)
                              .pop();
                          CustomToast().show(
                              'Request to update data is submitted',
                              AtEventNotificationListener()
                                  .navKey!
                                  .currentContext);
                        } catch (e) {
                          print(e);
                          CustomToast().show(
                              'something went wrong , please try again.',
                              AtEventNotificationListener()
                                  .navKey!
                                  .currentContext);
                          LoadingDialog().hide();
                        }
                      }
                    },
                    child: Text(
                      isExited! ? 'Exited' : 'Exit Event',
                      style: CustomTextStyles().orange16,
                    ),
                  ),
                ),
          isAdmin ? SizedBox() : Divider(),
          isAdmin
              ? Expanded(
                  child: InkWell(
                    onTap: () async {
                      if (!eventListenerKeyword.isCancelled!) {
                        LoadingDialog().show(
                            text: isAdmin!
                                ? 'Updating data'
                                : 'Sending request to update data');
                        try {
                          // await LocationService().onEventCancel();
                          await EventKeyStreamService().actionOnEvent(
                            eventListenerKeyword,
                            ATKEY_TYPE_ENUM.CREATEEVENT,
                            isCancelled: true,
                          );
                          LoadingDialog().hide();
                          Navigator.of(AtEventNotificationListener()
                                  .navKey!
                                  .currentContext!)
                              .pop();
                        } catch (e) {
                          print(e);
                          CustomToast().show(
                              'something went wrong , please try again.',
                              AtEventNotificationListener()
                                  .navKey!
                                  .currentContext);
                          LoadingDialog().hide();
                        }
                      }
                    },
                    child: Text(
                      eventListenerKeyword.isCancelled!
                          ? 'Event Cancelled'
                          : 'Cancel Event',
                      style: CustomTextStyles().orange16,
                    ),
                  ),
                )
              : SizedBox()
          //   ],
          // ),
        ]),
  );
}