displayReportDialog method
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));
}
}