createComment method
Future<void>
createComment(
})
Implementation
Future<void> createComment(String postId, {String? parentCommentId}) async {
final token = Hive.box('user_data').get('user_token');
if (token == null) {
Get.snackbar('Error', 'Please login to comment');
return;
}
if (_contentController.text.isEmpty) {
Get.snackbar('Error', 'Comment cannot be empty');
return;
}
try {
isLoading.value = true;
final commentData = {
'post_id': postId,
'content': _contentController.text,
};
if (parentCommentId != null) {
commentData['parent_id'] = parentCommentId;
}
final response = await _apiService.post(
endpoint: CommunityConstants.comments,
body: commentData,
headers: {
'api-key': CommunityConstants.apiKey,
'Authorization': 'Bearer $token',
'Accept': 'application/json',
},
);
if (response.statusCode == 201) {
Get.snackbar('Success', 'Comment added successfully');
_contentController.clear();
await fetchComments(postId);
} else {
try {
final data = response.data is String
? jsonDecode(response.data)
: response.data;
Get.snackbar('Error', data['message'] ?? 'Failed to create comment');
} catch (_) {
Get.snackbar('Error', 'Failed to create comment');
}
}
} catch (e) {
Get.snackbar('Error', 'Failed to create comment: ${e.toString()}');
} finally {
isLoading.value = false;
}
}