feat: add view my status command

This commit is contained in:
sevichecc 2023-04-16 22:49:32 +08:00
parent 54a6188bc5
commit 0a9f549bda
Signed by untrusted user who does not match committer: SevicheCC
GPG key ID: C577000000000000
5 changed files with 19 additions and 10 deletions

View file

@ -19,7 +19,7 @@ export default function BookmarkCommand() {
await authorize();
showToast(Toast.Style.Animated, "Loading bookmarks...");
const newBookmarks = await apiServer.fetchBookmarks();
setBookmarks((prevBookmarks) => [...prevBookmarks, ...newBookmarks]);
setBookmarks((prevBookmarks) => [...prevBookmarks, ...newBookmarks]);
showToast(Toast.Style.Success, "Bookmarked has been loaded");
cache.set("latest_bookmarks", JSON.stringify(newBookmarks));
} catch (error) {
@ -36,9 +36,9 @@ export default function BookmarkCommand() {
<List isShowingDetail isLoading={isLoading} searchBarPlaceholder="Search bookmarks">
{bookmarks?.map((bookmark) => (
<List.Item
title={bookmark.pleroma.content["text/plain"]}
title={bookmark.pleroma.content["text/plain"] || bookmark.akkoma.source.content}
key={bookmark.id}
detail={<List.Item.Detail markdown={statusParser(bookmark)} />}
detail={<List.Item.Detail markdown={statusParser(bookmark, "idAndDate")} />}
actions={
<ActionPanel>
<Action.OpenInBrowser title="Open Original Status" url={bookmark.url} />

View file

@ -36,9 +36,9 @@ export default function ViewStatusCommand() {
<List isShowingDetail isLoading={isLoading} searchBarPlaceholder="Search bookmarks">
{status?.map((statu) => (
<List.Item
title={statu.pleroma.content["text/plain"]}
title={statu.akkoma.source.content}
key={statu.id}
detail={<List.Item.Detail markdown={statusParser(statu)} />}
detail={<List.Item.Detail markdown={statusParser(statu, "date")} />}
actions={
<ActionPanel>
<Action.OpenInBrowser title="Open Original Status" url={statu.url} />

View file

@ -21,7 +21,7 @@ const CONFIG = {
tokenUrl: "/oauth/token",
appUrl: "/api/v1/apps",
statusesUrl: "/api/v1/statuses",
accountsUrl: "/api/v1/accounts",
accountsUrl: "/api/v1/accounts/",
verifyCredentialsUrl: "/api/v1/accounts/verify_credentials",
mediaUrl: "/api/v1/media/",
bookmarkUrl: "/api/v1/bookmarks",

View file

@ -64,6 +64,12 @@ export interface StatusRequest {
export interface Status {
created_at: Date;
media_attachments: UploadAttachResponse[];
akkoma: {
source: {
content: string;
mediaType: "text/markdown" | "text/plain" | "text/bbcode" | "text/html" | "x.misskeymarkdown";
};
};
account: {
acct: string;
};

View file

@ -21,14 +21,17 @@ export const dateTimeFormatter = (time: Date, type: "short" | "long") => {
}).format(time);
};
export const statusParser = ({ content, media_attachments, account, created_at }: Status) => {
export const statusParser = (
{ content, media_attachments, account, created_at }: Status,
type: "idAndDate" | "date"
) => {
const images = media_attachments.filter((attachment) => attachment.type === "image");
const parsedImages = images.reduce((link, image) => link + `![${image.description}](${image.remote_url})`, "");
const date = new Date(created_at);
const parsedTime = dateTimeFormatter(date, "short");
if (account) return ` _@${account.acct} (${parsedTime})_ ` + nhm.translate("<br>" + content) + parsedImages;
return parsedTime + nhm.translate("<br>" + content) + parsedImages;
return type === "idAndDate"
? ` _@${account.acct} (${parsedTime})_ ` + nhm.translate("<br>" + content) + parsedImages
: `_${parsedTime}_` + nhm.translate("<br>" + content) + parsedImages;
};