forked from eatvio/eatvio_app
feature(blogPosts): add image load, fix blog post view
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:eatvio_app/app_router.dart';
|
||||
import 'package:eatvio_app/locator_service.dart';
|
||||
@@ -14,6 +12,7 @@ import 'package:image_picker/image_picker.dart';
|
||||
import '/core/app_export.dart';
|
||||
|
||||
part 'blog_post_create_event.dart';
|
||||
|
||||
part 'blog_post_create_state.dart';
|
||||
|
||||
/// A bloc that manages the state of a BlogPostCreate according to the event that is dispatched to it.
|
||||
@@ -70,30 +69,30 @@ class BlogPostCreateBloc extends Bloc<BlogPostCreateEvent, BlogPostCreateState>
|
||||
currentState.image,
|
||||
);
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
if (response.statusCode == 200 || response.statusCode == 201) {
|
||||
AppRouter.navigatorKey.currentContext?.goNamed('feedScreen');
|
||||
} else {
|
||||
print(
|
||||
'Failed to create blog post. Status Code: ${response.statusCode} ${response.body}',
|
||||
'Failed to create blog post. Status Code: ${response.statusCode} ${response.data}',
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sendBlogPost(String? title, String? youtubeURL, String? description, XFile? image) async {
|
||||
String url = '/blog_post/create';
|
||||
Future<Response> sendBlogPost(String? title, String? youtubeURL, String? description, XFile? image) async {
|
||||
String url = baseUrl + '/api/blogPosts/create';
|
||||
|
||||
final Map<String, dynamic> credentials = {
|
||||
FormData formData = FormData.fromMap({
|
||||
'title': title,
|
||||
'description': description,
|
||||
'youtube_url': youtubeURL,
|
||||
'status': 'active',
|
||||
'image': image,
|
||||
};
|
||||
'videoUrl': youtubeURL,
|
||||
'state': 'active',
|
||||
'image': await MultipartFile.fromFile(image!.path, filename: image.name),
|
||||
});
|
||||
|
||||
var response = await sl<Dio>().post(
|
||||
final response = await sl<Dio>().post(
|
||||
url,
|
||||
data: json.encode(credentials),
|
||||
data: formData,
|
||||
);
|
||||
|
||||
return response;
|
||||
@@ -102,11 +101,7 @@ class BlogPostCreateBloc extends Bloc<BlogPostCreateEvent, BlogPostCreateState>
|
||||
FutureOr<void> _uploadImages(UploadImages event, Emitter<BlogPostCreateState> emit) {
|
||||
if (state is BlogPostCreateLoadedState) {
|
||||
var currentState = state as BlogPostCreateLoadedState;
|
||||
emit(
|
||||
currentState.copyWith(
|
||||
image: event.image,
|
||||
),
|
||||
);
|
||||
emit(currentState.copyWith(image: event.image));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ class BlogPostCreateState extends Equatable {
|
||||
|
||||
@override
|
||||
List<Object?> get props => [blog_postModelObj];
|
||||
|
||||
BlogPostCreateState copyWith({BlogPostCreateModel? blog_postModelObj}) {
|
||||
return BlogPostCreateState(
|
||||
blog_postModelObj: blog_postModelObj ?? this.blog_postModelObj,
|
||||
@@ -39,8 +40,18 @@ class BlogPostCreateLoadedState extends BlogPostCreateState {
|
||||
String? token;
|
||||
bool isLoading;
|
||||
XFile? image;
|
||||
|
||||
@override
|
||||
List<Object?> get props => [blog_postModelObj, title, description, youtubeURL];
|
||||
List<Object?> get props => [
|
||||
blog_postModelObj,
|
||||
title,
|
||||
description,
|
||||
youtubeURL,
|
||||
token,
|
||||
image,
|
||||
isLoading,
|
||||
];
|
||||
|
||||
BlogPostCreateLoadedState copyWith({
|
||||
BlogPostCreateModel? blog_postModelObj,
|
||||
TextEditingController? title,
|
||||
|
||||
@@ -33,7 +33,7 @@ class BlogPostEditBloc extends Bloc<BlogPostEditEvent, BlogPostEditState> {
|
||||
}
|
||||
final String? blog_postID = state.blog_postModelObj?.blog_postID;
|
||||
final response = await http.get(
|
||||
Uri.parse(baseUrl + '/api/feed/show/$blog_postID'),
|
||||
Uri.parse(baseUrl + '/api/blogPosts/show/$blog_postID'),
|
||||
headers: {
|
||||
'Authorization': 'Bearer $token',
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user