From f0baefb66f8bdfefaaf5d1fa03bba880d096d9ab Mon Sep 17 00:00:00 2001 From: Clovis Date: Tue, 29 Nov 2022 16:53:12 +0100 Subject: [PATCH] Change landing page --- app/soapbox/actions/instance.ts | 4 +- app/soapbox/features/landing_page/index.tsx | 46 +++++++++++++++++-- .../public_layout/components/header.tsx | 11 ----- app/soapbox/features/soapbox_config/index.tsx | 14 ++++++ app/soapbox/locales/fr.json | 3 ++ app/soapbox/normalizers/instance.ts | 1 + .../normalizers/soapbox/soapbox_config.ts | 1 + app/soapbox/reducers/instance.ts | 10 ++-- 8 files changed, 69 insertions(+), 21 deletions(-) diff --git a/app/soapbox/actions/instance.ts b/app/soapbox/actions/instance.ts index 60a6b2e89..317a88e03 100644 --- a/app/soapbox/actions/instance.ts +++ b/app/soapbox/actions/instance.ts @@ -42,9 +42,7 @@ export const fetchInstance = createAsyncThunk( async(_arg, { dispatch, getState, rejectWithValue }) => { try { const { data: instance } = await api(getState).get('/api/v1/instance'); - if (needsNodeinfo(instance)) { - dispatch(fetchNodeinfo()); - } + dispatch(fetchNodeinfo()); return instance; } catch (e) { return rejectWithValue(e); diff --git a/app/soapbox/features/landing_page/index.tsx b/app/soapbox/features/landing_page/index.tsx index 1e3b01f80..8a7cadaba 100644 --- a/app/soapbox/features/landing_page/index.tsx +++ b/app/soapbox/features/landing_page/index.tsx @@ -1,12 +1,16 @@ +import Immutable from 'immutable'; import * as React from 'react'; import { FormattedMessage } from 'react-intl'; +import { fetchAccount } from 'soapbox/actions/accounts'; import { prepareRequest } from 'soapbox/actions/consumer-auth'; import { Button, Card, CardBody, Stack, Text } from 'soapbox/components/ui'; +import Account from 'soapbox/components/account'; import VerificationBadge from 'soapbox/components/verification_badge'; import RegistrationForm from 'soapbox/features/auth_login/components/registration_form'; import { useAppDispatch, useAppSelector, useFeatures, useSoapboxConfig } from 'soapbox/hooks'; import { capitalize } from 'soapbox/utils/strings'; +import { List as ImmutableList } from 'immutable'; const LandingPage = () => { const dispatch = useAppDispatch(); @@ -15,8 +19,28 @@ const LandingPage = () => { const pepeEnabled = soapboxConfig.getIn(['extensions', 'pepe', 'enabled']) === true; const instance = useAppSelector((state) => state.instance); + const accounts = useAppSelector((state) => state.accounts); const pepeOpen = useAppSelector(state => state.verification.instance.get('registrations') === true); + React.useEffect(() => { + const staff = (instance.pleroma.getIn(["metadata", "staff_accounts"]) as ImmutableList).map((s) => s.split('/').pop()); + staff.forEach((s) => dispatch(fetchAccount(s))); + }, [instance, dispatch]); + + const staffAccounts = React.useMemo(() => { + if(accounts == null) return []; + const a = Object.values(accounts?.toJSON()).filter((a) => a.admin || a.moderator); + console.log(a); + return a; + }, [accounts]); + + const userCount = instance.stats.get('user_count'); + + const homeDescription = React.useMemo(() => { + const format = new Intl.NumberFormat().format(userCount); + return soapboxConfig.homeDescription.replace('[users]', format); + }, [userCount, soapboxConfig]); + /** Registrations are closed */ const renderClosed = () => { return ( @@ -107,14 +131,30 @@ const LandingPage = () => {
- +

{instance.title}

- - {instance.description} + { + homeDescription ? : instance.description + } +
+
+

+ +

+
+ + {instance.email} + + + { + staffAccounts.map((s) => ) + } + +
diff --git a/app/soapbox/features/public_layout/components/header.tsx b/app/soapbox/features/public_layout/components/header.tsx index 51e7f62a6..6308824ce 100644 --- a/app/soapbox/features/public_layout/components/header.tsx +++ b/app/soapbox/features/public_layout/components/header.tsx @@ -76,17 +76,6 @@ const Header = () => {