diff --git a/extensions/dub/CHANGELOG.md b/extensions/dub/CHANGELOG.md index 2b491e68f97..fd286c57571 100644 --- a/extensions/dub/CHANGELOG.md +++ b/extensions/dub/CHANGELOG.md @@ -1,8 +1,9 @@ # Dub Link Shortener Changelog -## [Renaming] - 2024-08-01 +## [Renaming and Fixes] - 2024-08-01 - Rename extension from `dub-link-shortener` to `dub` - Transfer to `dubinc` organization +- Fixed retry for shortening failures and open short links within toast with a push. ## [README changes] - 2024-07-31 diff --git a/extensions/dub/metadata/dub-1.png b/extensions/dub/metadata/dub-1.png new file mode 100644 index 00000000000..b391bf61b0c Binary files /dev/null and b/extensions/dub/metadata/dub-1.png differ diff --git a/extensions/dub/metadata/dub-2.png b/extensions/dub/metadata/dub-2.png new file mode 100644 index 00000000000..a6e713d878e Binary files /dev/null and b/extensions/dub/metadata/dub-2.png differ diff --git a/extensions/dub/metadata/dub-link-shortener-1.png b/extensions/dub/metadata/dub-link-shortener-1.png deleted file mode 100644 index 016f85438ab..00000000000 Binary files a/extensions/dub/metadata/dub-link-shortener-1.png and /dev/null differ diff --git a/extensions/dub/metadata/dub-link-shortener-2.png b/extensions/dub/metadata/dub-link-shortener-2.png deleted file mode 100644 index 254c7bd2aa2..00000000000 Binary files a/extensions/dub/metadata/dub-link-shortener-2.png and /dev/null differ diff --git a/extensions/dub/package-lock.json b/extensions/dub/package-lock.json index d4ff53995fc..e53724d217f 100644 --- a/extensions/dub/package-lock.json +++ b/extensions/dub/package-lock.json @@ -1,10 +1,10 @@ { - "name": "dub-link-shortener", + "name": "dub", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "dub-link-shortener", + "name": "dub", "license": "MIT", "dependencies": { "@raycast/api": "^1.61.2", @@ -206,9 +206,9 @@ } }, "node_modules/@raycast/api": { - "version": "1.78.1", - "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.78.1.tgz", - "integrity": "sha512-DZ3KdS/fIZba7PHzBpWYU2w3MXnr/RC7RgwAlU839G0pIwayP6/gwecsmJPRdQ3wuHIH4iX91aUthBKmTib9WQ==", + "version": "1.80.0", + "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.80.0.tgz", + "integrity": "sha512-SBcfW35J0Q2wGD1ONmTHkyj743NZ6NCD7yRXpoMSCGHtblYXk3xi84+tEqpQeEm2M79ikMGLPTrgcNQfK1XdrQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -270,9 +270,9 @@ } }, "node_modules/@raycast/utils": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.16.1.tgz", - "integrity": "sha512-wytgZqx6K5SKeFxk/f3prMBfl5kWth5Y2AWx5BjdLfQkTpWNA5o7kwU1L3HXuabKvhldrzVUR5hFVyoqIfGEVw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.16.3.tgz", + "integrity": "sha512-9z1e/pNvZ+WFHDduqKmDDZ+2El3BXEnuuvTXS6th7ZGP1PnLFHFgQRTZQw2dc8qiOY71avYLcdNPbKG3bszTOQ==", "license": "MIT", "dependencies": { "content-type": "^1.0.5", @@ -289,9 +289,9 @@ } }, "node_modules/@rushstack/eslint-patch": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz", - "integrity": "sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", + "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==", "dev": true, "license": "MIT" }, @@ -303,9 +303,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.14.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.10.tgz", - "integrity": "sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==", + "version": "20.14.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.13.tgz", + "integrity": "sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -877,9 +877,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "license": "MIT", "dependencies": { @@ -1868,9 +1868,9 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", "bin": { @@ -1989,9 +1989,9 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "license": "ISC", "bin": { @@ -2206,9 +2206,9 @@ } }, "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "license": "Apache-2.0", "bin": { @@ -2220,9 +2220,10 @@ } }, "node_modules/undici": { - "version": "6.19.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", - "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==", + "version": "6.19.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.5.tgz", + "integrity": "sha512-LryC15SWzqQsREHIOUybavaIHF5IoL0dJ9aWWxL/PgT1KfqAW5225FZpDUFlt9xiDMS2/S7DOKhFWA7RLksWdg==", + "license": "MIT", "engines": { "node": ">=18.17" } @@ -2309,6 +2310,7 @@ "version": "3.23.8", "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/extensions/dub/src/search-links.tsx b/extensions/dub/src/search-links.tsx index 692f3cf5eee..6ca06092b69 100644 --- a/extensions/dub/src/search-links.tsx +++ b/extensions/dub/src/search-links.tsx @@ -7,7 +7,7 @@ import { MutatePromise, showFailureToast } from "@raycast/utils"; import type { LinkSchema } from "dub/models/components"; import { withDubClient } from "./with-dub-client"; -function SearchLinks() { +export function SearchLinks() { const { shortLinks, error: linksError, isLoading: isLoadingLinks, mutate } = useShortLinks(); return ( @@ -181,9 +181,7 @@ const tryDeleteLink = async (linkId: string, mutate: MutatePromise title: "❗ Failed to delete link", primaryAction: { title: "Retry", - onAction: async () => { - await tryDeleteLink(linkId, mutate); - }, + onAction: () => tryDeleteLink(linkId, mutate), }, }); }); diff --git a/extensions/dub/src/shorten-link.tsx b/extensions/dub/src/shorten-link.tsx index bf9e2052447..876f3172537 100644 --- a/extensions/dub/src/shorten-link.tsx +++ b/extensions/dub/src/shorten-link.tsx @@ -8,10 +8,10 @@ import { Icon, showToast, Toast, - open, Clipboard, useNavigation, LaunchProps, + Keyboard, } from "@raycast/api"; import { FormValidation, showFailureToast, useCachedPromise, useForm } from "@raycast/utils"; import { createShortLink } from "@/api"; @@ -19,6 +19,7 @@ import { fetchLink, isEmpty } from "@utils/clipboard"; import { useTags } from "@hooks/use-tags"; import { useDomains } from "@hooks/use-domains"; import { withDubClient } from "./with-dub-client"; +import { SearchLinks } from "@/search-links"; interface ShortLinkFormValues { url: string; @@ -29,7 +30,7 @@ interface ShortLinkFormValues { } const ShortenLinkForm = ({ retryValues, args }: { retryValues?: ShortLinkFormValues; args: Arguments.ShortenLink }) => { - const { push, pop } = useNavigation(); + const { push } = useNavigation(); const { url, key } = args; const { data: originalLink, isLoading: isLoadingLink } = useCachedPromise(fetchLink, [], { execute: isEmpty(url) }); const { tags } = useTags(); @@ -47,11 +48,16 @@ const ShortenLinkForm = ({ retryValues, args }: { retryValues?: ShortLinkFormVal message: shortLink, primaryAction: { title: "Copy Short Link", + shortcut: Keyboard.Shortcut.Common.Copy, onAction: () => Clipboard.copy(shortLink), }, secondaryAction: { title: "Open Short Links", - onAction: () => open("raycast://extensions/quuu/dub-link-shortener/search-links"), + shortcut: Keyboard.Shortcut.Common.Open, + onAction: async (toast) => { + push(); + await toast.hide(); + }, }, }); }) @@ -60,13 +66,13 @@ const ShortenLinkForm = ({ retryValues, args }: { retryValues?: ShortLinkFormVal const toast = await showFailureToast(err, { title: "❗ Failed to create link" }); toast.primaryAction = { title: "Retry", + shortcut: Keyboard.Shortcut.Common.Refresh, onAction: () => { push(); toast.hide(); }, }; - }) - .finally(pop); + }); }, validation: { url: FormValidation.Required,