Forráskód Böngészése

Update Notification components, fix old notifications with missing attributes

Daniel Supernault 4 éve
szülő
commit
b6e226aef9

+ 15 - 3
resources/assets/js/components/Activity.vue

@@ -146,6 +146,12 @@ export default {
 					if(n.type == 'mention' && !n.status) {
 						return false;
 					}
+					if(n.type == 'favourite' && !n.status) {
+						return false;
+					}
+					if(n.type == 'follow' && !n.account) {
+						return false;
+					}
 					return true;
 				});
 				let ids = res.data.map(n => n.id);
@@ -168,13 +174,19 @@ export default {
 			}).then(res => {
 				if(res.data.length) {
 					let data = res.data.filter(n => {
-						if(n.type == 'share' && !status) {
+						if(n.type == 'share' && !n.status) {
+							return false;
+						}
+						if(n.type == 'comment' && !n.status) {
+							return false;
+						}
+						if(n.type == 'mention' && !n.status) {
 							return false;
 						}
-						if(n.type == 'comment' && !status) {
+						if(n.type == 'favourite' && !n.status) {
 							return false;
 						}
-						if(n.type == 'mention' && !status) {
+						if(n.type == 'follow' && !n.account) {
 							return false;
 						}
 						if(_.find(this.notifications, {id: n.id})) {

+ 19 - 3
resources/assets/js/components/NotificationCard.vue

@@ -21,7 +21,7 @@
 						<div v-if="n.type == 'favourite'">
 							<p class="my-0">
 								<a :href="getProfileUrl(n.account)" class="font-weight-bold text-dark word-break" :title="n.account.username">{{n.account.local == false ? '@':''}}{{truncate(n.account.username)}}</a> liked your
-								<span v-if="n.status.hasOwnProperty('media_attachments')">
+								<span v-if="n.status && n.status.hasOwnProperty('media_attachments')">
 									<a class="font-weight-bold" v-bind:href="getPostUrl(n.status)" :id="'fvn-' + n.id">post</a>.
 									<b-popover :target="'fvn-' + n.id" title="" triggers="hover" placement="top" boundary="window">
 										<img :src="notificationPreview(n)" width="100px" height="100px" style="object-fit: cover;">
@@ -140,6 +140,12 @@
 						if(n.type == 'mention' && !n.status) {
 							return false;
 						}
+						if(n.type == 'favourite' && !n.status) {
+							return false;
+						}
+						if(n.type == 'follow' && !n.account) {
+							return false;
+						}
 						return true;
 					});
 					let ids = data.map(n => n.id);
@@ -171,6 +177,12 @@
 							if(n.type == 'mention' && !n.status) {
 								return false;
 							}
+							if(n.type == 'favourite' && !n.status) {
+								return false;
+							}
+							if(n.type == 'follow' && !n.account) {
+								return false;
+							}
 							if(_.find(this.notifications, {id: n.id})) {
 								return false;
 							}
@@ -271,7 +283,7 @@
 			},
 
 			notificationPreview(n) {
-				if(!n.status.hasOwnProperty('media_attachments') || !n.status.media_attachments.length) {
+				if(!n.status || !n.status.hasOwnProperty('media_attachments') || !n.status.media_attachments.length) {
 					return '/storage/no-preview.png';
 				}
 				return n.status.media_attachments[0].preview_url;
@@ -286,7 +298,11 @@
 			},
 
 			getPostUrl(status) {
-				if(status.local == true) {
+				if(!status) {
+					return;
+				}
+
+				if(!status.hasOwnProperty('local') || status.local == true) {
 					return status.url;
 				}