mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-04-11 07:25:42 -04:00
chore: Nuxt 4 upgrade (#7426)
This commit is contained in:
78
frontend/app/composables/use-copy.ts
Normal file
78
frontend/app/composables/use-copy.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
import { useClipboard } from "@vueuse/core";
|
||||
import { alert } from "./use-toast";
|
||||
|
||||
export function useCopy() {
|
||||
const { copy, copied, isSupported } = useClipboard();
|
||||
const i18n = useI18n();
|
||||
|
||||
function copyText(text: string) {
|
||||
if (!isSupported.value) {
|
||||
alert.error(i18n.t("general.clipboard-not-supported"));
|
||||
return;
|
||||
}
|
||||
copy(text).then(() => {
|
||||
// Verify copy success as no error is thrown on failure.
|
||||
if (copied.value) {
|
||||
alert.success(i18n.t("general.copied-to-clipboard"));
|
||||
}
|
||||
else {
|
||||
alert.error(i18n.t("general.clipboard-copy-failure"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return { copyText, copied };
|
||||
}
|
||||
|
||||
export function useCopyList() {
|
||||
const { copy, isSupported, copied } = useClipboard();
|
||||
const i18n = useI18n();
|
||||
|
||||
function checkClipboard() {
|
||||
if (!isSupported.value) {
|
||||
alert.error(i18n.t("general.your-browser-does-not-support-clipboard"));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function copyPlain(list: string[]) {
|
||||
if (!checkClipboard()) return;
|
||||
|
||||
const text = list.join("\n");
|
||||
copyText(text, list.length);
|
||||
}
|
||||
|
||||
function copyMarkdown(list: string[]) {
|
||||
if (!checkClipboard()) return;
|
||||
|
||||
const text = list.map(item => `- ${item}`).join("\n");
|
||||
copyText(text, list.length);
|
||||
}
|
||||
|
||||
function copyMarkdownCheckList(list: string[]) {
|
||||
if (!checkClipboard()) return;
|
||||
|
||||
const text = list.map(item => `- [ ] ${item}`).join("\n");
|
||||
copyText(text, list.length);
|
||||
}
|
||||
|
||||
function copyText(text: string, len: number) {
|
||||
copy(text).then(() => {
|
||||
// Verify copy success as no error is thrown on failure.
|
||||
if (copied.value) {
|
||||
alert.success(i18n.t("general.copied-items-to-clipboard", len));
|
||||
}
|
||||
else {
|
||||
alert.error(i18n.t("general.clipboard-copy-failure"));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
copyPlain,
|
||||
copyMarkdown,
|
||||
copyMarkdownCheckList,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user