From 5e2b4a7ae64ff17e3507d839e76a83a0ae233833 Mon Sep 17 00:00:00 2001 From: Untone Date: Tue, 24 Sep 2024 13:09:24 +0300 Subject: [PATCH] canedit-fix --- src/components/Article/FullArticle.tsx | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/components/Article/FullArticle.tsx b/src/components/Article/FullArticle.tsx index 76cca037..8383468c 100644 --- a/src/components/Article/FullArticle.tsx +++ b/src/components/Article/FullArticle.tsx @@ -1,3 +1,4 @@ +import { AuthToken } from '@authorizerdev/authorizer-js' import { createPopper } from '@popperjs/core' import { Link } from '@solidjs/meta' import { A, useSearchParams } from '@solidjs/router' @@ -73,7 +74,6 @@ export const FullArticle = (props: Props) => { const [isActionPopupActive, setIsActionPopupActive] = createSignal(false) const { t, formatDate, lang } = useLocalize() const { session, requireAuthentication } = useSession() - const author = createMemo(() => session()?.user?.app_data?.profile as Author) const { addSeen } = useFeed() const formattedDate = createMemo(() => formatDate(new Date((props.article.published_at || 0) * 1000))) @@ -100,13 +100,18 @@ export const FullArticle = (props: Props) => { ) ) - const canEdit = createMemo( - () => - Boolean(author()?.id) && - (props.article.authors?.some((a) => Boolean(a) && a?.id === author().id) || - props.article.created_by?.id === author().id || - session()?.user?.roles?.includes('editor')) - ) + const [canEdit, setCanEdit] = createSignal(false) + createEffect(on( + () => session(), + (s?: AuthToken) => { + const profile = s?.user?.app_data?.profile + if (!profile) return + const isEditor = s?.user?.roles?.includes('editor') + const isCreator = props.article.created_by?.id === profile.id + const fit = (a: Maybe) => a?.id === profile.id || isCreator || isEditor + setCanEdit((_: boolean) => Boolean(props.article.authors?.some(fit))) + } + )) const mainTopic = createMemo(() => { const mainTopicSlug = (props.article.topics?.length || 0) > 0 ? props.article.main_topic : null @@ -534,7 +539,7 @@ export const FullArticle = (props: Props) => { /> - +