Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ahmed fawzy web #71

Merged
merged 5 commits into from
Dec 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 80 additions & 73 deletions lib/createpost/controllers/posts_controllers.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart';
Expand All @@ -18,87 +19,85 @@ class PostController extends GetxController {
List<userSubredditsResponse> moderatedSubreddits =
<userSubredditsResponse>[].obs;
RxString subredditToSubmitPost = "".obs;
RxString iconOfSubredditToSubmittPost = "".obs;
RxString idOfSubredditToSubmittPost = "".obs;
RxBool showMore = false.obs;
RxString iconOfSubredditToSubmittPost="".obs;
RxString idOfSubredditToSubmittPost="".obs;
RxBool showMore=false.obs;
RxBool isPostSpoiler = false.obs;
RxBool isPostNSFW = false.obs;
RxBool isLoading = true.obs;
final services = PostServices();
Rx<TextEditingController> postTitle = TextEditingController().obs;
Rx<quill.QuillController> textPost = quill.QuillController.basic().obs;
Rx<quill.QuillController> textPost=quill.QuillController.basic().obs;
Rx<TextEditingController> urlPost = TextEditingController().obs;

RxString typeOfPost = ''.obs;
GlobalKey<FormState> formKey = GlobalKey<FormState>();
GlobalKey<FormState> formKeyUrl = GlobalKey<FormState>();
List<XFile>? imageFileList = <XFile>[].obs;
List<File>? imageFileList = <File>[].obs;

Future<void>? initializeVideoPlayerFuture;

// File? videoFile;
final videoFile = Rx<File?>(null);
final videoController = Rx<VideoPlayerController?>(null);
//Flairs belonging to subreddit
List<FlairModel> flairsOfSubreddit = <FlairModel>[].obs;
RxString idOfFlair = "".obs;
RxString textOfFlair = "".obs;
RxString textColorOfFlair = "None".obs;
RxString backgroundColorOfFlair = "None".obs;
RxBool isSubredditHasFlair = false.obs;
RxBool isFromHomeDirect = true.obs;
List<bool> checking = <bool>[].obs;
RxInt checkFromWhich = 0.obs;
List<FlairModel>flairsOfSubreddit=<FlairModel>[].obs;
RxString idOfFlair="".obs;
RxString textOfFlair="".obs;
RxString textColorOfFlair="None".obs;
RxString backgroundColorOfFlair="None".obs;
RxBool isSubredditHasFlair=false.obs;
RxBool isFromHomeDirect=true.obs;
List<bool>checking=<bool>[].obs;
RxInt checkFromWhich=0.obs;
dynamic argumentData = Get.arguments;
@override
void onInit() {
_fetchHouses();
void onInit()
{
getSubreddits();
super.onInit();
}

// @override
// onClose()
// {
//
// typeOfPost.value='';
// super.onClose();
// }
getFlairsOfSubreddit() async {
getFlairsOfSubreddit() async{
final prefs = await SharedPreferences.getInstance();
DioClient.init(prefs);
try {
try{
print('/subreddit/${subredditToSubmitPost}/flairs');
await DioClient.get(path: '/subreddits/${subredditToSubmitPost}/flair')
.then((value) {
await DioClient.get(path:'/subreddits/${subredditToSubmitPost}/flair').then((value){
print("Flairs returned are $value");
value.data['data'].forEach((val) {
value.data['data'].forEach((val)
{
flairsOfSubreddit.add(FlairModel.fromJson(val));
});
});
checking = List<bool>.filled(flairsOfSubreddit.length + 1, false);
print(
"the size of returned list of flairs of subreddit is ${flairsOfSubreddit.length}");
checking = List<bool>.filled(flairsOfSubreddit.length+1, false);
print("the size of returned list of flairs of subreddit is ${flairsOfSubreddit.length}");
print("the size of checking list is ${checking.length}");
} catch (e) {
print(
"error in fetching the flairs of ${subredditToSubmitPost} subreddit -> $e");
}
}
catch(e){
print("error in fetching the flairs of ${subredditToSubmitPost} subreddit -> $e");
}

}
getSubreddits() async {
final prefs = await SharedPreferences.getInstance();
DioClient.init(prefs);
try {
await DioClient.get(path: '$mySubreddits/subscriber').then((value) {
await DioClient.get(path:'$mySubreddits/subscriber').then((value) {
print("subs list $value");
value.data['data'].forEach((value1) {
subscribedSubreddits.add(userSubredditsResponse.fromJson(value1));
print("name of ${subscribedSubreddits[0].subredditName}");
});
});

await DioClient.get(path: '$mySubreddits/moderator').then((value) {
await DioClient.get(path:'$mySubreddits/moderator').then((value) {
print("moderator list $value");
value.data['data'].forEach((value1) {
moderatedSubreddits.add(userSubredditsResponse.fromJson(value1));
Expand All @@ -111,66 +110,73 @@ class PostController extends GetxController {
print("error in fething subreddits of user $error");
}
}

sendPost(BuildContext context) async {
Future<String> sendPost(BuildContext context, {required String title,required String text,required String kind ,required String url,required String owner,required String ownerType,required bool nsfw,required bool spoiler}) async {
final prefs = await SharedPreferences.getInstance();
DioClient.init(prefs);
var response;
var response ;
try {
response = await DioClient.post(path: "/posts", data: {
"title": "AHMED",
//postTitle.value.text ,
"kind": typeOfPost.value as String,
"text": "KKKK",
//(DeltaToHTML.encodeJson(textPost.value.document.toDelta().toJson())) as String,
//"url":urlPost.value.text as String ,
"owner": idOfSubredditToSubmittPost.value as String,
"ownerType":
(subredditToSubmitPost.value == "Myprofile") ? "User" : "Subreddit",
// "nsfw": isPostNSFW.value ,
// "spoiler": isPostSpoiler.value ,
response= await DioClient.post(path: "/posts", data:{
"title": title ,
"kind": kind,
"text":text,
"url":url,
"owner":owner,
"ownerType": ownerType,
"nsfw": nsfw ,
"spoiler": spoiler ,
"sendReplies": true,

// "flairId":idOfFlair.value as String ,
// "flairText":textOfFlair.value as String,

// "title": "post",
// "kind": "self",
// "text": "Test comment count",
// "owner": "63a193ffe3d2b7ad4a939978",
// "ownerType": "User",
// "nsfw": false,
// "spoiler": true,
// "sendReplies": true
"suggestedSort":"hot"
});
print("YA RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB");
if (response.statusCode == 200 || response.statusCode == 201) {
print("response of sending post ${response.data}");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
const SnackBar(
content: Text("sent successfuly",
style: TextStyle(color: Colors.white)),
backgroundColor: Colors.green),
);
print(response.statusCode);
print("the id of post created ${response.data["data"]["_id"]}");
//print(json.decode(response.data)['message']);
}
// return response.data["data"]["_id"];
return response.data["data"]["_id"];
} catch (e) {
print("error in sending the post -> $e");
// return 0;
return "";
}
}

Future<void> _fetchHouses() async {
Future<String> sendPostWithFlair(BuildContext context, {required String title,required String text,required String kind ,required String url,required String owner,required String ownerType,required bool nsfw,required bool spoiler,required String textFlair,required String idFlair}) async {
final prefs = await SharedPreferences.getInstance();
DioClient.init(prefs);
var response ;
try {
///here fitch Your Posts
} finally {
isLoading(false);
response = await DioClient.post(path: "/posts", data: {
"title": title,
"kind": kind,
"text": text,
"url": url,
"owner": owner,
"ownerType": ownerType,
"nsfw": nsfw,
"spoiler": spoiler,
"sendReplies": true,
"flairId": idOfFlair,
"flairText": textOfFlair,
"suggestedSort":"hot"
});
if (response.statusCode == 200 || response.statusCode == 201) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text("sent successfuly",
style: TextStyle(color: Colors.white)),
backgroundColor: Colors.green),
);
}
return response.data["data"]["_id"];
}
catch (e) {
print("error in sending the post -> $e");
return "";
}
}


Future<void> createPost() async {
try {
isLoading.value = true;
Expand All @@ -183,10 +189,9 @@ class PostController extends GetxController {
isLoading(false);
}
}

Future getVideo() async {
Future<XFile?> videoFiles =
ImagePicker().pickVideo(source: ImageSource.gallery);
ImagePicker().pickVideo(source: ImageSource.gallery);
videoFiles.then((file) async {
videoFile.value = File(file!.path);
videoController.value = VideoPlayerController.file(videoFile.value!);
Expand Down Expand Up @@ -219,4 +224,6 @@ class PostController extends GetxController {
typeOfPost.close();
super.dispose();
}


}
Loading