@@ -24,6 +24,8 @@ var fr_posts : FirestoreCollection = Firebase.Firestore.collection("posts")
24
24
25
25
var friend_posts : Array = []
26
26
27
+ var posts_db_reference : FirebaseDatabaseReference
28
+
27
29
func _connect_signals ():
28
30
$ ShareSomethingContainer .connect ("share_post" , self , "add_shared_post" )
29
31
users_list_section .connect ("show_user_profile" , self , "_on_show_user_profile" )
@@ -40,7 +42,6 @@ func _ready():
40
42
load_user ()
41
43
animate_Home (true )
42
44
load_posts ()
43
- # suggested_users.suggest_user("fenix-hub")
44
45
friend_list .load_friend_list ()
45
46
46
47
func load_user ():
@@ -58,7 +59,7 @@ func animate_Home(display : bool):
58
59
$ Tween .start ()
59
60
60
61
func sort_posts (post_a : FirestoreDocument , post_b : FirestoreDocument ):
61
- if post_a .doc_fields .timestamp < post_b .doc_fields .timestamp :
62
+ if post_a .doc_fields .timestamp > post_b .doc_fields .timestamp :
62
63
return true
63
64
return false
64
65
@@ -69,29 +70,52 @@ func load_posts():
69
70
for post in posts :
70
71
if post .has ("fields" ):
71
72
if (post .fields .user_id .stringValue in UserData .friend_list ) \
72
- or (post .fields .user_id .stringValue == UserData .user_id ):
73
+ or (post .fields .user_id .stringValue == UserData .user_id ) \
74
+ and not post in friend_posts :
73
75
friend_posts .append (FirestoreDocument .new (post ))
74
76
75
77
friend_posts .sort_custom (self , "sort_posts" )
76
78
77
79
if friend_posts .empty ():
78
80
pass
79
81
else :
80
- for post in friend_posts .slice (0 , 10 ):
81
- if PostsManager .has_post (post .doc_name ):
82
- if PostsManager .has_post_container (post .doc_name ):
83
- var post_container : PostContainer = PostsManager .get_post_container_by_id (post .doc_name )
82
+ for post_idx in range (0 , friend_posts .size ()):# .slice(0, 10):
83
+ var post_container : PostContainer
84
+ if PostsManager .has_post (friend_posts [post_idx ].doc_name ):
85
+ if PostsManager .has_post_container (friend_posts [post_idx ].doc_name ):
86
+ post_container = PostsManager .get_post_container_by_id (friend_posts [post_idx ].doc_name )
87
+ add_post (post_container )
88
+ else :
89
+ post_container = Activities .post_container_scene .instance ()
84
90
add_post (post_container )
91
+ post_container .load_post (PostsManager .get_post_by_id (friend_posts [post_idx ].doc_name ))
85
92
else :
86
- var post_container : PostContainer = Activities .post_container_scene .instance ()
87
- var post_obj : PostsManager .Post = PostsManager .add_post_from_doc (post .doc_name , post )
88
- post_container .load_post (post_obj )
93
+ post_container = Activities .post_container_scene .instance ()
94
+ var post_obj : PostsManager .Post = PostsManager .add_post_from_doc (friend_posts [post_idx ].doc_name , friend_posts [post_idx ])
89
95
add_post (post_container )
96
+ post_container .load_post (post_obj )
97
+ post_box .move_child (post_container , post_idx )
90
98
else :
91
99
for post in post_box .get_children ():
92
100
if post is PostContainer : post .queue_free ()
93
101
posts_section .get_node ("NoFriends" ).show ()
102
+
103
+ if posts_db_reference == null :
104
+ posts_db_reference = Firebase .Database .get_database_reference ("sociadot/posts" )
105
+ posts_db_reference .connect ("new_data_update" , self , "_on_new_post" )
106
+
107
+
94
108
109
+ func _on_new_post (post : FirebaseResource ):
110
+ if post .data .user == UserData .user_id :
111
+ return
112
+ if PostsManager .has_post (post .key ):
113
+ return
114
+ var post_container : PostContainer = Activities .post_container_scene .instance ()
115
+ var post_doc : FirestoreDocument = yield (Utilities .get_post_doc (post .key ), "get_document" )
116
+ var post_obj : PostsManager .Post = PostsManager .add_post_from_doc (post .key , post_doc )
117
+ add_post (post_container )
118
+ post_container .load_post (post_obj )
95
119
96
120
func add_post (post : PostContainer ):
97
121
posts_section .get_node ("NoFriends" ).hide ()
0 commit comments