createComment method

Future<void> createComment(
  1. String postId, {
  2. String? parentCommentId,
})

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;
  }
}