Date: Tue, 12 Nov 2024 14:23:58 +0100
Subject: [PATCH 09/29] refactor(blog): missing blog data will not trigger
loading screen
---
src/pages/blog/index.tsx | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/pages/blog/index.tsx b/src/pages/blog/index.tsx
index 56d2b30..65b4466 100644
--- a/src/pages/blog/index.tsx
+++ b/src/pages/blog/index.tsx
@@ -94,9 +94,7 @@ export const BlogPage = () => {
- {!blog ? (
-
- ) : (
+ {blog && (
<>
From 352179f1d9a361da2a86b2d92ffc95bfb3c446bf Mon Sep 17 00:00:00 2001
From: enes
Date: Tue, 12 Nov 2024 14:25:34 +0100
Subject: [PATCH 10/29] fix(blog): event fetch filter, editing as non-author,
add errors
---
src/pages/blog/loader.ts | 66 +++++++++++++++++++++++++---------------
src/routes/index.tsx | 6 ++--
2 files changed, 46 insertions(+), 26 deletions(-)
diff --git a/src/pages/blog/loader.ts b/src/pages/blog/loader.ts
index aadddb0..27325be 100644
--- a/src/pages/blog/loader.ts
+++ b/src/pages/blog/loader.ts
@@ -1,8 +1,7 @@
-import { filterForEventsTaggingId, NDKFilter } from '@nostr-dev-kit/ndk'
+import { NDKFilter } from '@nostr-dev-kit/ndk'
import { NDKContextType } from 'contexts/NDKContext'
import { kinds, nip19 } from 'nostr-tools'
import { LoaderFunctionArgs, redirect } from 'react-router-dom'
-import { toast } from 'react-toastify'
import { appRoutes } from 'routes'
import { store } from 'store'
import { BlogPageLoaderResult, FilterOptions, NSFWFilter } from 'types'
@@ -16,28 +15,43 @@ import { extractBlogCardDetails, extractBlogDetails } from 'utils/blog'
export const blogRouteLoader =
(ndkContext: NDKContextType) =>
- async ({ params }: LoaderFunctionArgs) => {
+ async ({ params, request }: LoaderFunctionArgs) => {
const { naddr } = params
if (!naddr) {
log(true, LogType.Error, 'Required naddr.')
return redirect(appRoutes.blogs)
}
- // Decode author from naddr
- const decoded = nip19.decode<'naddr'>(naddr as `naddr1${string}`)
- const { pubkey } = decoded.data
+ // Decode author and identifier from naddr
+ let pubkey: string | undefined
+ let identifier: string | undefined
+ try {
+ const decoded = nip19.decode<'naddr'>(naddr as `naddr1${string}`)
+ pubkey = decoded.data.pubkey
+ identifier = decoded.data.identifier
+ } catch (error) {
+ log(true, LogType.Error, `Failed to decode naddr: ${naddr}`, error)
+ throw new Error('Failed to fetch the blog. The address might be wrong')
+ }
+
+ const userState = store.getState().user
+ const loggedInUserPubkey = userState?.user?.pubkey as string | undefined
+
+ // Check if editing and the user is the original author
+ // Redirect if NOT
+ const url = new URL(request.url)
+ const isEditMode = url.pathname.endsWith('/edit')
+ if (isEditMode && loggedInUserPubkey !== pubkey) {
+ return redirect(appRoutes.blogs)
+ }
try {
- // Get the filter with #a from naddr for the main blog content
- const filter = filterForEventsTaggingId(naddr)
- if (!filter) {
- log(true, LogType.Error, 'Unable to create filter from blog naddr.')
- return redirect(appRoutes.blogs)
+ // Set the filter for the main blog content
+ const filter = {
+ kinds: [kinds.LongFormArticle],
+ authors: [pubkey],
+ '#d': [identifier]
}
- // Update kinds to make sure we fetch correct event kind
- filter.kinds = [kinds.LongFormArticle]
-
- const userState = store.getState().user
// Get the blog filter options for latest blogs
const filterOptions = JSON.parse(
@@ -68,7 +82,7 @@ export const blogRouteLoader =
const settled = await Promise.allSettled([
ndkContext.fetchEvent(filter),
ndkContext.fetchEvents(latestModsFilter),
- ndkContext.getMuteLists(userState?.user?.pubkey as string),
+ ndkContext.getMuteLists(loggedInUserPubkey), // Pass pubkey for logged-in users
ndkContext.getNSFWList()
])
@@ -93,6 +107,12 @@ export const blogRouteLoader =
)
}
+ // Throw an error if we are missing the main blog result
+ // Handle it with the react-router's errorComponent
+ if (!result.blog) {
+ throw new Error('We are unable to find the blog on the relays')
+ }
+
// Check the lateast blog events
const fetchEventsResult = settled[1]
if (fetchEventsResult.status === 'fulfilled' && fetchEventsResult.value) {
@@ -165,13 +185,11 @@ export const blogRouteLoader =
return result
} catch (error) {
- log(
- true,
- LogType.Error,
- 'An error occurred in fetching blog details from relays',
- error
- )
- toast.error('An error occurred in fetching blog details from relays')
- return redirect(appRoutes.blogs)
+ let message = 'An error occurred in fetching blog details from relays'
+ log(true, LogType.Error, message, error)
+ if (error instanceof Error) {
+ message = error.message
+ throw new Error(message)
+ }
}
}
diff --git a/src/routes/index.tsx b/src/routes/index.tsx
index 5c14fd0..aec86c6 100644
--- a/src/routes/index.tsx
+++ b/src/routes/index.tsx
@@ -103,13 +103,15 @@ export const routerWithNdkContext = (context: NDKContextType) =>
path: appRoutes.blog,
element: ,
loader: blogRouteLoader(context),
- action: blogRouteAction(context)
+ action: blogRouteAction(context),
+ errorElement:
},
{
path: appRoutes.blogEdit,
element: ,
loader: blogRouteLoader(context),
- action: writeRouteAction(context)
+ action: writeRouteAction(context),
+ errorElement:
},
{
path: appRoutes.blogReport_actionOnly,
From b49ae9537b1639b71563cc2366a692f02dfd3c78 Mon Sep 17 00:00:00 2001
From: enes
Date: Tue, 12 Nov 2024 20:15:27 +0100
Subject: [PATCH 11/29] fix(blog): nsfw filtering, use L tag instead nsfw
---
src/pages/blog/loader.ts | 24 ++++++++------
src/pages/home.tsx | 62 +++++++++++++++++--------------------
src/pages/profile/index.tsx | 17 +++++-----
src/pages/write/action.tsx | 27 +++++++++-------
src/utils/blog.ts | 6 ++--
5 files changed, 72 insertions(+), 64 deletions(-)
diff --git a/src/pages/blog/loader.ts b/src/pages/blog/loader.ts
index 27325be..e711c65 100644
--- a/src/pages/blog/loader.ts
+++ b/src/pages/blog/loader.ts
@@ -1,4 +1,5 @@
import { NDKFilter } from '@nostr-dev-kit/ndk'
+import { PROFILE_BLOG_FILTER_LIMIT } from '../../constants'
import { NDKContextType } from 'contexts/NDKContext'
import { kinds, nip19 } from 'nostr-tools'
import { LoaderFunctionArgs, redirect } from 'react-router-dom'
@@ -59,33 +60,33 @@ export const blogRouteLoader =
) as FilterOptions
// Fetch 4 in case the current blog is included in the latest
- const latestModsFilter: NDKFilter = {
+ const latestFilter: NDKFilter = {
authors: [pubkey],
kinds: [kinds.LongFormArticle],
limit: 4
}
// Add source filter
if (filterOptions.source === window.location.host) {
- latestModsFilter['#r'] = [filterOptions.source]
+ latestFilter['#r'] = [filterOptions.source]
}
// Filter by NSFW tag
+ // NSFWFilter.Only_NSFW -> fetch with content-warning label
// NSFWFilter.Show_NSFW -> filter not needed
- // NSFWFilter.Only_NSFW -> true
- // NSFWFilter.Hide_NSFW -> false
- if (filterOptions.nsfw !== NSFWFilter.Show_NSFW) {
- latestModsFilter['#nsfw'] = [
- (filterOptions.nsfw === NSFWFilter.Only_NSFW).toString()
- ]
+ // NSFWFilter.Hide_NSFW -> up the limit and filter after fetch
+ if (filterOptions.nsfw === NSFWFilter.Only_NSFW) {
+ latestFilter['#L'] = ['content-warning']
+ } else if (filterOptions.nsfw === NSFWFilter.Hide_NSFW) {
+ // Up the limit in case we fetch multiple NSFW blogs
+ latestFilter.limit = PROFILE_BLOG_FILTER_LIMIT
}
// Parallel fetch blog event, latest events, mute, and nsfw lists in parallel
const settled = await Promise.allSettled([
ndkContext.fetchEvent(filter),
- ndkContext.fetchEvents(latestModsFilter),
+ ndkContext.fetchEvents(latestFilter),
ndkContext.getMuteLists(loggedInUserPubkey), // Pass pubkey for logged-in users
ndkContext.getNSFWList()
])
-
const result: BlogPageLoaderResult = {
blog: undefined,
latest: [],
@@ -120,6 +121,9 @@ export const blogRouteLoader =
result.latest = fetchEventsResult.value
.map(extractBlogCardDetails)
.filter((b) => b.id !== result.blog?.id) // Filter out current blog if present
+ .filter(
+ (b) => !(b.nsfw && filterOptions.nsfw === NSFWFilter.Hide_NSFW)
+ ) // Filter out the NSFW if selected
.slice(0, 3) // Take only three
} else if (fetchEventsResult.status === 'rejected') {
log(
diff --git a/src/pages/home.tsx b/src/pages/home.tsx
index 4b6c7d2..072cfc3 100644
--- a/src/pages/home.tsx
+++ b/src/pages/home.tsx
@@ -6,7 +6,7 @@ import { Swiper, SwiperSlide } from 'swiper/react'
import { BlogCard } from '../components/BlogCard'
import { GameCard } from '../components/GameCard'
import { ModCard } from '../components/ModCard'
-import { LANDING_PAGE_DATA } from '../constants'
+import { LANDING_PAGE_DATA, PROFILE_BLOG_FILTER_LIMIT } from '../constants'
import {
useDidMount,
useGames,
@@ -31,11 +31,7 @@ import '../styles/SimpleSlider.css'
import '../styles/styles.css'
// Import Swiper styles
-import {
- filterForEventsTaggingId,
- NDKEvent,
- NDKFilter
-} from '@nostr-dev-kit/ndk'
+import { NDKEvent, NDKFilter } from '@nostr-dev-kit/ndk'
import 'swiper/css'
import 'swiper/css/navigation'
import 'swiper/css/pagination'
@@ -332,38 +328,34 @@ const DisplayLatestBlogs = () => {
// Show maximum of 4 blog posts
// 2 should be featured and the most recent 2 from blog npubs
// Populate the filter from known naddr (constants.ts)
- const filters: NDKFilter[] = []
+ const filter: NDKFilter = {
+ kinds: [kinds.LongFormArticle],
+ authors: [],
+ '#d': []
+ }
for (let i = 0; i < LANDING_PAGE_DATA.featuredBlogPosts.length; i++) {
try {
const naddr = LANDING_PAGE_DATA.featuredBlogPosts[i]
- const filterId = filterForEventsTaggingId(naddr)
- if (filterId) {
- filters.push(filterId)
+ const decoded = nip19.decode<'naddr'>(naddr as `naddr1${string}`)
+ const { pubkey, identifier } = decoded.data
+ if (!filter.authors?.includes(pubkey)) {
+ filter.authors?.push(pubkey)
+ }
+ if (!filter.authors?.includes(identifier)) {
+ filter['#d']?.push(identifier)
}
} catch (error) {
// Silently ignore
}
}
- // Create a single filter based on multiple #a's
- const filter = filters.reduce(
- (filter, id) => {
- const a = id['#a']
- if (a) {
- filter['#a']?.push(a[0])
- }
- return filter
- },
- {
- '#a': []
- } as NDKFilter
- )
+
// Prepare filter for the latest
const blogNpubs = import.meta.env.VITE_BLOG_NPUBS.split(',')
const blogHexkeys = blogNpubs
.map(npubToHex)
.filter((hexkey) => hexkey !== null)
- // We fetch 4 posts in case of duplicates (from featured)
+ // We fetch more posts in case of duplicates (from featured)
const latestFilter: NDKFilter = {
authors: blogHexkeys,
kinds: [kinds.LongFormArticle],
@@ -371,17 +363,15 @@ const DisplayLatestBlogs = () => {
}
// Filter by NSFW tag
- // NSFWFilter.Show_NSFW -> filter not needed
- // NSFWFilter.Only_NSFW -> true
- // NSFWFilter.Hide_NSFW -> false
- if (filterOptions.nsfw !== NSFWFilter.Show_NSFW) {
- latestFilter['#nsfw'] = [
- (filterOptions.nsfw === NSFWFilter.Only_NSFW).toString()
- ]
+ if (filterOptions.nsfw === NSFWFilter.Only_NSFW) {
+ latestFilter['#L'] = ['content-warning']
+ } else if (filterOptions.nsfw === NSFWFilter.Hide_NSFW) {
+ // Up the limit in case we fetch multiple NSFW blogs
+ latestFilter.limit = PROFILE_BLOG_FILTER_LIMIT
}
const results = await Promise.allSettled([
- fetchEvents({ ...filter, kinds: [kinds.LongFormArticle] }),
+ fetchEvents(filter),
fetchEvents(latestFilter)
])
@@ -403,9 +393,13 @@ const DisplayLatestBlogs = () => {
}, new Map())
.values()
)
- const latest = unique.slice(0, 4)
+ .map(extractBlogCardDetails)
+ .filter(
+ (b) => !(b.nsfw && filterOptions.nsfw === NSFWFilter.Hide_NSFW)
+ )
- setBlogs(latest.map(extractBlogCardDetails))
+ const latest = unique.slice(0, 4)
+ setBlogs(latest)
} catch (error) {
log(
true,
diff --git a/src/pages/profile/index.tsx b/src/pages/profile/index.tsx
index 584c34f..3b6ec70 100644
--- a/src/pages/profile/index.tsx
+++ b/src/pages/profile/index.tsx
@@ -704,10 +704,8 @@ const ProfileTabBlogs = () => {
filter['#r'] = [host]
}
- if (filterOptions.nsfw !== NSFWFilter.Show_NSFW) {
- filter['#nsfw'] = [
- (filterOptions.nsfw === NSFWFilter.Only_NSFW).toString()
- ]
+ if (filterOptions.nsfw === NSFWFilter.Only_NSFW) {
+ filter['#L'] = ['content-warning']
}
return filter
@@ -725,7 +723,7 @@ const ProfileTabBlogs = () => {
}
fetchEvents(filter)
.then((events) => {
- setBlogs(events.map(extractBlogCardDetails).filter((e) => e.naddr))
+ setBlogs(events.map(extractBlogCardDetails).filter((b) => b.naddr))
setHasMore(events.length > PROFILE_BLOG_FILTER_LIMIT)
})
.finally(() => {
@@ -752,7 +750,7 @@ const ProfileTabBlogs = () => {
setHasMore(nextBlogs.length > PROFILE_BLOG_FILTER_LIMIT)
setPage((prev) => prev + 1)
setBlogs(
- nextBlogs.slice(0, PROFILE_BLOG_FILTER_LIMIT).filter((e) => e.naddr)
+ nextBlogs.slice(0, PROFILE_BLOG_FILTER_LIMIT).filter((b) => b.naddr)
)
})
.finally(() => setIsLoading(false))
@@ -775,7 +773,7 @@ const ProfileTabBlogs = () => {
.then((events) => {
setHasMore(true)
setPage((prev) => prev - 1)
- setBlogs(events.map(extractBlogCardDetails).filter((e) => e.naddr))
+ setBlogs(events.map(extractBlogCardDetails).filter((b) => b.naddr))
})
.finally(() => setIsLoading(false))
}
@@ -799,6 +797,11 @@ const ProfileTabBlogs = () => {
})
}
+ // Filter nsfw (Hide_NSFW option)
+ _blogs = _blogs.filter(
+ (b) => !(b.nsfw && filterOptions.nsfw === NSFWFilter.Hide_NSFW)
+ )
+
// Only apply filtering if the user is not an admin or the admin has not selected "Unmoderated Fully"
// Allow "Unmoderated Fully" when author visits own profile
if (!((isAdmin || isOwner) && isUnmoderatedFully)) {
diff --git a/src/pages/write/action.tsx b/src/pages/write/action.tsx
index 447a605..61bb7ad 100644
--- a/src/pages/write/action.tsx
+++ b/src/pages/write/action.tsx
@@ -84,22 +84,27 @@ export const writeRouteAction =
.split(',')
.map((t) => ['t', t])
+ const tags = [
+ ['d', uuid],
+ ['a', aTag],
+ ['r', rTag],
+ ['published_at', published_at.toString()],
+ ['title', formSubmit.title!],
+ ['image', formSubmit.image!],
+ ['summary', formSubmit.summary!],
+ ...tTags
+ ]
+
+ // Add NSFW tag, L label namespace standardized tag
+ // https://github.com/nostr-protocol/nips/blob/2838e3bd51ac00bd63c4cef1601ae09935e7dd56/README.md#standardized-tags
+ if (formSubmit.nsfw === 'on') tags.push(['L', 'content-warning'])
+
const unsignedEvent: UnsignedEvent = {
kind: kinds.LongFormArticle,
created_at: currentTimeStamp,
pubkey: hexPubkey,
content: content,
- tags: [
- ['d', uuid],
- ['a', aTag],
- ['r', rTag],
- ['published_at', published_at.toString()],
- ['title', formSubmit.title!],
- ['image', formSubmit.image!],
- ['summary', formSubmit.summary!],
- ['nsfw', (formSubmit.nsfw === 'on').toString()],
- ...tTags
- ]
+ tags: tags
}
try {
diff --git a/src/utils/blog.ts b/src/utils/blog.ts
index df11b63..306620d 100644
--- a/src/utils/blog.ts
+++ b/src/utils/blog.ts
@@ -8,8 +8,10 @@ export const extractBlogDetails = (event: NDKEvent): Partial => ({
content: event.content,
summary: getFirstTagValue(event, 'summary'),
image: getFirstTagValue(event, 'image'),
- nsfw: getFirstTagValue(event, 'nsfw') === 'true',
-
+ // Check L label namespace for content warning or nsfw (backwards compatibility)
+ nsfw:
+ getFirstTagValue(event, 'L') === 'content-warning' ||
+ getFirstTagValue(event, 'nsfw') === 'true',
id: event.id,
author: event.pubkey,
published_at: getFirstTagValueAsInt(event, 'published_at'),
From 0c7e61cadd7c16eedb3dd05739bf6ac523df0365 Mon Sep 17 00:00:00 2001
From: freakoverse
Date: Wed, 13 Nov 2024 00:21:43 +0000
Subject: [PATCH 12/29] Upload files to "src/assets/img"
---
src/assets/img/DEGM Thumb.png | Bin 283420 -> 321678 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/src/assets/img/DEGM Thumb.png b/src/assets/img/DEGM Thumb.png
index 763a04befd74e7082e938c9e10d16c9a0bfa856f..6dd67f7548a1e40b1e5f202cfed04320649326c1 100644
GIT binary patch
literal 321678
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
z
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