From 9e0dbb73377588653f6586d9bb236b19aba222e2 Mon Sep 17 00:00:00 2001
From: Rakib Hasan <rmhasan@gmail.com>
Date: Sun, 19 Feb 2017 07:32:35 +0000
Subject: [PATCH 1/4] Fixing issue #626 The status is not showing anymore after
 clicking on it

---
 app/assets/javascripts/components/actions/statuses.jsx      | 4 +++-
 app/assets/javascripts/components/features/status/index.jsx | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/app/assets/javascripts/components/actions/statuses.jsx b/app/assets/javascripts/components/actions/statuses.jsx
index ee662fe79..d83edd145 100644
--- a/app/assets/javascripts/components/actions/statuses.jsx
+++ b/app/assets/javascripts/components/actions/statuses.jsx
@@ -28,7 +28,6 @@ export function fetchStatus(id) {
     const skipLoading = getState().getIn(['statuses', id], null) !== null;
 
     dispatch(fetchContext(id));
-    dispatch(fetchStatusCard(id));
 
     if (skipLoading) {
       return;
@@ -102,7 +101,10 @@ export function fetchContext(id) {
 
     api(getState).get(`/api/v1/statuses/${id}/context`).then(response => {
       dispatch(fetchContextSuccess(id, response.data.ancestors, response.data.descendants));
+      dispatch(fetchStatusCard(id));
     }).catch(error => {
+      dispatch(deleteStatusSuccess(id));
+      dispatch(deleteFromTimelines(id));
       dispatch(fetchContextFail(id, error));
     });
   };
diff --git a/app/assets/javascripts/components/features/status/index.jsx b/app/assets/javascripts/components/features/status/index.jsx
index e17c078d2..7c9fcef3d 100644
--- a/app/assets/javascripts/components/features/status/index.jsx
+++ b/app/assets/javascripts/components/features/status/index.jsx
@@ -117,7 +117,7 @@ const Status = React.createClass({
     if (status === null) {
       return (
         <Column>
-          <LoadingIndicator />
+          <ColumnBackButton />
         </Column>
       );
     }

From 8e760d5f622672b9b9a073109bd34758a3e3086b Mon Sep 17 00:00:00 2001
From: Rakib Hasan <rmhasan@gmail.com>
Date: Sun, 19 Feb 2017 07:42:03 +0000
Subject: [PATCH 2/4] adding new react class StatusNotFound

---
 .../components/components/status_not_found.jsx   | 16 ++++++++++++++++
 .../components/features/status/index.jsx         |  3 ++-
 2 files changed, 18 insertions(+), 1 deletion(-)
 create mode 100644 app/assets/javascripts/components/components/status_not_found.jsx

diff --git a/app/assets/javascripts/components/components/status_not_found.jsx b/app/assets/javascripts/components/components/status_not_found.jsx
new file mode 100644
index 000000000..917c1c06f
--- /dev/null
+++ b/app/assets/javascripts/components/components/status_not_found.jsx
@@ -0,0 +1,16 @@
+import { FormattedMessage } from 'react-intl';
+
+const style = {
+  textAlign: 'center',
+  fontSize: '16px',
+  fontWeight: '500',
+  paddingTop: '120px'
+};
+
+const StatusNotFound = () => (
+  <div className='status-not-found-indicator' style={style}>
+    <FormattedMessage id='status_not_found_indicator.label' defaultMessage='Status Not Found' />
+  </div>
+);
+
+export default StatusNotFound;
diff --git a/app/assets/javascripts/components/features/status/index.jsx b/app/assets/javascripts/components/features/status/index.jsx
index 7c9fcef3d..68509d593 100644
--- a/app/assets/javascripts/components/features/status/index.jsx
+++ b/app/assets/javascripts/components/features/status/index.jsx
@@ -4,7 +4,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 import { fetchStatus } from '../../actions/statuses';
 import Immutable from 'immutable';
 import EmbeddedStatus from '../../components/status';
-import LoadingIndicator from '../../components/loading_indicator';
+import StatusNotFound from '../../components/status_not_found';
 import DetailedStatus from './components/detailed_status';
 import ActionBar from './components/action_bar';
 import Column from '../ui/components/column';
@@ -118,6 +118,7 @@ const Status = React.createClass({
       return (
         <Column>
           <ColumnBackButton />
+          <StatusNotFound />
         </Column>
       );
     }

From 910df0f7954d5991a64ff419fa60d8327807808f Mon Sep 17 00:00:00 2001
From: Rakib Hasan <rmhasan@gmail.com>
Date: Sun, 19 Feb 2017 08:13:57 +0000
Subject: [PATCH 3/4] Removing dispatch of fetchContextFail No need to flash
 error message when status is not found. The column will display the message
 "status not found"

---
 app/assets/javascripts/components/actions/statuses.jsx | 1 -
 1 file changed, 1 deletion(-)

diff --git a/app/assets/javascripts/components/actions/statuses.jsx b/app/assets/javascripts/components/actions/statuses.jsx
index d83edd145..66b25f6f0 100644
--- a/app/assets/javascripts/components/actions/statuses.jsx
+++ b/app/assets/javascripts/components/actions/statuses.jsx
@@ -105,7 +105,6 @@ export function fetchContext(id) {
     }).catch(error => {
       dispatch(deleteStatusSuccess(id));
       dispatch(deleteFromTimelines(id));
-      dispatch(fetchContextFail(id, error));
     });
   };
 };

From dfd4a42b350a0f258b0b1f8dcd2296289a98381c Mon Sep 17 00:00:00 2001
From: Rakib Hasan <rmhasan@gmail.com>
Date: Sun, 19 Feb 2017 10:54:27 +0000
Subject: [PATCH 4/4] added if else clause in fetchContext So that if we get an
 error, then we will only delete status if it is an 404 error

---
 app/assets/javascripts/components/actions/statuses.jsx | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/app/assets/javascripts/components/actions/statuses.jsx b/app/assets/javascripts/components/actions/statuses.jsx
index 66b25f6f0..6f43539e0 100644
--- a/app/assets/javascripts/components/actions/statuses.jsx
+++ b/app/assets/javascripts/components/actions/statuses.jsx
@@ -103,8 +103,12 @@ export function fetchContext(id) {
       dispatch(fetchContextSuccess(id, response.data.ancestors, response.data.descendants));
       dispatch(fetchStatusCard(id));
     }).catch(error => {
-      dispatch(deleteStatusSuccess(id));
-      dispatch(deleteFromTimelines(id));
+      if (error.response.status == 404){
+        dispatch(deleteStatusSuccess(id));
+        dispatch(deleteFromTimelines(id));
+      }else{
+        dispatch(fetchContextFail(id, error));
+      }
     });
   };
 };