From bca2f2e23a1b4ac0394ccfb1a43d30ce2d7d088d Mon Sep 17 00:00:00 2001 From: sevichecc <91365763+Sevichecc@users.noreply.github.com> Date: Fri, 14 Apr 2023 22:20:38 +0800 Subject: [PATCH] refactor: StatusContent component --- src/api.ts | 2 +- src/components/StatusContent.tsx | 15 ++++++------ src/simple-status.tsx | 40 +++++++++----------------------- 3 files changed, 20 insertions(+), 37 deletions(-) diff --git a/src/api.ts b/src/api.ts index de43429..0c18044 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,7 +1,7 @@ import fetch from "node-fetch"; import { OAuth, getPreferenceValues } from "@raycast/api"; import { Credentials, Preference, Status ,StatusResponse} from "./types"; -import { authorize, client } from "./oauth"; +import { client } from "./oauth"; export const fetchToken = async (params: URLSearchParams, errorMessage: string): Promise => { const { instance } = getPreferenceValues(); diff --git a/src/components/StatusContent.tsx b/src/components/StatusContent.tsx index ab4eb38..6dbdd1b 100644 --- a/src/components/StatusContent.tsx +++ b/src/components/StatusContent.tsx @@ -1,14 +1,15 @@ import { useState } from "react"; import { Form } from "@raycast/api"; -interface StatusContentProps { +interface statusProps { isMarkdown: boolean; + draftStatus: string | undefined; } -const StatusContent = ({ isMarkdown }: StatusContentProps) => { - const [statusContent, setStatusContent] = useState(""); - const [error, setError] = useState(""); - +const StatusContent = ({ isMarkdown, draftStatus }: statusProps) => { + const [error, setError] = useState(false); + const [statusContent, setStatusContent] = useState(draftStatus || ""); + return ( <> { enableMarkdown={isMarkdown} autoFocus={true} value={statusContent} - error={error} + error={error ? "Content should not be empty!" : ""} onChange={setStatusContent} onBlur={() => { - setError(!statusContent ? "content should't be empty!" : ""); + setError(!statusContent.trim()); }} /> diff --git a/src/simple-status.tsx b/src/simple-status.tsx index e833d59..f35e12f 100644 --- a/src/simple-status.tsx +++ b/src/simple-status.tsx @@ -1,35 +1,29 @@ import { useEffect, useState } from "react"; -import { Form, ActionPanel, Action, showToast, popToRoot, LaunchProps,Toast } from "@raycast/api"; +import { Form, ActionPanel, Action, showToast, popToRoot, LaunchProps, Toast } from "@raycast/api"; import { postNewStatus } from "./api"; import { Status } from "./types"; import { authorize } from "./oauth"; import VisibilityDropdown from "./components/VisibilityDropdown"; +import StatusContent from "./components/statusContent"; export default function Command(props: LaunchProps<{ draftValues: Partial }>) { const { draftValues } = props; - const [statusContent, setStatusContent] = useState(draftValues?.status || ""); const [cw, setCw] = useState(draftValues?.spoiler_text || ""); const [isMarkdown, setIsMarkdown] = useState(true); - const [error, setError] = useState(false); useEffect(() => { authorize(); }, []); - const handleSubmit = async () => { + const handleSubmit = async (values: Partial) => { try { - const newStatus: Partial = { - spoiler_text: cw, - status: statusContent, + await postNewStatus({ + ...values, content_type: isMarkdown ? "text/markdown" : "text/plain", - visibility: "direct", - }; + }); - console.log(newStatus); - await postNewStatus(newStatus); - setCw('') - setStatusContent('') - showToast({ title: "Submitted form", message: "Status has been posted!" }); + setCw(""); + showToast({ title: "Success", message: "Status has been posted!" }); popToRoot(); } catch (error) { console.error(error); @@ -47,22 +41,10 @@ export default function Command(props: LaunchProps<{ draftValues: Partial - { - setError(!statusContent); - }} - /> - {/* */} + +