forked from eatvio/eatvio_app
feat(feed): Fetching author and comments for blog posts
This commit is contained in:
@@ -49,8 +49,11 @@ class BlogPostBloc extends Bloc<BlogPostEvent, BlogPostState> {
|
||||
comments: currentState.comments));
|
||||
} else {
|
||||
emit(BlogPostLoadedState(blog_post: data));
|
||||
Future<Map<String, dynamic>> author = _fetchAuthor(data['id']);
|
||||
final author = await _fetchAuthor(data['id']);
|
||||
emit(BlogPostLoadedState(blog_post: data, author: author));
|
||||
final comments = [await _fetchComments(data['id'])];
|
||||
emit(BlogPostLoadedState(
|
||||
blog_post: data, author: author, comments: comments));
|
||||
}
|
||||
} else {
|
||||
// Один или несколько ключевых полей отсутствуют, обрабатываем ошибку
|
||||
@@ -90,7 +93,7 @@ class BlogPostBloc extends Bloc<BlogPostEvent, BlogPostState> {
|
||||
}
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> _fetchAuthor(int id) async {
|
||||
_fetchAuthor(int id) async {
|
||||
final box = await Hive.openBox('token');
|
||||
final token = box.get('token');
|
||||
|
||||
@@ -100,18 +103,19 @@ class BlogPostBloc extends Bloc<BlogPostEvent, BlogPostState> {
|
||||
);
|
||||
}
|
||||
|
||||
final response = await http.post(
|
||||
final response = await http.get(
|
||||
Uri.parse(dotenv.env['SERVER_ROOT']! + '/feed/getAuthor/$id'),
|
||||
headers: {
|
||||
'Authorization': 'Bearer $token',
|
||||
},
|
||||
);
|
||||
|
||||
print(response.body);
|
||||
final data = jsonDecode(response.body);
|
||||
print(data);
|
||||
return data;
|
||||
}
|
||||
|
||||
FutureOr<void> _fetchComments(int id) async {
|
||||
_fetchComments(int id) async {
|
||||
final box = await Hive.openBox('token');
|
||||
final token = box.get('token');
|
||||
if (token == null) {
|
||||
@@ -119,27 +123,15 @@ class BlogPostBloc extends Bloc<BlogPostEvent, BlogPostState> {
|
||||
AppRoutes.authScreen,
|
||||
);
|
||||
}
|
||||
final response = await http.post(
|
||||
final response = await http.get(
|
||||
Uri.parse(dotenv.env['SERVER_ROOT']! + '/feed/getComments/$id'),
|
||||
headers: {
|
||||
'Authorization': 'Bearer $token',
|
||||
},
|
||||
);
|
||||
if (response.statusCode == 200) {
|
||||
final data = jsonDecode(response.body);
|
||||
if (data is List<Map<String, dynamic>>) {
|
||||
print(data);
|
||||
var currentState = state as BlogPostLoadedState;
|
||||
emit(currentState.copyWith(
|
||||
blog_postModelObj: currentState.blog_postModelObj,
|
||||
blog_post: currentState.blog_post,
|
||||
author: currentState.author,
|
||||
comments: currentState.comments));
|
||||
} else {
|
||||
emit(BlogPostErrorState('Неверный формат комментариев'));
|
||||
}
|
||||
} else {
|
||||
emit(BlogPostErrorState('Ошибка сервера: ${response.statusCode}'));
|
||||
}
|
||||
print(response.body);
|
||||
final data = jsonDecode(response.body);
|
||||
print(data);
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,14 +28,14 @@ class BlogPostLoadedState extends BlogPostState {
|
||||
BlogPostModel? blog_postModelObj;
|
||||
Map<String, dynamic>? blog_post;
|
||||
Map<String, dynamic>? author;
|
||||
List<Map<String, dynamic>?>? comments;
|
||||
List<dynamic>? comments;
|
||||
@override
|
||||
List<Object?> get props => [blog_postModelObj, blog_post, author, comments];
|
||||
BlogPostLoadedState copyWith(
|
||||
{BlogPostModel? blog_postModelObj,
|
||||
Map<String, dynamic>? blog_post,
|
||||
Map<String, dynamic>? author,
|
||||
List<Map<String, dynamic>?>? comments}) {
|
||||
List<dynamic>? comments}) {
|
||||
return BlogPostLoadedState(
|
||||
blog_postModelObj: blog_postModelObj ?? this.blog_postModelObj,
|
||||
blog_post: blog_post ?? this.blog_post,
|
||||
|
||||
Reference in New Issue
Block a user