diff --git a/src/localization/en.json b/src/localization/en.json index 6501da6e..35acef57 100644 --- a/src/localization/en.json +++ b/src/localization/en.json @@ -186,6 +186,8 @@ "removed_list_header": "Avatars pending deletion:", "copy_removed_ids": "Copy Avatar IDs", "copied_ids": "Avatar IDs copied to clipboard", + "copy_failed": "Failed to copy to clipboard", + "dismiss": "Dismiss", "checking_progress": "Checking avatar ({current}/{total})...", "confirm_delete_invalid": "Delete Invalid Avatars?", "confirm_delete_description": "Found {count} invalid avatars, delete them?", diff --git a/src/stores/charts.js b/src/stores/charts.js index 933a93d2..fb823e53 100644 --- a/src/stores/charts.js +++ b/src/stores/charts.js @@ -1,5 +1,4 @@ import { computed, reactive, ref, watch } from 'vue'; -import { ElNotification } from 'element-plus'; import { defineStore } from 'pinia'; import { toast } from 'vue-sonner'; import { useI18n } from 'vue-i18n'; @@ -58,18 +57,16 @@ export const useChartsStore = defineStore('Charts', () => { !mutualGraphStatus.completionNotified ) { mutualGraphStatus.completionNotified = true; - ElNotification({ - title: t( + toast.success( + t( 'view.charts.mutual_friend.notifications.mutual_friend_graph_ready_title' ), - message: t( - 'view.charts.mutual_friend.notifications.mutual_friend_graph_ready_message' - ), - type: 'success', - position: 'top-right', - duration: 5000, - showClose: true - }); + { + description: t( + 'view.charts.mutual_friend.notifications.mutual_friend_graph_ready_message' + ) + } + ); } } ); diff --git a/src/stores/vrcStatus.js b/src/stores/vrcStatus.js index f8c8b0bd..3fb9c730 100644 --- a/src/stores/vrcStatus.js +++ b/src/stores/vrcStatus.js @@ -1,6 +1,6 @@ import { computed, ref } from 'vue'; -import { ElNotification } from 'element-plus'; import { defineStore } from 'pinia'; +import { toast } from 'vue-sonner'; import { useI18n } from 'vue-i18n'; import { formatDateFilter, openExternalLink } from '../shared/utils'; @@ -26,6 +26,14 @@ export const useVrcStatusStore = defineStore('VrcStatus', () => { return lastStatus.value; }); + function dismissAlert() { + if (!alertRef.value) { + return; + } + toast.dismiss(alertRef.value); + alertRef.value = null; + } + function updateAlert() { if (lastStatusText.value === statusText.value) { return; @@ -34,32 +42,28 @@ export const useVrcStatusStore = defineStore('VrcStatus', () => { if (!statusText.value) { if (alertRef.value) { - alertRef.value.close(); - alertRef.value = ElNotification({ - title: t('status.title'), - message: `${formatDateFilter(lastStatusTime.value, 'short')}: All Systems Operational`, - type: 'success', - duration: 5000, - showClose: true, + dismissAlert(); + alertRef.value = toast.success(t('status.title'), { + description: `${formatDateFilter(lastStatusTime.value, 'short')}: All Systems Operational`, position: 'bottom-right', - onClick: () => { - openStatusPage(); + action: { + label: 'Open', + onClick: () => openStatusPage() } }); } return; } - alertRef.value?.close(); - alertRef.value = ElNotification({ - title: t('status.title'), - message: `${formatDateFilter(lastStatusTime.value, 'short')}: ${statusText.value}`, - type: 'warning', - duration: 0, - showClose: true, + dismissAlert(); + alertRef.value = toast.warning(t('status.title'), { + description: `${formatDateFilter(lastStatusTime.value, 'short')}: ${statusText.value}`, + duration: Infinity, + closeButton: true, position: 'bottom-right', - onClick: () => { - openStatusPage(); + action: { + label: 'Open', + onClick: () => openStatusPage() } }); } diff --git a/src/views/Favorites/FavoritesAvatar.vue b/src/views/Favorites/FavoritesAvatar.vue index b6dcf6aa..3a9585ef 100644 --- a/src/views/Favorites/FavoritesAvatar.vue +++ b/src/views/Favorites/FavoritesAvatar.vue @@ -521,13 +521,23 @@