برنامه نویسی

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

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

برای کسب اطلاعات بیشتر در مورد سیستم مورد نیاز برای شروع ساخت برنامه های افزودنی، از Raycast Doc دیدن کنید.

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

یک پسوند جدید ایجاد کنید

  • باز کن پسوند ایجاد کنید دستور در 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 و دستور را اجرا کنید آخرین مقالات.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا