From 430ab4db4c81927a4a601482cd9cc9f88b105852 Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Sun, 30 Aug 2020 18:08:55 -0700 Subject: [PATCH] fix: empty timelines no longer show infinite loading spinner (#1854) Instead, they now show "Nothing to show." I only fixed this for VirtualList because List should never be non-empty (threads). Fixes #1763 --- src/routes/_actions/timeline.js | 8 +++--- .../_components/virtualList/VirtualList.html | 11 ++++++++ tests/serverActions.js | 6 ++++ tests/spec/039-empty-list.js | 28 +++++++++++++++++++ tests/spec/136-empty-list.js | 22 +++++++++++++++ tests/utils.js | 1 + 6 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 tests/spec/039-empty-list.js create mode 100644 tests/spec/136-empty-list.js diff --git a/src/routes/_actions/timeline.js b/src/routes/_actions/timeline.js index 3a3909f9..7b409921 100644 --- a/src/routes/_actions/timeline.js +++ b/src/routes/_actions/timeline.js @@ -104,9 +104,9 @@ async function addPagedTimelineItems (instanceName, timelineName, items) { } export async function addPagedTimelineItemSummaries (instanceName, timelineName, newSummaries) { - const oldSummaries = store.getForTimeline(instanceName, timelineName, 'timelineItemSummaries') || [] + const oldSummaries = store.getForTimeline(instanceName, timelineName, 'timelineItemSummaries') - const mergedSummaries = uniqBy(concat(oldSummaries, newSummaries), byId) + const mergedSummaries = uniqBy(concat(oldSummaries || [], newSummaries), byId) if (!isEqual(oldSummaries, mergedSummaries)) { store.setForTimeline(instanceName, timelineName, { timelineItemSummaries: mergedSummaries }) @@ -160,10 +160,10 @@ async function addTimelineItems (instanceName, timelineName, items, stale) { } export async function addTimelineItemSummaries (instanceName, timelineName, newSummaries, newStale) { - const oldSummaries = store.getForTimeline(instanceName, timelineName, 'timelineItemSummaries') || [] + const oldSummaries = store.getForTimeline(instanceName, timelineName, 'timelineItemSummaries') const oldStale = store.getForTimeline(instanceName, timelineName, 'timelineItemSummariesAreStale') - const mergedSummaries = uniqBy(mergeArrays(oldSummaries, newSummaries, compareTimelineItemSummaries), byId) + const mergedSummaries = uniqBy(mergeArrays(oldSummaries || [], newSummaries, compareTimelineItemSummaries), byId) if (!isEqual(oldSummaries, mergedSummaries)) { store.setForTimeline(instanceName, timelineName, { timelineItemSummaries: mergedSummaries }) diff --git a/src/routes/_components/virtualList/VirtualList.html b/src/routes/_components/virtualList/VirtualList.html index 7d63f729..7b4b3b54 100644 --- a/src/routes/_components/virtualList/VirtualList.html +++ b/src/routes/_components/virtualList/VirtualList.html @@ -12,6 +12,11 @@ index={visibleItem.index} /> {/each} + {#if !$visibleItems.length} +
+ Nothing to show. +
+ {/if} {/if} {#if $showFooter} @@ -23,6 +28,12 @@ position: relative; width: 100%; } + .nothing-to-show { + font-size: 1.1em; + width: 100%; + padding: 20px 0; + text-align: center; + }