From a05924e9a3e0e19e2dda1893910785510f34760a Mon Sep 17 00:00:00 2001
From: MeiMei <30769358+mei23@users.noreply.github.com>
Date: Sat, 11 Aug 2018 18:04:59 +0900
Subject: [PATCH] Cache failed url-preview (apply to proxy/client) (#2154)

---
 .../app/common/views/components/url-preview.vue    | 14 ++++++++------
 src/server/web/url-preview.ts                      |  4 +++-
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/client/app/common/views/components/url-preview.vue b/src/client/app/common/views/components/url-preview.vue
index 4f1e34c6c..34f2558c6 100644
--- a/src/client/app/common/views/components/url-preview.vue
+++ b/src/client/app/common/views/components/url-preview.vue
@@ -104,13 +104,15 @@ export default Vue.extend({
 		}
 		fetch('/url?url=' + encodeURIComponent(this.url)).then(res => {
 			res.json().then(info => {
-				this.title = info.title;
-				this.description = info.description;
-				this.thumbnail = info.thumbnail;
-				this.icon = info.icon;
-				this.sitename = info.sitename;
+				if (info.url != null) {
+					this.title = info.title;
+					this.description = info.description;
+					this.thumbnail = info.thumbnail;
+					this.icon = info.icon;
+					this.sitename = info.sitename;
 
-				this.fetching = false;
+					this.fetching = false;
+				}
 			});
 		});
 	}
diff --git a/src/server/web/url-preview.ts b/src/server/web/url-preview.ts
index 99ee2eaeb..e96eb309f 100644
--- a/src/server/web/url-preview.ts
+++ b/src/server/web/url-preview.ts
@@ -14,7 +14,9 @@ module.exports = async (ctx: Koa.Context) => {
 
 		ctx.body = summary;
 	} catch (e) {
-		ctx.status = 500;
+		ctx.status = 200;
+		ctx.set('Cache-Control', 'max-age=86400, immutable');
+		ctx.body = '{}';
 	}
 };