چگونه یک پسوند Raycast سفارشی برای دسترسی به مقالات Dev.to بسازیم

در این آموزش، ما یک افزونه Raycast سفارشی می سازیم که آخرین مقالات را از Dev.to دریافت می کند و در یک لیست نمایش می دهد و مقاله انتخاب شده را در مرورگر باز می کند.
برای کسب اطلاعات بیشتر در مورد سیستم مورد نیاز برای شروع ساخت برنامه های افزودنی، از Raycast Doc دیدن کنید.
یک پسوند جدید ایجاد کنید
- باز کن پسوند ایجاد کنید دستور در Raycast
- قالب را انتخاب کنید لیست ایستا
- پسوند خود را نام ببرید مقالات Devto
- دستور را نام ببرید آخرین مقالات
- کلیک پسوند ایجاد کنید از گوشه سمت راست پایین
با این کار یک دایرکتوری جدید به نام ایجاد می شود devto-articles در فهرست برنامه های افزودنی شما
وابستگی ها را نصب کنید
حالا بیایید وارد کد شویم.
دایرکتوری افزونه را باز کنید devto-articles در ویرایشگر کد مورد علاقه شما
با اجرای دستور زیر وابستگی ها را نصب کنید:
npm install
قبل از ادامه، اجازه دهید آن را نصب کنیم @raycast/api بسته بندی این شامل مجموعه ای از مؤلفه ها است که ساخت برنامه های افزودنی را آسان تر می کند.
npm install @raycast/utils
پسوند را بسازید
اکنون ما آماده شروع ساختن افزونه هستیم.
باز کن src/index.tsx فایل، اینجا جایی است که ما کدی را می نویسیم که آخرین مقالات را از Dev.to دریافت می کند و آنها را در یک لیست نمایش می دهد.
کد موجود را از قسمت حذف کنید src/index.tsx تا بتوانیم از صفر شروع کنیم.
حالا بیایید وارد کنیم useFetch قلاب از @raycast/utils. useFetch می تواند برای واکشی داده ها از یک API استفاده شود.
import { ActionPanel, Action, List } from "@raycast/api";
import { useFetch } from "@raycast/utils";
نوع شی مقاله را برای ترسیم پاسخ از API تعریف کنید.
type Article = {
id: number;
title: string;
readable_publish_date: string;
comments_count: number;
url: string;
};
حالا بیایید از useFetch برای دریافت آخرین مقالات از Dev.to قلاب کنید.
export default function Command() {
const { isLoading, data: articles } = useFetch<Article[]>(
"https://dev.to/api/articles"
);
}
useFetch یک شی با دو ویژگی برمی گرداند: isLoading و data.
-
isLoadingیک بولی است که نشان می دهد داده ها در حال واکشی هستند یا خیر. -
dataپاسخی است که از API واکشی می شود.
حالا بیایید از List جزء برای نمایش مقالات در یک لیست.
return (
<List isLoading={isLoading}>
{(articles || []).map((article) => (
<List.Item
key={article.id}
icon="list-icon.png"
title={article.title}
subtitle={`${article.comments_count} comments`}
accessories={[{ text: article.readable_publish_date }]}
actions={
<ActionPanel>
<Action.OpenInBrowser url={article.url} />
</ActionPanel>
}
/>
))}
</List>
);
را List جزء می گیرد isLoading prop که نشان می دهد داده ها در حال واکشی هستند یا خیر.
همچنین طول می کشد children پایه که آرایه ای از List.Item اجزاء.
را ActionPanel کامپوننتی است که شامل مجموعه ای از اقدامات است که می توان روی آیتم انتخاب شده انجام داد.
در مورد ما، می خواهیم مقاله انتخاب شده را در مرورگر باز کنیم. بنابراین، ما از آن استفاده خواهیم کرد Action.OpenInBrowser جزء برای باز کردن مقاله در مرورگر زمانی که کاربر آن را انتخاب می کند.
این کد نهایی است:
import { ActionPanel, Action, List } from "@raycast/api";
import { useFetch } from "@raycast/utils";
type Article = {
id: number;
title: string;
readable_publish_date: string;
comments_count: number;
url: string;
};
export default function Command() {
const { isLoading, data: articles } = useFetch<Article[]>(
"https://dev.to/api/articles"
);
return (
<List isLoading={isLoading}>
{(articles || []).map((article) => (
<List.Item
key={article.id}
icon="list-icon.png"
title={article.title}
subtitle={`${article.comments_count} comments`}
accessories={[{ text: article.readable_publish_date }]}
actions={
<ActionPanel>
<Action.OpenInBrowser url={article.url} />
</ActionPanel>
}
/>
))}
</List>
);
}
افزونه را اجرا کنید
با اجرای دستور زیر می توانید افزونه را اجرا کنید:
npm run dev
پسوند را در Raycast با جستجو پیدا کنید مقالات Devto و دستور را اجرا کنید آخرین مقالات.



