displayReportDialog method

Future<void> displayReportDialog(
  1. BuildContext context
)

This void function will show the report dialog in which we can report our issues

Implementation

Future<void> displayReportDialog(BuildContext context) async {
  try {
    final state = context.read<FliraBloc>().state;
    final url = state.atlassianUrlPrefix;
    final apiToken = state.atlassianApiToken;
    final user = state.atlassianUser;
    final apiClient = await _getApiClient(
      (url ?? '').trim(),
      (user ?? '').trim(),
      (apiToken ?? '').trim(),
    );
    final jiraPlatformApi = await _getJiraPlatformApi(apiClient);

    /// Here we get the projects of the current atlassianUrl
    final projects = await jiraPlatformApi.projects.getAllProjects();
    if (projects.isEmpty) {
      Future.delayed(
          const Duration(milliseconds: 500), () => settingsDialog(context));
    } else {
      Future.delayed(
        const Duration(milliseconds: 500),
        () => showDialog(

          barrierDismissible: false,

          context: context,
          builder: (context) => Stack(
            children: [
              ReportBugDialog(
                  projects: projects, jiraPlatformApi: jiraPlatformApi),
              Material(
                color: Colors.transparent,
                child: IconButton(
                    onPressed: () {
                      settingsDialog(
                        context,
                        fromSettings: true,
                        message: 'Settings\n \nTo get a new token go to: \n',
                      );
                    },
                    icon: const Icon(
                      Icons.settings,
                      color: Colors.white,
                      size: 40,
                    )),
              )
            ],
          ),
        ).whenComplete(() async => Future.delayed(
              const Duration(microseconds: 100),
              () => context.read<FliraBloc>().add(
                    FliraButtonDraggedEvent(),
                  ),
            )),
      );
    }
  } on Exception {
    Future.delayed(
        const Duration(milliseconds: 500), () => settingsDialog(context));
  }
}