forked from eatvio/eatvio_app
Merge remote-tracking branch 'refs/remotes/origin/feature_blogPosts'
# Conflicts: # lib/app_router.dart # lib/features/blog_post_create/presentation/pages/blog_post_create_screen.dart # pubspec.yaml
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,28 @@ 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}',
|
||||
);
|
||||
print('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,
|
||||
};
|
||||
'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 +99,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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,9 @@ class CreateBlogPost extends BlogPostCreateEvent {
|
||||
|
||||
class UploadImages extends BlogPostCreateEvent {
|
||||
UploadImages(this.image);
|
||||
|
||||
final XFile image;
|
||||
|
||||
@override
|
||||
List<Object> get props => [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',
|
||||
},
|
||||
|
||||
@@ -139,7 +139,7 @@ class SubscribersScreen extends StatelessWidget {
|
||||
flex: 1,
|
||||
child: CustomOutlinedButton(
|
||||
text: "+",
|
||||
onPressed: () => GoRouter.of(context).goNamed('blogPostCreateScreen'),
|
||||
onPressed: () => GoRouter.of(context).pushNamed('blogPostCreateScreen'),
|
||||
buttonStyle: CustomButtonStyles.outlinePrimaryTL15,
|
||||
),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user