From e46649513d485ff009027bbe61a2c5616d542112 Mon Sep 17 00:00:00 2001 From: MTG2000 Date: Mon, 13 Jun 2022 16:32:31 +0300 Subject: [PATCH] fix: fixing pre-lanuch issues - store post's body as markdown - stories page design changes - thick borders post details page - make text-editor toolbar sticky - fix update post api - change dropdown icons to emojis - remove vote/comments stats from postDetailsPage - remove "Type of post" component from createPostPage & replace it with back button - change insert tags placeholder text --- api/functions/graphql/nexus-typegen.ts | 2 +- api/functions/graphql/schema.graphql | 2 +- api/functions/graphql/types/post.js | 17 ++- public/assets/images/stw2.jfif | Bin 0 -> 43332 bytes .../Inputs/TextEditor/SaveModule.tsx | 5 +- .../Inputs/TextEditor/Toolbar/Toolbar.tsx | 10 +- src/Components/Navbar/NavDesktop.tsx | 9 +- src/Components/Navbar/NavMobile.tsx | 6 +- .../pages/HackathonsPage/HackathonsPage.tsx | 1 + .../PostCard/StoryCard/StoryCard.tsx | 2 +- .../Components/TrendingCard/TrendingCard.tsx | 2 +- .../Components/BountyForm/BountyForm.tsx | 2 +- .../ContentEditor/ContentEditor.tsx | 22 ++-- .../Components/ContentEditor/Toolbar.tsx | 10 +- .../ContentEditor/styles.module.scss | 49 +++---- .../Components/QuestionForm/QuestionForm.tsx | 2 +- .../Components/StoryForm/StoryForm.tsx | 6 +- .../Components/StoryForm/createStory.graphql | 16 +++ .../pages/CreatePostPage/CreatePostPage.tsx | 21 ++- .../Posts/pages/FeedPage/FeedPage.tsx | 55 +++++--- .../PopularTopicsFilter.tsx | 4 +- .../Posts/pages/FeedPage/SortBy/SortBy.tsx | 60 +++------ .../Posts/pages/FeedPage/styles.module.scss | 124 +++++++++++++++--- .../Components/AuthorCard/AuthorCard.tsx | 2 +- .../Components/PageContent/styles.module.css | 7 + .../Components/PostActions/PostActions.tsx | 6 +- .../StoryPageContent/StoryPageContent.tsx | 6 +- .../PreviewPostContent/PreviewPostContent.tsx | 13 +- src/graphql/index.tsx | 18 ++- tailwind.config.js | 2 +- 30 files changed, 309 insertions(+), 172 deletions(-) create mode 100644 public/assets/images/stw2.jfif diff --git a/api/functions/graphql/nexus-typegen.ts b/api/functions/graphql/nexus-typegen.ts index 9c435de..b0d01f0 100644 --- a/api/functions/graphql/nexus-typegen.ts +++ b/api/functions/graphql/nexus-typegen.ts @@ -665,7 +665,7 @@ export interface NexusGenArgTypes { } getFeed: { // args skip?: number | null; // Int - sortBy: string | null; // String + sortBy?: string | null; // String take: number | null; // Int topic?: number | null; // Int } diff --git a/api/functions/graphql/schema.graphql b/api/functions/graphql/schema.graphql index 2c56478..3c67804 100644 --- a/api/functions/graphql/schema.graphql +++ b/api/functions/graphql/schema.graphql @@ -149,7 +149,7 @@ type Query { getAllHackathons(sortBy: String, topic: Int): [Hackathon!]! getCategory(id: Int!): Category! getDonationsStats: DonationsStats! - getFeed(skip: Int = 0, sortBy: String = "all", take: Int = 10, topic: Int = 0): [Post!]! + getFeed(skip: Int = 0, sortBy: String, take: Int = 10, topic: Int = 0): [Post!]! getLnurlDetailsForProject(project_id: Int!): LnurlDetails! getPostById(id: Int!, type: POST_TYPE!): Post! getProject(id: Int!): Project! diff --git a/api/functions/graphql/types/post.js b/api/functions/graphql/types/post.js index 8bcd06c..a26088f 100644 --- a/api/functions/graphql/types/post.js +++ b/api/functions/graphql/types/post.js @@ -14,6 +14,7 @@ const { paginationArgs } = require('./helpers'); const { prisma } = require('../../../prisma'); const { getUserByPubKey } = require('../../../auth/utils/helperFuncs'); const { ApolloError } = require('apollo-server-lambda'); +const { marked } = require('marked'); const POST_TYPE = enumType({ @@ -189,7 +190,8 @@ const createStory = extendType({ // Preprocess & insert - const excerpt = body.replace(/<[^>]+>/g, '').slice(0, 120); + const htmlBody = marked.parse(body); + const excerpt = htmlBody.replace(/<[^>]+>/g, '').slice(0, 120); if (id) return prisma.story.update({ @@ -395,9 +397,7 @@ const getFeed = extendType({ type: "Post", args: { ...paginationArgs({ take: 10 }), - sortBy: stringArg({ - default: "all" - }), // all, popular, trending, newest + sortBy: stringArg(), // all, popular, trending, newest topic: intArg({ default: 0 }) @@ -405,8 +405,15 @@ const getFeed = extendType({ resolve(_, { take, skip, topic, sortBy, }) { + let orderBy = { createdAt: "desc" }; + + if (sortBy === 'popular') + orderBy = { votes_count: 'desc' }; + else if (sortBy === 'newest') + orderBy = { createdAt: "desc" }; + return prisma.story.findMany({ - orderBy: { createdAt: "desc" }, + orderBy: orderBy, where: { topic_id: topic ? topic : undefined, }, diff --git a/public/assets/images/stw2.jfif b/public/assets/images/stw2.jfif new file mode 100644 index 0000000000000000000000000000000000000000..c54e9e0393d53b82b82d0ad8ca7acf33e537f0ae GIT binary patch literal 43332 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

Q!j)JW@CEEEx`*8)O>ub{8!%f1k^R=Nh= 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 T#PRnn`1=<8zuQ { const { state } = ctx; - onChange(getHTML(state)); + const md = getMarkdown(state); + console.log(md); + + onChange(md); }, [], 500) useRemirrorContext(changeCallback) diff --git a/src/Components/Inputs/TextEditor/Toolbar/Toolbar.tsx b/src/Components/Inputs/TextEditor/Toolbar/Toolbar.tsx index 265bbb5..999a1bb 100644 --- a/src/Components/Inputs/TextEditor/Toolbar/Toolbar.tsx +++ b/src/Components/Inputs/TextEditor/Toolbar/Toolbar.tsx @@ -9,17 +9,17 @@ export default function Toolbar() { - -

- + {/* - + */} + + - + {/* */}
diff --git a/src/Components/Navbar/NavDesktop.tsx b/src/Components/Navbar/NavDesktop.tsx index 2891a60..819907a 100644 --- a/src/Components/Navbar/NavDesktop.tsx +++ b/src/Components/Navbar/NavDesktop.tsx @@ -74,7 +74,8 @@ export default function NavDesktop() { className='!p-16 font-medium flex gap-16 hover:bg-gray-100 !rounded-12 ' >
- + {/* */} + ✍🏼

@@ -87,10 +88,10 @@ export default function NavDesktop() {

- + 💬

@@ -110,7 +111,7 @@ export default function NavDesktop() { className='!p-16 font-medium flex gap-16 hover:bg-gray-100 !rounded-12' >

- + 🏆

diff --git a/src/Components/Navbar/NavMobile.tsx b/src/Components/Navbar/NavMobile.tsx index 7d7ff38..1bbf402 100644 --- a/src/Components/Navbar/NavMobile.tsx +++ b/src/Components/Navbar/NavMobile.tsx @@ -181,7 +181,7 @@ export default function NavMobile() { className='font-medium flex gap-16 !rounded-12 ' >

- + ✍🏼

@@ -197,7 +197,7 @@ export default function NavMobile() { className='font-medium flex gap-16 !rounded-12 opacity-60' >

- + 💬

@@ -214,7 +214,7 @@ export default function NavMobile() { className='font-medium flex gap-16 !rounded-12' >

- + 🏆

diff --git a/src/features/Hackathons/pages/HackathonsPage/HackathonsPage.tsx b/src/features/Hackathons/pages/HackathonsPage/HackathonsPage.tsx index c8875d0..fb7ba5a 100644 --- a/src/features/Hackathons/pages/HackathonsPage/HackathonsPage.tsx +++ b/src/features/Hackathons/pages/HackathonsPage/HackathonsPage.tsx @@ -39,6 +39,7 @@ export default function HackathonsPage() { top: `${navHeight + 16}px`, maxHeight: `calc(100vh - ${navHeight}px - 16px)`, }}> +

Hackathons 🏆

diff --git a/src/features/Posts/Components/PostCard/StoryCard/StoryCard.tsx b/src/features/Posts/Components/PostCard/StoryCard/StoryCard.tsx index 20bc706..19c9b65 100644 --- a/src/features/Posts/Components/PostCard/StoryCard/StoryCard.tsx +++ b/src/features/Posts/Components/PostCard/StoryCard/StoryCard.tsx @@ -36,7 +36,7 @@ export default function StoryCard({ story }: Props) {

{story.title}

-

{story.excerpt}

+

{story.excerpt}...


diff --git a/src/features/Posts/Components/TrendingCard/TrendingCard.tsx b/src/features/Posts/Components/TrendingCard/TrendingCard.tsx index b8c7074..5b5bc67 100644 --- a/src/features/Posts/Components/TrendingCard/TrendingCard.tsx +++ b/src/features/Posts/Components/TrendingCard/TrendingCard.tsx @@ -11,7 +11,7 @@ export default function TrendingCard() { return ( -
+

Trending on BOLT.FUN

    { diff --git a/src/features/Posts/pages/CreatePostPage/Components/BountyForm/BountyForm.tsx b/src/features/Posts/pages/CreatePostPage/Components/BountyForm/BountyForm.tsx index 1a90e8c..017bd37 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/BountyForm/BountyForm.tsx +++ b/src/features/Posts/pages/CreatePostPage/Components/BountyForm/BountyForm.tsx @@ -156,7 +156,7 @@ export default function BountyForm() { Tags

    {errors.tags &&

    diff --git a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/ContentEditor.tsx b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/ContentEditor.tsx index 223a0df..a9830c7 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/ContentEditor.tsx +++ b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/ContentEditor.tsx @@ -40,16 +40,6 @@ interface Props { export default function ContentEditor({ placeholder, initialContent, name }: Props) { - const linkExtension = useMemo(() => { - const extension = new LinkExtension({ autoLink: true }); - extension.addHandler('onClick', (_, data) => { - window.open(data.href, '_blank')?.focus(); - return true; - }); - return extension; - }, []); - - const onError: InvalidContentHandler = useCallback(({ json, invalidContent, transformers }) => { // Automatically remove all invalid nodes and marks. return transformers.remove(json, invalidContent); @@ -59,7 +49,13 @@ export default function ContentEditor({ placeholder, initialContent, name }: Pro const extensions = useCallback( () => [ new PlaceholderExtension({ placeholder }), - linkExtension, + new LinkExtension({ + autoLink: true, + defaultTarget: "_blank", + extraAttributes: { + rel: 'noopener noreferrer' + } + }), new BoldExtension(), // new StrikeExtension(), new UnderlineExtension(), @@ -78,7 +74,7 @@ export default function ContentEditor({ placeholder, initialContent, name }: Pro new IframeExtension(), // new TrailingNodeExtension(), // new TableExtension(), - new MarkdownExtension({ copyAsMarkdown: false }), + new MarkdownExtension({ copyAsMarkdown: true, }), new NodeFormattingExtension(), /** * `HardBreakExtension` allows us to create a newline inside paragraphs. @@ -86,7 +82,7 @@ export default function ContentEditor({ placeholder, initialContent, name }: Pro */ new HardBreakExtension(), ], - [linkExtension, placeholder], + [placeholder], ); diff --git a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/Toolbar.tsx b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/Toolbar.tsx index 394a11b..997322f 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/Toolbar.tsx +++ b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/Toolbar.tsx @@ -7,19 +7,19 @@ interface Props { export default function Toolbar() { return ( -

    +
    - -
    - + {/* - + */} + + diff --git a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/styles.module.scss b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/styles.module.scss index 62837de..8ec37c4 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/styles.module.scss +++ b/src/features/Posts/pages/CreatePostPage/Components/ContentEditor/styles.module.scss @@ -1,28 +1,33 @@ .wrapper { - - :global{ + :global { + .ProseMirror { + overflow: hidden; + border-bottom-left-radius: inherit; + border-bottom-right-radius: inherit; + min-height: var(--rmr-space-7); - .ProseMirror { - overflow: hidden; - border-bottom-left-radius: inherit; - border-bottom-right-radius: inherit; - min-height: var(--rmr-space-7); + a { + color: rgb(54, 139, 236); - a{ - color: rgb(54, 139, 236); - - &:hover{ - text-decoration: underline; - cursor: pointer; - } - } - } - - .ProseMirror, - .ProseMirror:active, - .ProseMirror:focus{ - box-shadow: none; + &:hover { + text-decoration: underline; + cursor: pointer; } + } + } + .remirror-editor-wrapper { + height: 60vh; + overflow-y: scroll; + + &::-webkit-scrollbar { + width: 8px; + } } -} \ No newline at end of file + .ProseMirror, + .ProseMirror:active, + .ProseMirror:focus { + box-shadow: none; + } + } +} diff --git a/src/features/Posts/pages/CreatePostPage/Components/QuestionForm/QuestionForm.tsx b/src/features/Posts/pages/CreatePostPage/Components/QuestionForm/QuestionForm.tsx index 63f8dbf..7a5d86f 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/QuestionForm/QuestionForm.tsx +++ b/src/features/Posts/pages/CreatePostPage/Components/QuestionForm/QuestionForm.tsx @@ -96,7 +96,7 @@ export default function QuestionForm() { Tags

    {errors.tags &&

    diff --git a/src/features/Posts/pages/CreatePostPage/Components/StoryForm/StoryForm.tsx b/src/features/Posts/pages/CreatePostPage/Components/StoryForm/StoryForm.tsx index 3f8a55b..4d216a0 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/StoryForm/StoryForm.tsx +++ b/src/features/Posts/pages/CreatePostPage/Components/StoryForm/StoryForm.tsx @@ -108,7 +108,7 @@ export default function StoryForm() { createStory({ variables: { data: { - id: null, + id: data.id, title: data.title, body: data.body, tags: data.tags.map(t => t.title), @@ -127,7 +127,7 @@ export default function StoryForm() { onSubmit={handleSubmit(onSubmit)} >

    + className='bg-white border-2 border-gray-100 rounded-12 overflow-hidden'>
    {errors.tags &&

    diff --git a/src/features/Posts/pages/CreatePostPage/Components/StoryForm/createStory.graphql b/src/features/Posts/pages/CreatePostPage/Components/StoryForm/createStory.graphql index 89b9ff0..17ad596 100644 --- a/src/features/Posts/pages/CreatePostPage/Components/StoryForm/createStory.graphql +++ b/src/features/Posts/pages/CreatePostPage/Components/StoryForm/createStory.graphql @@ -1,6 +1,22 @@ mutation createStory($data: StoryInputType) { createStory(data: $data) { id + title + createdAt + body + tags { + id + title + } + topic { + id + title + icon + } + votes_count + type + cover_image + comments_count } } diff --git a/src/features/Posts/pages/CreatePostPage/CreatePostPage.tsx b/src/features/Posts/pages/CreatePostPage/CreatePostPage.tsx index 12fe4c2..ddd48f3 100644 --- a/src/features/Posts/pages/CreatePostPage/CreatePostPage.tsx +++ b/src/features/Posts/pages/CreatePostPage/CreatePostPage.tsx @@ -1,6 +1,7 @@ import { useState } from "react"; import { Helmet } from "react-helmet"; -import { useParams } from "react-router-dom"; +import { FiArrowLeft } from "react-icons/fi"; +import { useNavigate, useParams } from "react-router-dom"; import BountyForm from "./Components/BountyForm/BountyForm"; import QuestionForm from "./Components/QuestionForm/QuestionForm"; import StoryForm from "./Components/StoryForm/StoryForm"; @@ -15,19 +16,29 @@ export default function CreatePostPage() { const { type } = useParams() const [postType, setPostType] = useState<'story' | 'bounty' | 'question'>((type as any) ?? 'story'); + const navigate = useNavigate(); return (<> Create Post

    -
    - +
    + {/* */} +
    -
    +
    {postType === 'story' && <>

    Write a Story diff --git a/src/features/Posts/pages/FeedPage/FeedPage.tsx b/src/features/Posts/pages/FeedPage/FeedPage.tsx index ce2b3bd..3a6519a 100644 --- a/src/features/Posts/pages/FeedPage/FeedPage.tsx +++ b/src/features/Posts/pages/FeedPage/FeedPage.tsx @@ -11,6 +11,7 @@ import SortBy from './SortBy/SortBy' import styles from './styles.module.scss' import { Helmet } from "react-helmet"; import Button from 'src/Components/Button/Button' +import { FaDiscord } from 'react-icons/fa' export default function FeedPage() { @@ -45,7 +46,21 @@ export default function FeedPage() {
    -
    diff --git a/src/features/Posts/pages/FeedPage/PopularTopicsFilter/PopularTopicsFilter.tsx b/src/features/Posts/pages/FeedPage/PopularTopicsFilter/PopularTopicsFilter.tsx index 74bb0bb..57fd32c 100644 --- a/src/features/Posts/pages/FeedPage/PopularTopicsFilter/PopularTopicsFilter.tsx +++ b/src/features/Posts/pages/FeedPage/PopularTopicsFilter/PopularTopicsFilter.tsx @@ -28,8 +28,8 @@ export default function PopularTopicsFilter({ filterChanged }: Props) { return (
    {isMdScreen ? -
    -

    Topics

    +
    +

    Explore Categories

      {topicsQuery.loading ? Array(3).fill(0).map((_, idx) =>
    • >(filters[0].value); + const [selected, setSelected] = useState>(null); const filterClicked = (_newValue: string | null) => { const newValue = selected !== _newValue ? _newValue : null; @@ -31,42 +31,20 @@ export default function SortBy({ filterChanged }: Props) { filterChanged?.(newValue); } - - const isMdScreen = useMediaQuery(MEDIA_QUERIES.isMedium) - - - return ( - <> - { - isMdScreen ? -
      - < p className="text-body2 font-bolder text-black mb-16" > Sort By

      -
        - {filters.map((f, idx) =>
      • filterClicked(f.value)} - role='button' - > - {f.text} -
      • )} -
      -
      - : - filterClicked(o ? o.value : null)} /> - } +
        + {filters.map((f, idx) =>
      • filterClicked(f.value)} + role='button' + > + {f.text} +
      • )} +
      ) } diff --git a/src/features/Posts/pages/FeedPage/styles.module.scss b/src/features/Posts/pages/FeedPage/styles.module.scss index 763140a..21ac30e 100644 --- a/src/features/Posts/pages/FeedPage/styles.module.scss +++ b/src/features/Posts/pages/FeedPage/styles.module.scss @@ -1,32 +1,114 @@ +// .grid { +// display: grid; +// grid-template-columns: 100%; +// gap: 24px; +// > aside:last-of-type { +// display: none; +// } + +// @media screen and (min-width: 768px) { +// grid-template-columns: repeat(4, 1fr); + +// > aside:first-of-type { +// grid-column: 1/2; +// } +// > main { +// grid-column: 2/-1; +// } +// } + +// @media screen and (min-width: 1024px) { +// > aside:first-of-type { +// grid-column: 1/2; +// } +// > main { +// grid-column: 2/-2; +// } +// > aside:last-of-type { +// display: block; +// grid-column: -1/-2; +// } +// } +// } + +@import "/src/styles/mixins"; + .grid { display: grid; - grid-template-columns: 100%; - gap: 24px; - > aside:last-of-type { - display: none; + // grid-template-columns: 1fr; + gap: 32px; + + & > * { + min-width: 0; + } + + grid-template-areas: + "title" + "sort-by" + "categories" + "content"; + + :global { + #title { + grid-area: title; + } + + #sort-by { + grid-area: sort-by; + } + #categories { + grid-area: categories; + } + #content { + grid-area: content; + } + #side { + grid-area: side; + display: none; + } } @media screen and (min-width: 768px) { grid-template-columns: repeat(4, 1fr); - > aside:first-of-type { - grid-column: 1/2; - } - > main { - grid-column: 2/-1; + grid-template-areas: + "categories title title side" + "categories sort-by sort-by side" + "categories content content side"; + + :global { + #side { + display: block; + } } } - @media screen and (min-width: 1024px) { - > aside:first-of-type { - grid-column: 1/2; - } - > main { - grid-column: 2/-2; - } - > aside:last-of-type { - display: block; - grid-column: -1/-2; - } - } + // @media screen and (min-width: 1024px) { + // > aside:first-of-type { + // grid-column: 1/2; + // } + // > main { + // grid-column: 2/-2; + // } + // > aside:last-of-type { + // display: block; + // grid-column: -1/-2; + // } + // } + + // @include gt-md { + // grid-template-columns: auto 1fr; + // grid-template-areas: + // "actions content" + // ". author" + // ". comments"; + // } + + // @include gt-lg { + // grid-template-columns: auto 1fr calc(min(30%, 326px)); + // grid-template-areas: + // "actions content author" + // ". comments ." + // ". . ."; + // } } diff --git a/src/features/Posts/pages/PostDetailsPage/Components/AuthorCard/AuthorCard.tsx b/src/features/Posts/pages/PostDetailsPage/Components/AuthorCard/AuthorCard.tsx index aa91839..922487c 100644 --- a/src/features/Posts/pages/PostDetailsPage/Components/AuthorCard/AuthorCard.tsx +++ b/src/features/Posts/pages/PostDetailsPage/Components/AuthorCard/AuthorCard.tsx @@ -15,7 +15,7 @@ interface Props { export default function AuthorCard({ author }: Props) { return ( -
      +
      diff --git a/src/features/Posts/pages/PostDetailsPage/Components/PageContent/styles.module.css b/src/features/Posts/pages/PostDetailsPage/Components/PageContent/styles.module.css index 3f94af8..1afeebc 100644 --- a/src/features/Posts/pages/PostDetailsPage/Components/PageContent/styles.module.css +++ b/src/features/Posts/pages/PostDetailsPage/Components/PageContent/styles.module.css @@ -35,6 +35,13 @@ margin-bottom: 1.5em; } +.body a { + color: rgb(107, 107, 249); +} +.body a:hover { + text-decoration: underline; +} + .body pre { background-color: #2b2b2b; padding: 16px; diff --git a/src/features/Posts/pages/PostDetailsPage/Components/PostActions/PostActions.tsx b/src/features/Posts/pages/PostDetailsPage/Components/PostActions/PostActions.tsx index 072532d..ff5b9af 100644 --- a/src/features/Posts/pages/PostDetailsPage/Components/PostActions/PostActions.tsx +++ b/src/features/Posts/pages/PostDetailsPage/Components/PostActions/PostActions.tsx @@ -38,20 +38,20 @@ export default function PostActions({ post, isPreview }: Props) { return (
      - {/*
        + {/*
        */} -
          +
            {actions.map((action, idx) =>
          • -
            +
            {curUser?.id === story.author.id && }> @@ -54,14 +54,14 @@ export default function StoryPageContent({ story }: Props) { {tag.title} )}
            } -
            + {/*
            {numberFormatter(story.votes_count)} votes
            {story.comments_count} Comments
            -
            +
            */}
            diff --git a/src/features/Posts/pages/PreviewPostPage/PreviewPostContent/PreviewPostContent.tsx b/src/features/Posts/pages/PreviewPostPage/PreviewPostContent/PreviewPostContent.tsx index c5ae1c6..76f7fe2 100644 --- a/src/features/Posts/pages/PreviewPostPage/PreviewPostContent/PreviewPostContent.tsx +++ b/src/features/Posts/pages/PreviewPostPage/PreviewPostContent/PreviewPostContent.tsx @@ -2,9 +2,6 @@ import Header from "src/features/Posts/Components/PostCard/Header/Header" import { marked } from 'marked'; import styles from '../../PostDetailsPage/Components/PageContent/styles.module.css' import Badge from "src/Components/Badge/Badge"; -import { BiComment } from "react-icons/bi"; -import { RiFlashlightLine } from "react-icons/ri"; -import { numberFormatter } from "src/utils/helperFunctions"; import { Post } from "src/graphql"; @@ -31,17 +28,9 @@ export default function PreviewPostContent({ post }: Props) { {tag.title} )}
            } -
            -
            - {numberFormatter(123)} votes -
            -
            - {17} Comments -
            -
      -
      +
      {/*
      diff --git a/src/graphql/index.tsx b/src/graphql/index.tsx index b1525b4..8fe7e9f 100644 --- a/src/graphql/index.tsx +++ b/src/graphql/index.tsx @@ -465,7 +465,7 @@ export type CreateStoryMutationVariables = Exact<{ }>; -export type CreateStoryMutation = { __typename?: 'Mutation', createStory: { __typename?: 'Story', id: number } | null }; +export type CreateStoryMutation = { __typename?: 'Mutation', createStory: { __typename?: 'Story', id: number, title: string, createdAt: any, body: string, votes_count: number, type: string, cover_image: string, comments_count: number, tags: Array<{ __typename?: 'Tag', id: number, title: string }>, topic: { __typename?: 'Topic', id: number, title: string, icon: string } } | null }; export type DeleteStoryMutationVariables = Exact<{ deleteStoryId: Scalars['Int']; @@ -927,6 +927,22 @@ export const CreateStoryDocument = gql` mutation createStory($data: StoryInputType) { createStory(data: $data) { id + title + createdAt + body + tags { + id + title + } + topic { + id + title + icon + } + votes_count + type + cover_image + comments_count } } `; diff --git a/tailwind.config.js b/tailwind.config.js index 7324c82..5676e3a 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -31,7 +31,7 @@ module.exports = { }, fontSize: { h1: ["48px", "54px"], - h2: ["36px", "50px"], + h2: ["32px", "44px"], h3: ["29px", "40px"], h4: ["22px", "31px"], h5: ["19px", "26px"],