Starting get capsules 🔨

GET_CAPSULES_LDE-EKA
Emre KARTAL 2 years ago
parent 271cefff0c
commit 44b6477101

@ -7,9 +7,12 @@ import 'package:gradient_borders/box_borders/gradient_box_border.dart';
import 'package:text_scroll/text_scroll.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
import '../model/Post.dart';
class PostComponent extends StatefulWidget {
final VoidCallback? callback;
PostComponent({Key? key, required this.callback}) : super(key: key);
final Post post;
PostComponent({Key? key, required this.callback, required this.post}) : super(key: key);
@override
State<PostComponent> createState() => _PostComponentState();

@ -7,6 +7,7 @@ import 'package:ionicons/ionicons.dart';
import 'package:zoom_tap_animation/zoom_tap_animation.dart';
import '../config/routes.dart';
import '../main.dart';
import '../values/constants.dart';
class TopNavBarComponent extends StatefulWidget {
@ -23,6 +24,7 @@ class _TopNavBarComponentState extends State<TopNavBarComponent> with TickerProv
void actionSurBouton() {
widget.callback(choice);
MyApp.postViewModel.getBestPosts();
}
@override

@ -1,9 +1,11 @@
import 'package:tuple/tuple.dart';
class Post {
final int _id;
final int _idUser;
final String _id;
final String _idUser;
String? _description;
String _idMusic;
String _location;
Tuple2<String,String> _location;
int _nblikes;
String? _selfie;
DateTime _date;
@ -13,9 +15,9 @@ class Post {
this._nblikes, this._selfie, this._date);
//Getters and setters
int get id => _id;
String get id => _id;
int get idUser => _idUser;
String get idUser => _idUser;
String? get description => _description;
@ -29,9 +31,9 @@ class Post {
_idMusic = value;
}
String get location => _location;
Tuple2<String, String> get location => _location;
set location(String value) {
set location(Tuple2<String, String> value) {
_location = value;
}

@ -1,15 +1,19 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:tuple/tuple.dart';
import '../Post.dart';
class PostMapper {
static Map<String, dynamic> toFirebase(Post post) {
return {
"user_id": post.idUser,
"description": post.description ?? "",
"date": post.date,
"place": post.location ?? "",
"selfie": post.selfie ?? "",
"song_id": post.idMusic,
"likes": post.nblikes
};
static Post toModel(DocumentSnapshot<Map<String, dynamic>> snapshot) {
final data = snapshot.data();
return Post(
snapshot.id,
data?["user_id"],
data?["description"],
data?["song_id"],
Tuple2(data?["place"][0], data?["place"][1]),
data?["likes"],
data?["selfie"],
data?["date"].toDate());
}
}

@ -8,6 +8,8 @@ import 'package:google_fonts/google_fonts.dart';
import '../components/comment_component.dart';
import '../components/post_component.dart';
import '../components/top_nav_bar_component.dart';
import '../main.dart';
import '../model/Post.dart';
import '../values/constants.dart';
class FeedScreen extends StatefulWidget {
@ -20,27 +22,15 @@ class FeedScreen extends StatefulWidget {
class _FeedScreenState extends State<FeedScreen> with TickerProviderStateMixin {
late AnimationController animationController;
late Animation<double> animation;
late List<PostComponent> friendFeed;
late List<PostComponent> discoveryFeed;
late List<PostComponent> displayFeed;
late List<Post> friendFeed;
late List<Post> discoveryFeed;
late List<Post> displayFeed;
@override
void initState() {
super.initState();
friendFeed = [
PostComponent(
callback: openDetailPost,
),
PostComponent(
callback: openDetailPost,
),
PostComponent(
callback: openDetailPost,
),
];
discoveryFeed = [
PostComponent(callback: openDetailPost),
];
friendFeed = [];
discoveryFeed = MyApp.postViewModel.bestPosts;
displayFeed = friendFeed;
animationController = AnimationController(
vsync: this,
@ -161,7 +151,10 @@ class _FeedScreenState extends State<FeedScreen> with TickerProviderStateMixin {
),
Padding(
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom),
bottom: MediaQuery
.of(context)
.viewInsets
.bottom),
child: Container(
height: 70,
width: double.infinity,
@ -263,9 +256,12 @@ class _FeedScreenState extends State<FeedScreen> with TickerProviderStateMixin {
child: Padding(
padding: EdgeInsets.only(top: 100.h),
child: SingleChildScrollView(
child: Wrap(
runSpacing: 60,
children: displayFeed,
child: ListView.builder(
itemBuilder: (BuildContext context,
int index) {
return PostComponent(callback: openDetailPost,);
},
),
)),
),

@ -19,7 +19,8 @@ class AuthService {
"unique_id": uniqueId,
"picture":
"https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/defaultImage.png?alt=media&token=cff5ae0a-e29e-4845-91f7-817597962f6b",
"friends": []
"friends": [],
"comments": []
};
MyApp.db

@ -1,5 +1,7 @@
import 'dart:convert';
import 'dart:io';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:tuple/tuple.dart';
import 'package:firebase_storage/firebase_storage.dart';
@ -30,4 +32,14 @@ class PostService {
deletePost() {}
getPostsById(String id) {}
Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getPopularPosts(
{int limit = 10, int offset = 0}) async {
QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore.instance
.collection("posts")
.limit(limit)
.orderBy("likes").get();
return response.docs;
}
}

@ -4,6 +4,8 @@ import 'package:justmusic/model/Post.dart';
import 'package:justmusic/services/PostService.dart';
import 'package:tuple/tuple.dart';
import '../model/mapper/PostMapper.dart';
class PostViewModel {
List<Post> _postsFriends = [];
List<Post> _bestPosts = [];
@ -31,8 +33,15 @@ class PostViewModel {
throw new Error();
}
List<Post> getBestPosts() {
throw new Error();
getBestPosts() async {
try {
var responseData = await _postService.getPopularPosts();
_bestPosts =
responseData.map((value) => PostMapper.toModel(value)).toList();
} catch (e) {
print(e);
}
}
List<Post> getMoreBestPosts() {

Loading…
Cancel
Save