From d3cd027910083cd924b58fa5c091349af347e260 Mon Sep 17 00:00:00 2001 From: Untone Date: Mon, 16 Sep 2024 15:57:00 +0300 Subject: [PATCH] build-fix+const-fix+icon-fix+expo-fix --- package.json | 2 +- .../Article/AudioHeader/AudioHeader.module.scss | 2 +- src/components/Views/Expo/Expo.tsx | 8 +++----- src/components/Views/Home.tsx | 2 +- src/components/Views/Topic.tsx | 3 +-- src/context/feed.tsx | 2 ++ src/routes/(main).tsx | 5 +---- src/routes/expo/{[layout].tsx => [...layout].tsx} | 15 +++++++-------- src/routes/feed/[...order].tsx | 3 +-- src/routes/topic/[slug]/[...tab].tsx | 2 +- vite.config.ts | 10 ++++++---- 11 files changed, 25 insertions(+), 29 deletions(-) rename src/routes/expo/{[layout].tsx => [...layout].tsx} (78%) diff --git a/package.json b/package.json index b6ea846f..8be78d16 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "engines": { "node": ">= 20" }, - "trustedDependencies": ["@biomejs/biome", "esbuild", "protobufjs"], + "trustedDependencies": ["@biomejs/biome", "@swc/core", "esbuild", "protobufjs"], "dependencies": { "form-data": "^4.0.0", "idb": "^8.0.0", diff --git a/src/components/Article/AudioHeader/AudioHeader.module.scss b/src/components/Article/AudioHeader/AudioHeader.module.scss index b07d2c49..2c35c2d3 100644 --- a/src/components/Article/AudioHeader/AudioHeader.module.scss +++ b/src/components/Article/AudioHeader/AudioHeader.module.scss @@ -36,7 +36,7 @@ width: 200px; height: 200px; transition: all 0.2s ease-in-out; - background: var(--placeholder-color-semi) url('/icons/create-music.svg') no-repeat 50% 50%; + background: var(--placeholder-color-semi) url('/icons/create-audio.svg') no-repeat 50% 50%; .image { object-fit: cover; diff --git a/src/components/Views/Expo/Expo.tsx b/src/components/Views/Expo/Expo.tsx index 1756c444..6ecc017b 100644 --- a/src/components/Views/Expo/Expo.tsx +++ b/src/components/Views/Expo/Expo.tsx @@ -6,17 +6,17 @@ import { LoadMoreItems, LoadMoreWrapper } from '~/components/_shared/LoadMoreWra import { Loading } from '~/components/_shared/Loading' import { ArticleCardSwiper } from '~/components/_shared/SolidSwiper/ArticleCardSwiper' import { coreApiUrl } from '~/config' -import { useFeed } from '~/context/feed' +import { EXPO_LAYOUTS, SHOUTS_PER_PAGE, useFeed } from '~/context/feed' import { useLocalize } from '~/context/localize' import { useSession } from '~/context/session' import { loadShouts } from '~/graphql/api/public' import { graphqlClientCreate } from '~/graphql/client' import getRandomTopShoutsQuery from '~/graphql/query/core/articles-load-random-top' import { LoadShoutsFilters, LoadShoutsOptions, Shout } from '~/graphql/schema/core.gen' -import { SHOUTS_PER_PAGE } from '~/routes/(main)' import { LayoutType } from '~/types/common' import { getUnixtime } from '~/utils/date' import { ArticleCard } from '../../Feed/ArticleCard' + import styles from './Expo.module.scss' type Props = { @@ -38,9 +38,7 @@ export const Expo = (props: Props) => { const [reactedTopMonthArticles, setReactedTopMonthArticles] = createSignal([]) const [expoShouts, setExpoShouts] = createSignal([]) const { feedByLayout, expoFeed, setExpoFeed } = useFeed() - const layouts = createMemo(() => - props.layout ? [props.layout] : ['audio', 'video', 'image', 'literature'] - ) + const layouts = createMemo(() => (props.layout ? [props.layout] : EXPO_LAYOUTS)) const loadMoreFiltered = async () => { const limit = SHOUTS_PER_PAGE diff --git a/src/components/Views/Home.tsx b/src/components/Views/Home.tsx index 63303b2c..e0b98bb8 100644 --- a/src/components/Views/Home.tsx +++ b/src/components/Views/Home.tsx @@ -1,10 +1,10 @@ import { For, Show, createEffect, createMemo, createSignal, on } from 'solid-js' import { useAuthors } from '~/context/authors' +import { SHOUTS_PER_PAGE } from '~/context/feed' import { useLocalize } from '~/context/localize' import { useTopics } from '~/context/topics' import { loadShouts } from '~/graphql/api/public' import { Author, Shout, Topic } from '~/graphql/schema/core.gen' -import { SHOUTS_PER_PAGE } from '~/routes/(main)' import { capitalize } from '~/utils/capitalize' import { paginate } from '~/utils/paginate' import Banner from '../Discours/Banner' diff --git a/src/components/Views/Topic.tsx b/src/components/Views/Topic.tsx index 6842ce86..b64861bb 100644 --- a/src/components/Views/Topic.tsx +++ b/src/components/Views/Topic.tsx @@ -1,12 +1,11 @@ import { useSearchParams } from '@solidjs/router' import { clsx } from 'clsx' import { For, Match, Show, Suspense, Switch, createEffect, createMemo, createSignal, on } from 'solid-js' -import { useFeed } from '~/context/feed' +import { SHOUTS_PER_PAGE, useFeed } from '~/context/feed' import { useLocalize } from '~/context/localize' import { useTopics } from '~/context/topics' import { loadAuthors, loadFollowersByTopic, loadShouts } from '~/graphql/api/public' import { Author, AuthorsBy, LoadShoutsOptions, Shout, Topic } from '~/graphql/schema/core.gen' -import { SHOUTS_PER_PAGE } from '~/routes/(main)' import { getUnixtime } from '~/utils/date' import { restoreScrollPosition, saveScrollPosition } from '~/utils/scroll' import { byPublished, byStat } from '~/utils/sort' diff --git a/src/context/feed.tsx b/src/context/feed.tsx index 3e210b5a..78242c68 100644 --- a/src/context/feed.tsx +++ b/src/context/feed.tsx @@ -11,12 +11,14 @@ import { Shout, Topic } from '~/graphql/schema/core.gen' +import { LayoutType } from '~/types/common' import { graphqlClientCreate } from '../graphql/client' import { byStat } from '../utils/sort' import { useSession } from './session' export const PRERENDERED_ARTICLES_COUNT = 5 export const SHOUTS_PER_PAGE = 20 +export const EXPO_LAYOUTS = ['audio', 'literature', 'video', 'image'] as LayoutType[] type FeedContextType = { sortedFeed: Accessor diff --git a/src/routes/(main).tsx b/src/routes/(main).tsx index 9a43ac0c..0274718b 100644 --- a/src/routes/(main).tsx +++ b/src/routes/(main).tsx @@ -1,16 +1,13 @@ import { type RouteDefinition, type RouteSectionProps, createAsync } from '@solidjs/router' import { LoadMoreItems, LoadMoreWrapper } from '~/components/_shared/LoadMoreWrapper' -import { useFeed } from '~/context/feed' +import { SHOUTS_PER_PAGE, useFeed } from '~/context/feed' import { loadShouts, loadTopics } from '~/graphql/api/public' import { LoadShoutsOptions, Shout } from '~/graphql/schema/core.gen' import { HomeView, HomeViewProps } from '../components/Views/Home' import { PageLayout } from '../components/_shared/PageLayout' import { useLocalize } from '../context/localize' -export const SHOUTS_PER_PAGE = 20 - const featuredLoader = (offset?: number) => { - const SHOUTS_PER_PAGE = 20 return loadShouts({ filters: { featured: true }, limit: SHOUTS_PER_PAGE, diff --git a/src/routes/expo/[layout].tsx b/src/routes/expo/[...layout].tsx similarity index 78% rename from src/routes/expo/[layout].tsx rename to src/routes/expo/[...layout].tsx index 05857bc3..bc60e0cf 100644 --- a/src/routes/expo/[layout].tsx +++ b/src/routes/expo/[...layout].tsx @@ -1,13 +1,13 @@ import { Params, RouteSectionProps, createAsync } from '@solidjs/router' -import { createEffect, createMemo, on } from 'solid-js' +import { Show, createEffect, createMemo, on } from 'solid-js' import { TopicsNav } from '~/components/TopicsNav' import { Expo } from '~/components/Views/Expo' import { PageLayout } from '~/components/_shared/PageLayout' +import { EXPO_LAYOUTS, SHOUTS_PER_PAGE } from '~/context/feed' import { useLocalize } from '~/context/localize' import { loadShouts } from '~/graphql/api/public' import { LoadShoutsOptions, Shout } from '~/graphql/schema/core.gen' import { LayoutType } from '~/types/common' -import { SHOUTS_PER_PAGE } from '../(main)' const fetchExpoShouts = async (layouts: string[]) => { const result = await loadShouts({ @@ -20,7 +20,7 @@ const fetchExpoShouts = async (layouts: string[]) => { export const route = { load: async ({ params }: { params: Params }) => { - const layouts = params.layout ? [params.layout] : ['audio', 'literature', 'article', 'video', 'image'] + const layouts = params.layout ? [params.layout] : EXPO_LAYOUTS const shoutsLoader = await fetchExpoShouts(layouts) return (await shoutsLoader()) as Shout[] } @@ -30,10 +30,7 @@ export default (props: RouteSectionProps) => { const { t } = useLocalize() const shouts = createAsync( async () => - props.data || - (await fetchExpoShouts( - props.params.layout ? [props.params.layout] : ['audio', 'literature', 'article', 'video', 'image'] - )) + props.data || (await fetchExpoShouts(props.params.layout ? [props.params.layout] : EXPO_LAYOUTS)) ) const layout = createMemo(() => props.params.layout) const title = createMemo(() => { @@ -61,7 +58,9 @@ export default (props: RouteSectionProps) => { return ( - + + {(sss) => } + ) } diff --git a/src/routes/feed/[...order].tsx b/src/routes/feed/[...order].tsx index 8f4b67e5..1ca2fae1 100644 --- a/src/routes/feed/[...order].tsx +++ b/src/routes/feed/[...order].tsx @@ -5,14 +5,13 @@ import { Feed } from '~/components/Views/Feed' import { FeedProps } from '~/components/Views/Feed/Feed' import { LoadMoreItems, LoadMoreWrapper } from '~/components/_shared/LoadMoreWrapper' import { PageLayout } from '~/components/_shared/PageLayout' -import { useFeed } from '~/context/feed' +import { SHOUTS_PER_PAGE, useFeed } from '~/context/feed' import { useLocalize } from '~/context/localize' import { ReactionsProvider } from '~/context/reactions' import { useTopics } from '~/context/topics' import { loadShouts } from '~/graphql/api/public' import { LoadShoutsOptions, Shout, Topic } from '~/graphql/schema/core.gen' import { FromPeriod, getFromDate } from '~/lib/fromPeriod' -import { SHOUTS_PER_PAGE } from '../(main)' export type PeriodItem = { value: FromPeriod diff --git a/src/routes/topic/[slug]/[...tab].tsx b/src/routes/topic/[slug]/[...tab].tsx index 85eed590..63310a43 100644 --- a/src/routes/topic/[slug]/[...tab].tsx +++ b/src/routes/topic/[slug]/[...tab].tsx @@ -5,13 +5,13 @@ import { FourOuFourView } from '~/components/Views/FourOuFour' import { TopicFeedSortBy, TopicView } from '~/components/Views/Topic' import { Loading } from '~/components/_shared/Loading' import { PageLayout } from '~/components/_shared/PageLayout' +import { SHOUTS_PER_PAGE } from '~/context/feed' import { useLocalize } from '~/context/localize' import { useTopics } from '~/context/topics' import { loadShouts, loadTopics } from '~/graphql/api/public' import { Author, LoadShoutsOptions, Shout, Topic } from '~/graphql/schema/core.gen' import { getImageUrl } from '~/lib/getThumbUrl' import { descFromBody } from '~/utils/meta' -import { SHOUTS_PER_PAGE } from '../../(main)' const fetchTopicShouts = async (slug: string, offset?: number) => { const opts: LoadShoutsOptions = { filters: { topic: slug }, limit: SHOUTS_PER_PAGE, offset } diff --git a/vite.config.ts b/vite.config.ts index 491520d1..613881c9 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,5 @@ // biome-ignore lint/correctness/noNodejsModules: import path from 'node:path' -import sass from "sass"; import { CSSOptions } from 'vite' import mkcert from 'vite-plugin-mkcert' import { PolyfillOptions, nodePolyfills } from 'vite-plugin-node-polyfills' @@ -25,7 +24,11 @@ const polyfillOptions = { export default { resolve: { alias: { - '~': path.resolve('./src') + '~': path.resolve('./src'), + '@': path.resolve('./public'), + '/icons': path.resolve('./public/icons'), + '/fonts': path.resolve('./public/fonts'), + 'bootstrap': path.resolve('./node_modules/bootstrap') } }, envPrefix: 'PUBLIC_', @@ -34,9 +37,8 @@ export default { preprocessorOptions: { scss: { sourceMaps: false, - implementation: sass, additionalData: '@import "~/styles/imports";\n', - includePaths: ['./public', './src/styles'], + includePaths: ['./public', './src/styles', './node_modules'] } } as CSSOptions['preprocessorOptions'] },