createIssue static method
Future<FeedbackData>
createIssue({
- required GitHubConfig gitHubConfig,
- required FeedbackContent feedbackContent,
Implementation
static Future<FeedbackData> createIssue({
required GitHubConfig gitHubConfig,
required FeedbackContent feedbackContent,
}) async {
Map<String, String> headers = {
"Authorization": "Bearer ${gitHubConfig.accessToken}",
"Content-Type": "application/vnd.github+json",
};
var userEmailText = (feedbackContent.userEmail.isNotEmpty == true)
? '\n\n Originally created by ${feedbackContent.userEmail}'
: '';
var url =
'$kGitHubUrl/${gitHubConfig.gitHubUserName}/${gitHubConfig.repositoryName}/issues';
try {
var bodyData = {
"title": feedbackContent.title,
"body": feedbackContent.description + userEmailText,
"labels": ["bug"]
};
/// return 201 usually
var response = await post(Uri.parse(url),
headers: headers, body: json.encode(bodyData));
if ([200, 201, 202].contains(response.statusCode)) {
return FeedbackData(
status: response.statusCode,
message: "Feedback successfully sent",
);
} else {
var res = json.decode(response.body);
if (res['errors'] != null) {
if (kDebugMode) print(res['errors']);
return FeedbackData(
status: response.statusCode,
error: res['errors'][0]['message'],
);
} else {
return FeedbackData(
status: response.statusCode,
message: response.body,
error: response.body);
}
}
} catch (e) {
return FeedbackData(
status: 500,
error: e.toString(),
message: "Something went wrong, please try again later",
);
}
}