-
{t('title')}
-
e.g., books: made from trees or pixels. recommendations, news, or thoughts
-
-
+
full settings data
+
quickly copy or paste the community settings
+
+
-
-
{t('description')}
-
shown in the sidebar of your community
-
-
-
-
-
-
logo
-
set a community logo using its direct image link (ending in .jpg, .png)
-
-
-
-
-
-
{t('rules')}
-
shown in the sidebar of your community
-
-
-
-
-
-
{t('moderators')}
-
let other users moderate and post without challenges
-
-
-
-
-
-
{t('challenge')}
-
choose a challenge to prevent spam
-
-
-
+
+
);
diff --git a/src/views/subplebbit/subplebbit.tsx b/src/views/subplebbit/subplebbit.tsx
index cdc99ebd..042177ce 100644
--- a/src/views/subplebbit/subplebbit.tsx
+++ b/src/views/subplebbit/subplebbit.tsx
@@ -35,7 +35,7 @@ const Subplebbit = () => {
let footerContent;
if (feed.length === 0) {
- footerContent = 'no posts';
+ footerContent = t('no_posts');
}
if (hasMore || subplebbitAddresses.length === 0) {
diff --git a/src/views/subplebbits/subplebbits.module.css b/src/views/subplebbits/subplebbits.module.css
index 042b7e33..ec9edf99 100644
--- a/src/views/subplebbits/subplebbits.module.css
+++ b/src/views/subplebbits/subplebbits.module.css
@@ -155,6 +155,10 @@
font-size: 14px;
}
+.tagline {
+ text-transform: lowercase;
+}
+
.subplebbitPreferences {
padding: 0 1px;
line-height: 1.6em;
diff --git a/src/views/subplebbits/subplebbits.tsx b/src/views/subplebbits/subplebbits.tsx
index 30d3690c..8d4b01ee 100644
--- a/src/views/subplebbits/subplebbits.tsx
+++ b/src/views/subplebbits/subplebbits.tsx
@@ -1,15 +1,23 @@
import { useEffect, useMemo } from 'react';
import { Link, useLocation } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
-import { Subplebbit as SubplebbitType, useAccountSubplebbits, useSubplebbitStats } from '@plebbit/plebbit-react-hooks';
+import { Subplebbit as SubplebbitType, useAccount, useAccountSubplebbits, useSubplebbits, useSubplebbitStats } from '@plebbit/plebbit-react-hooks';
import styles from './subplebbits.module.css';
import Sidebar from '../../components/sidebar';
import SubscribeButton from '../../components/subscribe-button';
import { getFormattedTimeDuration, getFormattedTimeAgo } from '../../lib/utils/time-utils';
-import { isSubplebbitsMineContributorView, isSubplebbitsMineSubscriberView, isSubplebbitsMineModeratorView } from '../../lib/utils/view-utils';
+import {
+ isSubplebbitsView,
+ isSubplebbitsMineView,
+ isSubplebbitsMineContributorView,
+ isSubplebbitsMineSubscriberView,
+ isSubplebbitsMineModeratorView,
+} from '../../lib/utils/view-utils';
+import { useDefaultSubplebbitAddresses } from '../../lib/utils/addresses-utils';
interface SubplebbitProps {
- subplebbit: SubplebbitType;
+ index?: number;
+ subplebbit: SubplebbitType | undefined;
}
const Tabs = () => {
@@ -21,11 +29,7 @@ const Tabs = () => {
return (
-
e.preventDefault()} // TODO: enable after useSubplebbits cache is implemented in the API
- >
+
subscriber
|
@@ -83,7 +87,7 @@ const Subplebbit = ({ subplebbit }: SubplebbitProps) => {
const postScore = upvoteCount === 0 && downvoteCount === 0 ? '•' : upvoteCount - downvoteCount || '•';
const isOnline = updatedAt && updatedAt > Date.now() / 1000 - 60 * 30;
- const offlineNotice = updatedAt && t('community_last_seen', { dateAgo: getFormattedTimeAgo(updatedAt) });
+ const offlineNotice = updatedAt && t('posts_last_synced', { dateAgo: getFormattedTimeAgo(updatedAt) });
useEffect(() => {
document.title = `${t('communities')} - seedit`;
@@ -106,7 +110,7 @@ const Subplebbit = ({ subplebbit }: SubplebbitProps) => {
- p/{address.includes('.') ? address : shortAddress}
+ p/{address?.includes('.') ? address : shortAddress}
{title && `: ${title}`}
@@ -133,18 +137,44 @@ const Subplebbit = ({ subplebbit }: SubplebbitProps) => {
);
};
-const Subplebbits = () => {
+const AccountSubplebbits = () => {
const { accountSubplebbits } = useAccountSubplebbits();
const accountSubplebbitsArray = useMemo(() => Object.values(accountSubplebbits), [accountSubplebbits]);
+ return accountSubplebbitsArray?.map((subplebbit, index) => );
+};
+
+const SubscriberSubplebbits = () => {
+ const account = useAccount();
+ const { subplebbits } = useSubplebbits({ subplebbitAddresses: account?.subscriptions || [] });
+ const subplebbitsArray = useMemo(() => Object.values(subplebbits), [subplebbits]);
+ return subplebbitsArray?.map((subplebbit, index) => );
+};
+
+const ApprovedSubplebbits = () => {
+ const defaultSubplebbitAddresses = useDefaultSubplebbitAddresses();
+ const { subplebbits } = useSubplebbits({ subplebbitAddresses: defaultSubplebbitAddresses || [] });
+ const subplebbitsArray = useMemo(() => Object.values(subplebbits), [subplebbits]);
+ return subplebbitsArray?.map((subplebbit, index) => );
+};
+
+const Subplebbits = () => {
+ const location = useLocation();
+ const isInSubplebbitsMineSubscriberView = isSubplebbitsMineSubscriberView(location.pathname);
+ const isInSubplebbitsMineModeratorView = isSubplebbitsMineModeratorView(location.pathname);
+ const isInSubplebbitsView = isSubplebbitsView(location.pathname) && !isInSubplebbitsMineSubscriberView && !isInSubplebbitsMineModeratorView;
+ const isInSubplebbitsMineView = isSubplebbitsMineView(location.pathname);
return (
-
+
+ {(isInSubplebbitsMineView || isInSubplebbitsMineModeratorView || isInSubplebbitsMineSubscriberView) &&
}
- {accountSubplebbitsArray?.map((subplebbit) =>
)}
+ {isInSubplebbitsView &&
}
+ {isInSubplebbitsMineModeratorView &&
}
+ {isInSubplebbitsMineSubscriberView &&
}
);
};