This commit is contained in:
Dunsin Abisuwa 2026-08-12 12:53:31 +08:00 committed by GitHub
commit 98347ef48c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 37 additions and 18 deletions

View file

@ -1,4 +1,4 @@
import { CableIcon, TrashIcon } from "lucide-react";
import { CableIcon, ExternalLinkIcon, TrashIcon } from "lucide-react";
import { useRef, useState } from "react";
import { CustomPagination } from "src/components/CustomPagination";
import EmptyState from "src/components/EmptyState";
@ -6,6 +6,7 @@ import Loading from "src/components/Loading";
import ResponsiveLinkButton from "src/components/ResponsiveLinkButton";
import AlbyConnectionCard from "src/components/connections/AlbyConnectionCard";
import AppCard from "src/components/connections/AppCard";
import { ExternalLinkButton } from "src/components/ui/custom/external-link-button";
import {
ALBY_ACCOUNT_APP_NAME,
LIST_APPS_LIMIT,
@ -100,7 +101,20 @@ function ConnectedApps() {
className="grid grid-cols-1 lg:grid-cols-2 gap-3 items-stretch"
>
{otherApps.map((app, index) => (
<AppCard key={index} app={app} />
<AppCard
key={index}
app={app}
actions={
app.metadata?.zapplanner_subscription_id ? (
<ExternalLinkButton
to={`https://zapplanner.albylabs.com/subscriptions/${app.metadata.zapplanner_subscription_id}`}
size="sm"
>
View <ExternalLinkIcon className="size-4 ml-2" />
</ExternalLinkButton>
) : undefined
}
/>
))}
</div>
)}

View file

@ -15,6 +15,7 @@ import {
CheckCircleIcon,
ChevronDownIcon,
EllipsisIcon,
ExternalLinkIcon,
InfoIcon,
PlusIcon,
SquarePenIcon,
@ -190,6 +191,8 @@ function AppInternal({ app, refetchApp, capabilities }: AppInternalProps) {
(!app.scopes.includes("pay_invoice") &&
permissions.scopes.includes("pay_invoice"));
const subscriptionId = app?.metadata?.zapplanner_subscription_id;
return (
<>
<div className="w-full">
@ -271,6 +274,20 @@ function AppInternal({ app, refetchApp, capabilities }: AppInternalProps) {
</DropdownMenuGroup>
)}
<DropdownMenuGroup>
{typeof subscriptionId === "string" &&
subscriptionId && (
<DropdownMenuItem asChild>
<Link
target="_blank"
to={`https://zapplanner.albylabs.com/subscriptions/${subscriptionId}`}
className="flex flex-1 items-center gap-2"
>
<ExternalLinkIcon className="size-4" />
View
</Link>
</DropdownMenuItem>
)}
{appStoreApp && (
<DropdownMenuItem asChild>
<Link
@ -282,6 +299,7 @@ function AppInternal({ app, refetchApp, capabilities }: AppInternalProps) {
</Link>
</DropdownMenuItem>
)}
<DropdownMenuItem asChild>
<div
className="flex items-center gap-2"
@ -290,6 +308,7 @@ function AppInternal({ app, refetchApp, capabilities }: AppInternalProps) {
<InfoIcon className="size-4" /> Connection Details
</div>
</DropdownMenuItem>
<DropdownMenuSeparator />
<DropdownMenuItem variant="destructive" asChild>
<div

View file

@ -17,7 +17,7 @@ import {
getSatoshiValue,
LightningAddress,
} from "@getalby/lightning-tools";
import { ExternalLinkIcon, PlusCircleIcon } from "lucide-react";
import { PlusCircleIcon } from "lucide-react";
import { toast } from "sonner";
import alby from "src/assets/suggested-apps/alby.png";
import bff from "src/assets/zapplanner/bff.png";
@ -29,7 +29,6 @@ import { appStoreApps } from "src/components/connections/SuggestedAppData";
import ExternalLink from "src/components/ExternalLink";
import ResponsiveButton from "src/components/ResponsiveButton";
import { Button } from "src/components/ui/button";
import { ExternalLinkButton } from "src/components/ui/custom/external-link-button";
import { LoadingButton } from "src/components/ui/custom/loading-button";
import {
Dialog,
@ -546,20 +545,7 @@ export function ZapPlanner() {
<h2 className="font-semibold text-xl">Recurring Payments</h2>
<div className="grid grid-cols-1 lg:grid-cols-2 gap-3 items-stretch">
{zapplannerApps.map((app, index) => (
<AppCard
key={index}
app={app}
actions={
app.metadata?.zapplanner_subscription_id ? (
<ExternalLinkButton
to={`https://zapplanner.albylabs.com/subscriptions/${app.metadata.zapplanner_subscription_id}`}
size="sm"
>
View <ExternalLinkIcon className="size-4 ml-2" />
</ExternalLinkButton>
) : undefined
}
/>
<AppCard key={index} app={app} />
))}
</div>
</>