summaryrefslogtreecommitdiff
path: root/internal/timeline/index.go
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-06-17 18:02:33 +0200
committerLibravatar GitHub <noreply@github.com>2021-06-17 18:02:33 +0200
commit82d9f88e424fffacfa9a9c1c26f2f702b97f3e3a (patch)
tree60379f8eb809e9019222f67a13b547e4a26bfc83 /internal/timeline/index.go
parentTimeline manager (#40) (diff)
downloadgotosocial-82d9f88e424fffacfa9a9c1c26f2f702b97f3e3a.tar.xz
Timeline improvements (#41)
Tidying up. Parent/child statuses now display correctly in status/id/context.
Diffstat (limited to 'internal/timeline/index.go')
-rw-r--r--internal/timeline/index.go50
1 files changed, 6 insertions, 44 deletions
diff --git a/internal/timeline/index.go b/internal/timeline/index.go
index 56f5c14df..bc1bf996b 100644
--- a/internal/timeline/index.go
+++ b/internal/timeline/index.go
@@ -10,41 +10,6 @@ import (
)
func (t *timeline) IndexBefore(statusID string, include bool, amount int) error {
- // filtered := []*gtsmodel.Status{}
- // offsetStatus := statusID
-
- // grabloop:
- // for len(filtered) < amount {
- // statuses, err := t.db.GetStatusesWhereFollowing(t.accountID, amount, offsetStatus, include, true)
- // if err != nil {
- // if _, ok := err.(db.ErrNoEntries); !ok {
- // return fmt.Errorf("IndexBeforeAndIncluding: error getting statuses from db: %s", err)
- // }
- // break grabloop // we just don't have enough statuses left in the db so index what we've got and then bail
- // }
-
- // for _, s := range statuses {
- // relevantAccounts, err := t.db.PullRelevantAccountsFromStatus(s)
- // if err != nil {
- // continue
- // }
- // visible, err := t.db.StatusVisible(s, t.account, relevantAccounts)
- // if err != nil {
- // continue
- // }
- // if visible {
- // filtered = append(filtered, s)
- // }
- // offsetStatus = s.ID
- // }
- // }
-
- // for _, s := range filtered {
- // if err := t.IndexOne(s.CreatedAt, s.ID); err != nil {
- // return fmt.Errorf("IndexBeforeAndIncluding: error indexing status with id %s: %s", s.ID, err)
- // }
- // }
-
return nil
}
@@ -63,15 +28,11 @@ grabloop:
}
for _, s := range statuses {
- relevantAccounts, err := t.db.PullRelevantAccountsFromStatus(s)
+ timelineable, err := t.filter.StatusHometimelineable(s, t.account)
if err != nil {
continue
}
- visible, err := t.db.StatusVisible(s, t.account, relevantAccounts)
- if err != nil {
- continue
- }
- if visible {
+ if timelineable {
filtered = append(filtered, s)
}
offsetStatus = s.ID
@@ -79,7 +40,7 @@ grabloop:
}
for _, s := range filtered {
- if err := t.IndexOne(s.CreatedAt, s.ID); err != nil {
+ if err := t.IndexOne(s.CreatedAt, s.ID, s.BoostOfID); err != nil {
return fmt.Errorf("IndexBehindAndIncluding: error indexing status with id %s: %s", s.ID, err)
}
}
@@ -91,12 +52,13 @@ func (t *timeline) IndexOneByID(statusID string) error {
return nil
}
-func (t *timeline) IndexOne(statusCreatedAt time.Time, statusID string) error {
+func (t *timeline) IndexOne(statusCreatedAt time.Time, statusID string, boostOfID string) error {
t.Lock()
defer t.Unlock()
postIndexEntry := &postIndexEntry{
- statusID: statusID,
+ statusID: statusID,
+ boostOfID: boostOfID,
}
return t.postIndex.insertIndexed(postIndexEntry)