diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2023-07-18 15:47:45 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2023-07-18 15:47:45 +0200 |
commit | fef9ebe0b20623c4e21cf720ea379338e6ef978e (patch) | |
tree | 549094779c7f73e62b2179ac443efb8ac10cf3e5 | |
parent | c81d471728888794c012a74fbb2c85b235dcfc09 (diff) |
followee list: show if accounts are following back1.33.3
-rw-r--r-- | lib/Travelynx/Command/database.pm | 23 | ||||
-rw-r--r-- | lib/Travelynx/Model/Users.pm | 22 | ||||
-rw-r--r-- | templates/social_list.html.ep | 10 |
3 files changed, 52 insertions, 3 deletions
diff --git a/lib/Travelynx/Command/database.pm b/lib/Travelynx/Command/database.pm index 022614b..a47f2ce 100644 --- a/lib/Travelynx/Command/database.pm +++ b/lib/Travelynx/Command/database.pm @@ -1780,6 +1780,29 @@ my @migrations = ( } ); }, + + # v43 -> v44 + # show inverse relation in followees as well + sub { + my ($db) = @_; + $db->query( + qq{ + drop view followees; + create view followees as select + relations.subject_id as self_id, + users.id as id, + users.name as name, + r2.predicate as inverse_predicate + from relations + join users on relations.object_id = users.id + left join relations as r2 + on relations.subject_id = r2.object_id + and relations.object_id = r2.subject_id + where relations.predicate = 1; + update schema_version set version = 44; + } + ); + }, ); # TODO add 'hafas' column to in_transit (and maybe journeys? undo/redo needs something to work with...) diff --git a/lib/Travelynx/Model/Users.pm b/lib/Travelynx/Model/Users.pm index 0665f6a..c51e612 100644 --- a/lib/Travelynx/Model/Users.pm +++ b/lib/Travelynx/Model/Users.pm @@ -1123,9 +1123,27 @@ sub get_followees { my $db = $opt{db} // $self->{pg}->db; my $uid = $opt{uid}; - my $res = $db->select( 'followees', [ 'id', 'name' ], { self_id => $uid } ); + my $res = $db->select( + 'followees', + [ 'id', 'name', 'inverse_predicate' ], + { self_id => $uid } + ); - return $res->hashes->each; + my @ret; + while ( my $row = $res->hash ) { + push( + @ret, + { + id => $row->{id}, + name => $row->{name}, + following_back => ( + $row->{inverse_predicate} + and $row->{inverse_predicate} == $predicate_atoi{follows} + ) ? 1 : 0, + } + ); + } + return @ret; } sub has_followees { diff --git a/templates/social_list.html.ep b/templates/social_list.html.ep index 1a3e441..ef47636 100644 --- a/templates/social_list.html.ep +++ b/templates/social_list.html.ep @@ -130,7 +130,10 @@ </div> </div> <div class="row center-align"> - <div class="col s12"> + <div class="col s6"> + <i class="material-icons">group</i><br/> Folgt dir + </div> + <div class="col s6"> <i class="material-icons">remove</i><br/> Nicht mehr folgen </div> </div> @@ -231,6 +234,11 @@ % } % elsif ($type eq 'follows') { <td class="right-align"> + % if ($entry->{following_back}) { + <i class="material-icons" aria-label="ihr folgt euch gegenseitig">group</i> + % } + </td> + <td class="right-align"> <button class="btn-flat waves-effect waves-light" type="submit" name="unfollow" value="<%= $entry->{id} %>"> <i class="material-icons" aria-label="entfolgen">remove</i> </button> |