Add post done

posts_EKA-DDA
root 2 years ago
parent 20981223a2
commit e8b896365d

@ -12,6 +12,7 @@ import 'package:justmusic/screens/profile_screen.dart';
import 'package:justmusic/screens/registration_screen.dart'; import 'package:justmusic/screens/registration_screen.dart';
import 'package:justmusic/screens/welcome_screen.dart'; import 'package:justmusic/screens/welcome_screen.dart';
import 'package:justmusic/view_model/MusicViewModel.dart'; import 'package:justmusic/view_model/MusicViewModel.dart';
import 'package:justmusic/view_model/PostViewModel.dart';
import 'package:justmusic/view_model/UserViewModel.dart'; import 'package:justmusic/view_model/UserViewModel.dart';
import 'firebase_options.dart'; import 'firebase_options.dart';
@ -28,6 +29,7 @@ class MyApp extends StatelessWidget {
static FirebaseFirestore db = FirebaseFirestore.instance; static FirebaseFirestore db = FirebaseFirestore.instance;
static UserViewModel userViewModel = UserViewModel(); static UserViewModel userViewModel = UserViewModel();
static MusicViewModel musicViewModel = MusicViewModel(); static MusicViewModel musicViewModel = MusicViewModel();
static PostViewModel postViewModel = PostViewModel();
static AudioPlayer audioPlayer = AudioPlayer(); static AudioPlayer audioPlayer = AudioPlayer();
const MyApp({super.key}); const MyApp({super.key});

@ -6,7 +6,7 @@ class UserMapper {
SnapshotOptions? options) { SnapshotOptions? options) {
final data = snapshot.data(); final data = snapshot.data();
return User( return User(
data?["uid"] ?? "", snapshot.id,
data?["unique_id"] ?? "", data?["unique_id"] ?? "",
data?["country"] ?? "", data?["country"] ?? "",
data?["mail"] ?? "", data?["mail"] ?? "",

@ -7,7 +7,9 @@ import 'package:justmusic/screens/search_song_screen.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
import '../components/editable_post_component.dart'; import '../components/editable_post_component.dart';
import '../components/post_button_component.dart'; import '../components/post_button_component.dart';
import '../main.dart';
import '../model/Music.dart'; import '../model/Music.dart';
import '../model/Post.dart';
import '../values/constants.dart'; import '../values/constants.dart';
class PostScreen extends StatefulWidget { class PostScreen extends StatefulWidget {
@ -91,10 +93,9 @@ class _PostScreenState extends State<PostScreen>
); );
} }
displayinfo() { handleSubmit() async {
print("cc"); await MyApp.postViewModel.addPost(
print( description, (selectedMusic?.id)!, selectedImage, selectedCity);
"${selectedCity},${selectedMusic?.title},${selectedImage?.path},${description}");
} }
@override @override
@ -150,7 +151,7 @@ class _PostScreenState extends State<PostScreen>
), ),
PostButtonComponent( PostButtonComponent(
empty: selectedMusic == null, empty: selectedMusic == null,
callback: displayinfo, callback: handleSubmit,
), ),
SizedBox( SizedBox(
height: 40.h, height: 40.h,

@ -1,14 +1,32 @@
import 'dart:io';
import 'package:tuple/tuple.dart';
import 'package:firebase_storage/firebase_storage.dart';
import '../main.dart'; import '../main.dart';
import '../model/Post.dart';
import '../model/mapper/PostMapper.dart';
class PostService { class PostService {
createPost(Post post) { createPost(String? description, String idMusic, File? image,
MyApp.db Tuple2<String, String>? location) async {
.collection("posts") var id = MyApp.userViewModel.userCurrent.id;
.add(PostMapper.toFirebase(post))
.then((value) => print("Post Added")) final post = <String, dynamic>{
.catchError((error) => print("Failed to add post: $error")); "user_id": id,
"description": description,
"date": DateTime.now(),
"place": [location?.item1, location?.item2],
"selfie": null,
"song_id": idMusic,
"likes": 0
};
var postAdd = await MyApp.db.collection("posts").add(post);
if (image != null) {
var imageUrl = FirebaseStorage.instance.ref(id + postAdd.id);
await imageUrl.putFile(image);
postAdd.update({"selfie": imageUrl});
}
} }
deletePost() {} deletePost() {}

@ -1,5 +1,8 @@
import 'dart:io';
import 'package:justmusic/model/Post.dart'; import 'package:justmusic/model/Post.dart';
import 'package:justmusic/services/PostService.dart'; import 'package:justmusic/services/PostService.dart';
import 'package:tuple/tuple.dart';
class PostViewModel { class PostViewModel {
List<Post> _postsFriends = []; List<Post> _postsFriends = [];
@ -15,8 +18,9 @@ class PostViewModel {
List<Post> get bestPosts => _bestPosts; List<Post> get bestPosts => _bestPosts;
// Methods // Methods
addPost(Post post) async { addPost(String? description, String idMusic, File? image,
await _postService.createPost(post); Tuple2<String, String>? location) async {
await _postService.createPost(description, idMusic, image, location);
} }
List<Post> getPostsFriends() { List<Post> getPostsFriends() {

@ -289,6 +289,30 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.6.0" version: "2.6.0"
firebase_storage:
dependency: "direct main"
description:
name: firebase_storage
sha256: "4b747005aee0c611242cdd553f58795f51e1567d2dfd4f75692fac3f67c8c336"
url: "https://pub.dev"
source: hosted
version: "11.2.5"
firebase_storage_platform_interface:
dependency: transitive
description:
name: firebase_storage_platform_interface
sha256: c77c7b6b7d283280993c81ea8ac95552b2ae521a7bb46a95181c1482e62d1633
url: "https://pub.dev"
source: hosted
version: "4.4.4"
firebase_storage_web:
dependency: transitive
description:
name: firebase_storage_web
sha256: "6906245579f1af225e43df0395c9d9631cb3135cbfa3521a839196d3383bb89a"
url: "https://pub.dev"
source: hosted
version: "3.6.5"
flutter: flutter:
dependency: "direct main" dependency: "direct main"
description: flutter description: flutter

@ -63,6 +63,7 @@ dependencies:
animated_appear: ^0.0.4 animated_appear: ^0.0.4
geolocator: ^9.0.2 geolocator: ^9.0.2
tuple: ^2.0.2 tuple: ^2.0.2
firebase_storage: ^11.2.5
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

Loading…
Cancel
Save