Merge pull request #9324 from annando/endless-contact
authorTobias Diekershoff <tobias.diekershoff@gmx.net>
Wed, 30 Sep 2020 05:19:16 +0000 (07:19 +0200)
committerGitHub <noreply@github.com>
Wed, 30 Sep 2020 05:19:16 +0000 (07:19 +0200)
Endless scrolling on contact page

1  2 
src/Model/Contact.php

diff --combined src/Model/Contact.php
@@@ -23,9 -23,11 +23,11 @@@ namespace Friendica\Model
  
  use Friendica\App\BaseURL;
  use Friendica\Content\Pager;
+ use Friendica\Content\Text\HTML;
  use Friendica\Core\Hook;
  use Friendica\Core\Logger;
  use Friendica\Core\Protocol;
+ use Friendica\Core\Renderer;
  use Friendica\Core\Session;
  use Friendica\Core\System;
  use Friendica\Core\Worker;
@@@ -126,7 -128,6 +128,7 @@@ class Contac
         * Relationship types
         * @{
         */
 +      const NOTHING  = 0;
        const FOLLOWER = 1;
        const SHARING  = 2;
        const FRIEND   = 3;
                if ($thread_mode) {
                        $condition = ["(`$contact_field` = ? OR (`causer-id` = ? AND `post-type` = ?)) AND `gravity` = ? AND " . $sql,
                                $cid, $cid, Item::PT_ANNOUNCEMENT, GRAVITY_PARENT, local_user()];
+                       $last_received = isset($_GET['last_received']) ? DateTimeFormat::utc($_GET['last_received']) : '';
+                       if (!empty($last_received)) {
+                               $condition = DBA::mergeConditions($condition, ["`received` < ?", $last_received]);
+                       }
                } else {
                        $condition = ["`$contact_field` = ? AND `gravity` IN (?, ?) AND " . $sql,
                                $cid, GRAVITY_PARENT, GRAVITY_COMMENT, local_user()];
                        'limit' => [$pager->getStart(), $pager->getItemsPerPage()]];
  
                if ($thread_mode) {
+                       if (DI::pConfig()->get(local_user(), 'system', 'infinite_scroll')) {
+                               $tpl = Renderer::getMarkupTemplate('infinite_scroll_head.tpl');
+                               $o = Renderer::replaceMacros($tpl, ['$reload_uri' => DI::args()->getQueryString()]);
+                       } else {
+                               $o = '';
+                       }
+               
                        $r = Item::selectForUser(local_user(), ['uri', 'gravity', 'parent-uri'], $condition, $params);
                        $items = [];
                        while ($item = DBA::fetch($r)) {
                        }
                        DBA::close($r);
  
-                       $o = conversation($a, $items, 'contacts', $update, false, 'commented', local_user());
+                       $o .= conversation($a, $items, 'contacts', $update, false, 'commented', local_user());
                } else {
                        $r = Item::selectForUser(local_user(), [], $condition, $params);
  
                }
  
                if (!$update) {
-                       $o .= $pager->renderMinimal(count($items));
+                       if ($thread_mode && DI::pConfig()->get(local_user(), 'system', 'infinite_scroll')) {
+                               $o .= HTML::scrollLoader();
+                       } else {
+                               $o .= $pager->renderMinimal(count($items));
+                       }
                }
  
                return $o;