From a0d4d9e08c22ed8cf8a2e8cef8831f18a025b463 Mon Sep 17 00:00:00 2001
From: Lim Chee Aun <cheeaun@gmail.com>
Date: Sat, 18 Mar 2023 20:20:48 +0800
Subject: [PATCH] Time to save all to states

Memory usage might go up but need this for reactivity
---
 src/pages/account-statuses.jsx | 6 ++++++
 src/pages/hashtag.jsx          | 6 ++++++
 src/pages/list.jsx             | 6 ++++++
 src/pages/public.jsx           | 6 ++++++
 4 files changed, 24 insertions(+)

diff --git a/src/pages/account-statuses.jsx b/src/pages/account-statuses.jsx
index def1a03e..95c57d81 100644
--- a/src/pages/account-statuses.jsx
+++ b/src/pages/account-statuses.jsx
@@ -7,6 +7,7 @@ import Timeline from '../components/timeline';
 import { api } from '../utils/api';
 import emojifyText from '../utils/emojify-text';
 import states from '../utils/states';
+import { saveStatus } from '../utils/states';
 import useTitle from '../utils/useTitle';
 
 const LIMIT = 20;
@@ -48,6 +49,10 @@ function AccountStatuses() {
     const { value, done } = await accountStatusesIterator.current.next();
     if (value?.length) {
       results.push(...value);
+
+      value.forEach((item) => {
+        saveStatus(item, instance);
+      });
     }
     return {
       value: results,
@@ -118,6 +123,7 @@ function AccountStatuses() {
       emptyText="Nothing to see here yet."
       errorText="Unable to load statuses"
       fetchItems={fetchAccountStatuses}
+      useItemID
       boostsCarousel={snapStates.settings.boostsCarousel}
       timelineStart={TimelineStart}
     />
diff --git a/src/pages/hashtag.jsx b/src/pages/hashtag.jsx
index cb8bce12..fd0e6f8e 100644
--- a/src/pages/hashtag.jsx
+++ b/src/pages/hashtag.jsx
@@ -13,6 +13,7 @@ import Timeline from '../components/timeline';
 import { api } from '../utils/api';
 import showToast from '../utils/show-toast';
 import states from '../utils/states';
+import { saveStatus } from '../utils/states';
 import useTitle from '../utils/useTitle';
 
 const LIMIT = 20;
@@ -52,6 +53,10 @@ function Hashtags(props) {
       if (firstLoad) {
         latestItem.current = value[0].id;
       }
+
+      value.forEach((item) => {
+        saveStatus(item, instance);
+      });
     }
     return results;
   }
@@ -110,6 +115,7 @@ function Hashtags(props) {
       errorText="Unable to load posts with this tag"
       fetchItems={fetchHashtags}
       checkForUpdates={checkForUpdates}
+      useItemID
       headerEnd={
         <Menu
           portal={{
diff --git a/src/pages/list.jsx b/src/pages/list.jsx
index f8cddef2..22f4a120 100644
--- a/src/pages/list.jsx
+++ b/src/pages/list.jsx
@@ -5,6 +5,7 @@ import Icon from '../components/icon';
 import Link from '../components/link';
 import Timeline from '../components/timeline';
 import { api } from '../utils/api';
+import { saveStatus } from '../utils/states';
 import useTitle from '../utils/useTitle';
 
 const LIMIT = 20;
@@ -27,6 +28,10 @@ function List(props) {
       if (firstLoad) {
         latestItem.current = value[0].id;
       }
+
+      value.forEach((item) => {
+        saveStatus(item, instance);
+      });
     }
     return results;
   }
@@ -69,6 +74,7 @@ function List(props) {
       instance={instance}
       fetchItems={fetchList}
       checkForUpdates={checkForUpdates}
+      useItemID
       boostsCarousel
       headerStart={
         <Link to="/l" class="button plain">
diff --git a/src/pages/public.jsx b/src/pages/public.jsx
index 4fc710fd..747da069 100644
--- a/src/pages/public.jsx
+++ b/src/pages/public.jsx
@@ -7,6 +7,7 @@ import Icon from '../components/icon';
 import Timeline from '../components/timeline';
 import { api } from '../utils/api';
 import states from '../utils/states';
+import { saveStatus } from '../utils/states';
 import useTitle from '../utils/useTitle';
 
 const LIMIT = 20;
@@ -37,6 +38,10 @@ function Public({ local, ...props }) {
       if (firstLoad) {
         latestItem.current = value[0].id;
       }
+
+      value.forEach((item) => {
+        saveStatus(item, instance);
+      });
     }
     return results;
   }
@@ -76,6 +81,7 @@ function Public({ local, ...props }) {
       errorText="Unable to load posts"
       fetchItems={fetchPublic}
       checkForUpdates={checkForUpdates}
+      useItemID
       headerStart={<></>}
       boostsCarousel={snapStates.settings.boostsCarousel}
       headerEnd={