소스 검색

Fix #75: user profile page now a pseudo-shittr feed

George S. Baugh 5 년 전
부모
커밋
82e7583224
2개의 변경된 파일13개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 0
      lib/Trog/Data/DUMMY.pm
  2. 12 1
      lib/Trog/Routes/HTML.pm

+ 1 - 0
lib/Trog/Data/DUMMY.pm

@@ -122,6 +122,7 @@ sub get ($self, %request) {
     @filtered = grep { my $tags = $_->{tags}; grep { my $t = $_; grep {$t eq $_ } @{$request{tags}} } @$tags } @filtered if @{$request{tags}};
     @filtered = grep { my $tags = $_->{tags}; grep { my $t = $_; grep {$t eq $_ } @{$request{acls}} } @$tags } @filtered unless grep { $_ eq 'admin' } @{$request{acls}};    
     @filtered = grep { $_->{data} =~ m/\Q$request{like}\E/i } @filtered if $request{like};
+    @filtered = grep { $_->{user} eq $request{author} } @filtered if $request{author};
 
     # Finally, paginate
     my $offset = int($request{limit} // 25);

+ 12 - 1
lib/Trog/Routes/HTML.pm

@@ -554,9 +554,19 @@ sub posts ($query, $render_cb) {
     my $tags = _coerce_array($query->{tag});
 
     #TODO If we have a direct ID query, we should show unlisted videos as well as public ones IFF they have a valid campaign ID attached to query
-    push(@{$query->{acls}}, 'public');
+    push(@{$query->{acls}}, 'public', 'unlisted');
     my ($pages,$posts) = _post_helper($query, $tags, $query->{acls});
 
+    #OK, so if we have a user as the ID we found, go grab the rest of their posts
+    if ($query->{id} && @$posts && grep { $_ eq 'about'} @{$posts->[0]->{tags}} ) {
+        my $user = shift(@$posts);
+        my $id = delete $query->{id};
+        $query->{author} = $query->{user};
+        ($pages, $posts) = _post_helper($query, [], $query->{acls});
+        @$posts = grep { $_->{id} ne $id } @$posts;
+        unshift @$posts, $user;
+    }
+
     return notfound($query, $render_cb) unless @$posts;
 
     my $fmt = $query->{format} || '';
@@ -607,6 +617,7 @@ sub _post_helper ($query, $tags, $acls) {
         tags    => $tags,
         acls    => $acls,
         like    => $query->{like},
+        author  => $query->{author},
         id      => $query->{id},
         version => $query->{version},
     );