From 64d7afd2783a6da402fe00a8a0d13ed82910ba43 Mon Sep 17 00:00:00 2001
From: Nikita Titov <nekit94-08@mail.ru>
Date: Wed, 9 Oct 2019 00:16:24 +0300
Subject: [PATCH 1/6] removed deprecated field in Travis

---
 .travis.yml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 95af295c..8a3fcdde 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,3 @@
-sudo: true
 dist: xenial
 #addons:
 #  apt:

From 01ae90fc15ad8489fdb68b3455ee9ef687e5af44 Mon Sep 17 00:00:00 2001
From: jessopb <36554050+jessopb@users.noreply.github.com>
Date: Sat, 7 Dec 2019 11:15:24 -0500
Subject: [PATCH 2/6] fix customize link

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 535867c2..e51125be 100644
--- a/README.md
+++ b/README.md
@@ -105,7 +105,7 @@ $ npm run start
 
 #### Customize your app
 
-Check out the [customization guide](https://github.com/lbryio/spee.ch/blob/readme-update/customize.md) to change your app's appearance and components
+Check out the [customization guide](https://github.com/lbryio/spee.ch/blob/master/customize.md) to change your app's appearance and components
 
 #### (optional) add custom components and update the styles
 

From ad87e2b8a7c793b00b6a83b2bfffd44ce7fcd48b Mon Sep 17 00:00:00 2001
From: Thomas Zarebczan <tzarebczan@users.noreply.github.com>
Date: Sun, 8 Dec 2019 09:44:22 -0500
Subject: [PATCH 3/6] Update README.md

---
 README.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/README.md b/README.md
index e51125be..105a4db9 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,8 @@
 spee.ch provides a user-friendly, custom-designed, image and video hosting site backed by a decentralized network and
 blockchain ([LBRY](https://lbry.tech/)). Via just a small set of config files, you can spin your an entire spee.ch site back up including assets.
 
+**Please note: the spee.ch code base and setup instructions are no longer actively maintained now that we have lbry.tv. Proceed at your own caution. Setup will require dev ops skills.**
+
 ![App GIF](https://spee.ch/e/speechgif.gif)
 
 For a completely open, unrestricted example of a spee.ch site, check out https://www.spee.ch.

From 707e144eff9459540211ed6809df3cab18a711c2 Mon Sep 17 00:00:00 2001
From: jessop <jessop@lbry.com>
Date: Sun, 12 Jan 2020 18:48:52 -0500
Subject: [PATCH 4/6] pagination (thanks Tom)

---
 .travis.yml                               | 2 +-
 server/chainquery/queries/claimQueries.js | 4 ++++
 server/utils/awaitFileSize.js             | 6 ++++--
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 8a3fcdde..972a1d87 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,7 +8,7 @@ dist: xenial
 #      - mysql-client
 language: node_js
 node_js:
-  - "lts/*"
+  - "lts/dubnium"
 cache:
   directories:
     - "node_modules"
diff --git a/server/chainquery/queries/claimQueries.js b/server/chainquery/queries/claimQueries.js
index 6270ea5d..cd8c8a2f 100644
--- a/server/chainquery/queries/claimQueries.js
+++ b/server/chainquery/queries/claimQueries.js
@@ -201,6 +201,10 @@ export default (db, table, sequelize) => ({
         }
 
         return claimArray[0];
+      })
+      .catch(error => {
+        logger.verbose(`resolveClaim failed: ${error}`)
+        reject(error);
       });
   },
 
diff --git a/server/utils/awaitFileSize.js b/server/utils/awaitFileSize.js
index c1a9543e..196f2ba5 100644
--- a/server/utils/awaitFileSize.js
+++ b/server/utils/awaitFileSize.js
@@ -13,8 +13,10 @@ const awaitFileSize = (outpoint, size, interval, timeout) => {
   function checkFileList() {
     logger.debug('checkFileList');
     return getFileListFileByOutpoint(outpoint).then(result => {
-      logger.debug('File List Result', result);
-      if (result[0]['completed'] === true || result[0]['written_bytes'] > size) {
+      const { items: fileInfos } = result;
+      const fileInfo = fileInfos[0];
+      logger.debug('File List Result', fileInfo);
+      if (fileInfo.completed === true || fileInfo.written_bytes > size) {
         logger.debug('FILE READY');
         return 'ready';
       } else if (timeout !== 0 && Date.now() - start > timeout) {

From d11ba6225e3fa1c60828355ea69bcfd84d597701 Mon Sep 17 00:00:00 2001
From: YULIUS KURNIAWAN KRISTIANTO <yuliuskristianto9@gmail.com>
Date: Mon, 3 Feb 2020 04:41:19 +0700
Subject: [PATCH 5/6] Update LICENSE

update year
---
 LICENSE | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/LICENSE b/LICENSE
index bb7bb074..fc7c2bef 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2017-2019 LBRY Inc.
+Copyright (c) 2017-2020 LBRY Inc.
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the
 "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish,

From 5ed72b0e14f5b8ecc4f9b8c4a252f7888bd47564 Mon Sep 17 00:00:00 2001
From: jessop <jessop@lbry.com>
Date: Wed, 22 Apr 2020 20:24:23 -0400
Subject: [PATCH 6/6] update messaging, disable publish and channels

---
 client/src/app.js                             |  2 +-
 .../components/AboutSpeechDetails/index.jsx   | 23 +-------
 .../components/AboutSpeechOverview/index.jsx  |  7 ++-
 .../src/containers/NavigationLinks/view.jsx   | 52 +++++++++----------
 .../PublishDisabledMessage/view.jsx           |  3 ++
 .../assets/utils/getClaimIdAndServeAsset.js   | 23 ++++----
 6 files changed, 47 insertions(+), 63 deletions(-)

diff --git a/client/src/app.js b/client/src/app.js
index c40691d6..86c8361c 100644
--- a/client/src/app.js
+++ b/client/src/app.js
@@ -16,7 +16,7 @@ import EditPage from '@pages/EditPage';
 const App = () => {
   return (
     <Switch>
-      <Route exact path='/' component={HomePage} />
+      <Route exact path='/' component={AboutPage} />
       <Route exact path='/about' component={AboutPage} />
       <Route exact path='/tos' component={TosPage} />
       <Route exact path='/faq' component={FaqPage} />
diff --git a/client/src/components/AboutSpeechDetails/index.jsx b/client/src/components/AboutSpeechDetails/index.jsx
index a49d7bb0..f045b4f5 100644
--- a/client/src/components/AboutSpeechDetails/index.jsx
+++ b/client/src/components/AboutSpeechDetails/index.jsx
@@ -1,32 +1,13 @@
 import React from 'react';
 import Row from '@components/Row';
-import {Link} from 'react-router-dom';
 
 const AboutSpeechDetails = () => {
   return (
     <div>
       <Row>
         <p className={'text--large'}>
-          <Link className={'link--primary'} to='/tos'>Terms of Service</Link>
-          <br />
-          <Link className={'link--primary'} to='/faq'>Frequently Asked Questions</Link>
-        </p>
-      </Row>
-      <Row>
-        <p className={'text--large'}>
-          Spee.ch is a media-hosting site that reads from and publishes content to the <a className='link--primary' href='https://lbry.com'>LBRY</a> blockchain.
-        </p>
-        <p className={'text--large'}>
-          Spee.ch is a hosting service, but with the added benefit that it stores your content on a decentralized network of computers -- the <a className='link--primary' href='https://lbry.com/get'>LBRY</a> network.  This means that your images are stored in multiple locations without a single point of failure.
-        </p>
-      </Row>
-      <Row>
-        <h3>Contribute</h3>
-        <p className={'text--large'}>
-          If you have an idea for your own spee.ch-like site on top of LBRY, fork our <a className='link--primary' href='https://github.com/lbryio/spee.ch'>github repo</a> and go to town!
-        </p>
-        <p className={'text--large'}>
-          If you want to improve spee.ch, join our <a className='link--primary' href='https://chat.lbry.com'>discord channel</a> or solve one of our <a className='link--primary' href='https://github.com/lbryio/spee.ch/issues'>github issues</a>.
+          Spee.ch's journey may be on hold, but LBRY is still on mission. We'd like to thank all of our testers and early adopters for helping us explore this use case.
+          We're really excited about <a className='link--primary' href='https://lbry.tv' target='_blank'>lbry.tv</a> and can't wait to see you over there for a fully featured experience.
         </p>
       </Row>
     </div>
diff --git a/client/src/components/AboutSpeechOverview/index.jsx b/client/src/components/AboutSpeechOverview/index.jsx
index ef53812f..c50c7f6b 100644
--- a/client/src/components/AboutSpeechOverview/index.jsx
+++ b/client/src/components/AboutSpeechOverview/index.jsx
@@ -5,14 +5,13 @@ const AboutSpeechOverview = () => {
   return (
     <div>
       <Row>
-        <p className={'text--extra-large'}>Spee.ch is an open-source project.  Please contribute to the existing site, or fork it and make your own.</p>
+        <p className={'text--extra-large'}>Lbry is no longer supporting Spee.ch. However, we're excited to show you <a className='link--primary' href='https://lbry.tv' target='_blank'>lbry.tv</a>!</p>
       </Row>
       <Row>
         <div className={'text--large'}>
-          <a className='link--primary' target='_blank' href='https://twitter.com/spee_ch'>TWITTER</a><br/>
-          <a className='link--primary' target='_blank' href='https://github.com/lbryio/spee.ch'>GITHUB</a><br/>
+          <a className='link--primary' target='_blank' href='https://twitter.com/lbry'>TWITTER</a><br/>
+          <a className='link--primary' target='_blank' href='https://github.com/lbryio/'>GITHUB</a><br/>
           <a className='link--primary' target='_blank' href='https://discord.gg/YjYbwhS'>DISCORD CHANNEL</a><br/>
-          <a className='link--primary' target='_blank' href='https://github.com/lbryio/spee.ch/blob/master/README.md'>DOCUMENTATION</a><br/>
         </div>
       </Row>
     </div>
diff --git a/client/src/containers/NavigationLinks/view.jsx b/client/src/containers/NavigationLinks/view.jsx
index 7a9268d5..c868fc0a 100644
--- a/client/src/containers/NavigationLinks/view.jsx
+++ b/client/src/containers/NavigationLinks/view.jsx
@@ -33,14 +33,14 @@ class NavigationLinks extends React.Component {
     const { channelName, showPublish, closedRegistration } = this.props;
     return (
       <div className='navigation-links'>
-        {showPublish && <NavLink
-          className='nav-bar-link link--nav'
-          activeClassName='link--nav-active'
-          to='/'
-          exact
-        >
-          Publish
-        </NavLink>}
+        {/*{showPublish && <NavLink*/}
+        {/*  className='nav-bar-link link--nav'*/}
+        {/*  activeClassName='link--nav-active'*/}
+        {/*  to='/'*/}
+        {/*  exact*/}
+        {/*>*/}
+        {/*  Publish*/}
+        {/*</NavLink>}*/}
         <NavLink
           className='nav-bar-link link--nav'
           activeClassName='link--nav-active'
@@ -48,24 +48,24 @@ class NavigationLinks extends React.Component {
         >
           About
         </NavLink>
-        { channelName ? (
-          <NavBarChannelOptionsDropdown
-            channelName={this.props.channelName}
-            handleSelection={this.handleSelection}
-            defaultSelection={this.props.channelName}
-            VIEW={VIEW}
-            LOGOUT={LOGOUT}
-          />
-        ) : !closedRegistration && (
-          <NavLink
-            id='nav-bar-login-link'
-            className='nav-bar-link link--nav'
-            activeClassName='link--nav-active'
-            to='/login'
-          >
-            Channel
-          </NavLink>
-        )}
+        {/*{ channelName ? (*/}
+        {/*  <NavBarChannelOptionsDropdown*/}
+        {/*    channelName={this.props.channelName}*/}
+        {/*    handleSelection={this.handleSelection}*/}
+        {/*    defaultSelection={this.props.channelName}*/}
+        {/*    VIEW={VIEW}*/}
+        {/*    LOGOUT={LOGOUT}*/}
+        {/*  />*/}
+        {/*) : !closedRegistration && (*/}
+        {/*  <NavLink*/}
+        {/*    id='nav-bar-login-link'*/}
+        {/*    className='nav-bar-link link--nav'*/}
+        {/*    activeClassName='link--nav-active'*/}
+        {/*    to='/login'*/}
+        {/*  >*/}
+        {/*    Channel*/}
+        {/*  </NavLink>*/}
+        {/*)}*/}
       </div>
     );
   }
diff --git a/client/src/containers/PublishDisabledMessage/view.jsx b/client/src/containers/PublishDisabledMessage/view.jsx
index 355ce75d..6a00f7e2 100644
--- a/client/src/containers/PublishDisabledMessage/view.jsx
+++ b/client/src/containers/PublishDisabledMessage/view.jsx
@@ -7,6 +7,9 @@ class PublishDisabledMessage extends React.Component {
       <div className={'publish-disabled-message'}>
         <div className={'message'}>
           <p className={'text--secondary'}>Publishing is currently disabled.</p>
+          <p className={'text--secondary'}>
+            Try <a className='link--primary' href='https://lbry.tv' target='_blank'>lbry.tv</a>
+          </p>
           <p className={'text--secondary'}>{message}</p>
         </div>
       </div>
diff --git a/server/controllers/assets/utils/getClaimIdAndServeAsset.js b/server/controllers/assets/utils/getClaimIdAndServeAsset.js
index 60df4e74..c976e582 100644
--- a/server/controllers/assets/utils/getClaimIdAndServeAsset.js
+++ b/server/controllers/assets/utils/getClaimIdAndServeAsset.js
@@ -64,18 +64,19 @@ const getClaimIdAndServeAsset = (
         claimDataValues.outpoint ||
         `${claimDataValues.transaction_hash_id}:${claimDataValues.vout}`;
       logger.debug('Outpoint:', outpoint);
-      return db.Blocked.isNotBlocked(outpoint).then(() => {
+      return db.Blocked.isNotBlocked(outpoint)
+        // .then(() => {
         // If content was found, is approved, and not blocked - log a view.
-        if (headers && headers['user-agent'] && /LBRY/.test(headers['user-agent']) === false) {
-          db.Views.create({
-            time: Date.now(),
-            isChannel: false,
-            claimId: claimDataValues.claim_id || claimDataValues.claimId,
-            publisherId: claimDataValues.publisher_id || claimDataValues.certificateId,
-            ip,
-          });
-        }
-      });
+        // if (headers && headers['user-agent'] && /LBRY/.test(headers['user-agent']) === false) {
+        //   db.Views.create({
+        //     time: Date.now(),
+        //     isChannel: false,
+        //     claimId: claimDataValues.claim_id || claimDataValues.claimId,
+        //     publisherId: claimDataValues.publisher_id || claimDataValues.certificateId,
+        //     ip,
+        //   });
+        // }
+       // });
     })
     .then(() => {
       return db.File.findOne({