diff --git a/package-lock.json b/package-lock.json index e04db6f..1004cba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3099,6 +3099,11 @@ "inherits": "^2.0.3" } }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -7919,12 +7924,13 @@ "integrity": "sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=" }, "open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/open/-/open-8.0.1.tgz", + "integrity": "sha512-VfWbDBAay2Zbw2QrMMIxuo4H0SUe+TdHHT8qLkbBRF+TxdEhnbDxf7jWMV5Fbk5U4HX3abq2lvYH5v/xoo6CNg==", "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "opener": { diff --git a/package.json b/package.json index 625cfa2..920e3b3 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "lodash": "^4.17.11", "lodash.shuffle": "^4.2.0", "markdown-it": "^12.0.2", - "open": "^7.0.3", + "open": "^8.0.1", "piexifjs": "^1.0.4", "pretty-ms": "^7.0.1", "pull-abortable": "^4.1.1", diff --git a/src/assets/style.css b/src/assets/style.css index 5b528a6..6fac4c1 100644 --- a/src/assets/style.css +++ b/src/assets/style.css @@ -667,6 +667,10 @@ section.post-preview > section > footer { display: none; } +section.post.blocked { + font-style: italic; +} + section > footer > div > a:hover, section > footer > div > form > button:hover { text-decoration: underline; diff --git a/src/models.js b/src/models.js index 3a1fca5..2e5dbac 100644 --- a/src/models.js +++ b/src/models.js @@ -866,6 +866,11 @@ module.exports = ({ cooler, isPublic }) => { ); } + const { blocking } = await models.friend.getRelationship( + msg.value.author + ); + lodash.set(msg, "value.meta.blocking", blocking); + return msg; }) ); diff --git a/src/views/i18n.js b/src/views/i18n.js index c64876c..0571944 100644 --- a/src/views/i18n.js +++ b/src/views/i18n.js @@ -75,6 +75,7 @@ const i18n = { relationshipFollowing: "You are following", relationshipYou: "This is you", relationshipBlocking: "You are blocking", + relationshipBlockingPost: "This message hides content from a blocked user.", relationshipNone: "You are neither following or blocking", relationshipConflict: "You are somehow both following and blocking", // author view diff --git a/src/views/index.js b/src/views/index.js index 1070d41..ac0a114 100644 --- a/src/views/index.js +++ b/src/views/index.js @@ -220,6 +220,7 @@ const thread = (messages) => { const isAncestor = Boolean( lodash.get(currentMsg, "value.meta.thread.ancestorOfTarget", false) ); + const isBlocked = Boolean(nextMsg.value.meta.blocking); msgList.push(`
`); const nextAuthor = lodash.get(nextMsg, "value.meta.author.name"); @@ -228,8 +229,13 @@ const thread = (messages) => { ? lodash.get(nextMsg, "value.content.contentWarning") : lodash.get(nextMsg, "value.content.text") ); - - msgList.push(summary(`${nextAuthor}: ${nextSnippet}`).outerHTML); + msgList.push( + summary( + isBlocked + ? i18n.relationshipBlockingPost + : `${nextAuthor}: ${nextSnippet}` + ).outerHTML + ); } else if (depth(currentMsg) > depth(nextMsg)) { // getting more shallow const diffDepth = depth(currentMsg) - depth(nextMsg); @@ -353,6 +359,7 @@ const post = ({ msg, aside = false }) => { }; const isPrivate = Boolean(msg.value.meta.private); + const isBlocked = Boolean(msg.value.meta.blocking); const isRoot = msg.value.content.root == null; const isFork = msg.value.meta.postType === "subtopic"; const hasContentWarning = @@ -438,6 +445,17 @@ const post = ({ msg, aside = false }) => { ) : article({ class: "content", innerHTML: markdownContent }); + if (isBlocked) { + messageClasses.push("blocked"); + return section( + { + id: msg.key, + class: messageClasses.join(" "), + }, + i18n.relationshipBlockingPost + ); + } + const articleContent = hasContentWarning ? details(summary(msg.value.content.contentWarning), articleElement) : articleElement;