mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-16 16:30:15 +01:00
🔧 fix(Shared Links): Handling Shared Link Errors (#3118)
* refactor: add error handling in Share model * refactor: add error handing to API routers * refactor: display error message when API response is an error * chore: remove unneccesary JSON.stringify * chore: revert unintended changes --------- Co-authored-by: Danny Avila <danny@librechat.ai>
This commit is contained in:
parent
3172381bad
commit
4e4de88faa
23 changed files with 323 additions and 75 deletions
|
|
@ -22,7 +22,7 @@ module.exports = {
|
|||
return share;
|
||||
} catch (error) {
|
||||
logger.error('[getShare] Error getting share link', error);
|
||||
return { message: 'Error getting share link' };
|
||||
throw new Error('Error getting share link');
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -41,17 +41,17 @@ module.exports = {
|
|||
return { sharedLinks: shares, pages: totalPages, pageNumber, pageSize };
|
||||
} catch (error) {
|
||||
logger.error('[getShareByPage] Error getting shares', error);
|
||||
return { message: 'Error getting shares' };
|
||||
throw new Error('Error getting shares');
|
||||
}
|
||||
},
|
||||
|
||||
createSharedLink: async (user, { conversationId, ...shareData }) => {
|
||||
try {
|
||||
const share = await SharedLink.findOne({ conversationId }).select('-_id -__v -user').lean();
|
||||
if (share) {
|
||||
return share;
|
||||
}
|
||||
|
||||
try {
|
||||
const shareId = crypto.randomUUID();
|
||||
const messages = await getMessages({ conversationId });
|
||||
const update = { ...shareData, shareId, messages, user };
|
||||
|
|
@ -60,16 +60,18 @@ module.exports = {
|
|||
upsert: true,
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('[saveShareMessage] Error saving conversation', error);
|
||||
return { message: 'Error saving conversation' };
|
||||
logger.error('[createSharedLink] Error creating shared link', error);
|
||||
throw new Error('Error creating shared link');
|
||||
}
|
||||
},
|
||||
|
||||
updateSharedLink: async (user, { conversationId, ...shareData }) => {
|
||||
try {
|
||||
const share = await SharedLink.findOne({ conversationId }).select('-_id -__v -user').lean();
|
||||
if (!share) {
|
||||
return { message: 'Share not found' };
|
||||
}
|
||||
|
||||
// update messages to the latest
|
||||
const messages = await getMessages({ conversationId });
|
||||
const update = { ...shareData, messages, user };
|
||||
|
|
@ -77,14 +79,23 @@ module.exports = {
|
|||
new: true,
|
||||
upsert: false,
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('[updateSharedLink] Error updating shared link', error);
|
||||
throw new Error('Error updating shared link');
|
||||
}
|
||||
},
|
||||
|
||||
deleteSharedLink: async (user, { shareId }) => {
|
||||
try {
|
||||
const share = await SharedLink.findOne({ shareId, user });
|
||||
if (!share) {
|
||||
return { message: 'Share not found' };
|
||||
}
|
||||
return await SharedLink.findOneAndDelete({ shareId, user });
|
||||
} catch (error) {
|
||||
logger.error('[deleteSharedLink] Error deleting shared link', error);
|
||||
throw new Error('Error deleting shared link');
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Deletes all shared links for a specific user.
|
||||
|
|
@ -100,7 +111,7 @@ module.exports = {
|
|||
};
|
||||
} catch (error) {
|
||||
logger.error('[deleteAllSharedLinks] Error deleting shared links', error);
|
||||
return { message: 'Error deleting shared links' };
|
||||
throw new Error('Error deleting shared links');
|
||||
}
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ if (allowSharedLinks) {
|
|||
'/:shareId',
|
||||
allowSharedLinksPublic ? (req, res, next) => next() : requireJwtAuth,
|
||||
async (req, res) => {
|
||||
try {
|
||||
const share = await getSharedMessages(req.params.shareId);
|
||||
|
||||
if (share) {
|
||||
|
|
@ -32,6 +33,9 @@ if (allowSharedLinks) {
|
|||
} else {
|
||||
res.status(404).end();
|
||||
}
|
||||
} catch (error) {
|
||||
res.status(500).json({ message: 'Error getting shared messages' });
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
@ -40,6 +44,7 @@ if (allowSharedLinks) {
|
|||
* Shared links
|
||||
*/
|
||||
router.get('/', requireJwtAuth, async (req, res) => {
|
||||
try {
|
||||
let pageNumber = req.query.pageNumber || 1;
|
||||
pageNumber = parseInt(pageNumber, 10);
|
||||
|
||||
|
|
@ -55,33 +60,48 @@ router.get('/', requireJwtAuth, async (req, res) => {
|
|||
}
|
||||
const isPublic = req.query.isPublic === 'true';
|
||||
res.status(200).send(await getSharedLinks(req.user.id, pageNumber, pageSize, isPublic));
|
||||
} catch (error) {
|
||||
res.status(500).json({ message: 'Error getting shared links' });
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/', requireJwtAuth, async (req, res) => {
|
||||
try {
|
||||
const created = await createSharedLink(req.user.id, req.body);
|
||||
if (created) {
|
||||
res.status(200).json(created);
|
||||
} else {
|
||||
res.status(404).end();
|
||||
}
|
||||
} catch (error) {
|
||||
res.status(500).json({ message: 'Error creating shared link' });
|
||||
}
|
||||
});
|
||||
|
||||
router.patch('/', requireJwtAuth, async (req, res) => {
|
||||
try {
|
||||
const updated = await updateSharedLink(req.user.id, req.body);
|
||||
if (updated) {
|
||||
res.status(200).json(updated);
|
||||
} else {
|
||||
res.status(404).end();
|
||||
}
|
||||
} catch (error) {
|
||||
res.status(500).json({ message: 'Error updating shared link' });
|
||||
}
|
||||
});
|
||||
|
||||
router.delete('/:shareId', requireJwtAuth, async (req, res) => {
|
||||
try {
|
||||
const deleted = await deleteSharedLink(req.user.id, { shareId: req.params.shareId });
|
||||
if (deleted) {
|
||||
res.status(200).json(deleted);
|
||||
} else {
|
||||
res.status(404).end();
|
||||
}
|
||||
} catch (error) {
|
||||
res.status(500).json({ message: 'Error deleting shared link' });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
import { useState } from 'react';
|
||||
import copy from 'copy-to-clipboard';
|
||||
import { Copy, Link } from 'lucide-react';
|
||||
import { useUpdateSharedLinkMutation } from '~/data-provider';
|
||||
import type { TSharedLink } from 'librechat-data-provider';
|
||||
import { useUpdateSharedLinkMutation } from '~/data-provider';
|
||||
import { NotificationSeverity } from '~/common';
|
||||
import { useToastContext } from '~/Providers';
|
||||
import { Spinner } from '~/components/svg';
|
||||
import { Button } from '~/components/ui';
|
||||
import { useLocalize } from '~/hooks';
|
||||
|
|
@ -21,8 +23,18 @@ export default function SharedLinkButton({
|
|||
setIsUpdated: (isUpdated: boolean) => void;
|
||||
}) {
|
||||
const localize = useLocalize();
|
||||
const { showToast } = useToastContext();
|
||||
const [isCopying, setIsCopying] = useState(false);
|
||||
const { mutateAsync, isLoading } = useUpdateSharedLinkMutation();
|
||||
|
||||
const { mutateAsync, isLoading } = useUpdateSharedLinkMutation({
|
||||
onError: () => {
|
||||
showToast({
|
||||
message: localize('com_ui_share_error'),
|
||||
severity: NotificationSeverity.ERROR,
|
||||
showIcon: true,
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
const copyLink = () => {
|
||||
if (!share) {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
import { useAuthContext, useLocalize, useNavScrolling } from '~/hooks';
|
||||
import { MessageSquare, Link as LinkIcon } from 'lucide-react';
|
||||
import { useMemo, useState, MouseEvent } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { MessageSquare, Link as LinkIcon } from 'lucide-react';
|
||||
import type { SharedLinksResponse, TSharedLink } from 'librechat-data-provider';
|
||||
import { useDeleteSharedLinkMutation, useSharedLinksInfiniteQuery } from '~/data-provider';
|
||||
|
||||
import { useAuthContext, useLocalize, useNavScrolling } from '~/hooks';
|
||||
import { NotificationSeverity } from '~/common';
|
||||
import { useToastContext } from '~/Providers';
|
||||
import { cn } from '~/utils';
|
||||
import {
|
||||
Spinner,
|
||||
|
|
@ -12,8 +15,6 @@ import {
|
|||
TooltipTrigger,
|
||||
TrashIcon,
|
||||
} from '~/components';
|
||||
import { SharedLinksResponse, TSharedLink } from 'librechat-data-provider';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function SharedLinkDeleteButton({
|
||||
shareId,
|
||||
|
|
@ -23,7 +24,17 @@ function SharedLinkDeleteButton({
|
|||
setIsDeleting: (isDeleting: boolean) => void;
|
||||
}) {
|
||||
const localize = useLocalize();
|
||||
const mutation = useDeleteSharedLinkMutation();
|
||||
const { showToast } = useToastContext();
|
||||
const mutation = useDeleteSharedLinkMutation({
|
||||
onError: () => {
|
||||
showToast({
|
||||
message: localize('com_ui_share_delete_error'),
|
||||
severity: NotificationSeverity.ERROR,
|
||||
showIcon: true,
|
||||
});
|
||||
setIsDeleting(false);
|
||||
},
|
||||
});
|
||||
|
||||
const handleDelete = async (e: MouseEvent<HTMLButtonElement>) => {
|
||||
e.preventDefault();
|
||||
|
|
@ -124,10 +135,8 @@ export default function ShareLinkTable({ className }: { className?: string }) {
|
|||
const { isAuthenticated } = useAuthContext();
|
||||
const [showLoading, setShowLoading] = useState(false);
|
||||
|
||||
const { data, fetchNextPage, hasNextPage, isFetchingNextPage } = useSharedLinksInfiniteQuery(
|
||||
{ pageNumber: '1', isPublic: true },
|
||||
{ enabled: isAuthenticated },
|
||||
);
|
||||
const { data, fetchNextPage, hasNextPage, isFetchingNextPage, isError, isLoading } =
|
||||
useSharedLinksInfiniteQuery({ pageNumber: '1', isPublic: true }, { enabled: isAuthenticated });
|
||||
|
||||
const { containerRef } = useNavScrolling<SharedLinksResponse>({
|
||||
setShowLoading,
|
||||
|
|
@ -144,6 +153,17 @@ export default function ShareLinkTable({ className }: { className?: string }) {
|
|||
classProp.className = className;
|
||||
}
|
||||
|
||||
if (isLoading) {
|
||||
return <Spinner className="m-1 mx-auto mb-4 h-4 w-4 text-black dark:text-white" />;
|
||||
}
|
||||
|
||||
if (isError) {
|
||||
return (
|
||||
<div className="rounded-md border border-red-500 bg-red-500/10 px-3 py-2 text-sm text-gray-600 dark:text-gray-200">
|
||||
{localize('com_ui_share_retrieve_error')}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
if (!sharedLinks || sharedLinks.length === 0) {
|
||||
return <div className="text-gray-300">{localize('com_nav_shared_links_empty')}</div>;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ export default {
|
|||
com_ui_create_link: 'إنشاء رابط',
|
||||
com_ui_share_link_to_chat: 'شارك الرابط في الدردشة',
|
||||
com_ui_share_error: 'حدث خطأ أثناء مشاركة رابط الدردشة',
|
||||
com_ui_share_retrieve_error: 'حدث خطأ أثناء حذف الرابط المشترك.',
|
||||
com_ui_share_delete_error: 'حدث خطأ أثناء حذف الرابط المشترك.',
|
||||
com_ui_share_create_message: 'سيظل اسمك وأي رسائل تضيفها بعد المشاركة خاصة.',
|
||||
com_ui_share_created_message:
|
||||
'تم إنشاء رابط مشترك للدردشة الخاصة بك. يمكنك إدارة الدردشات المشتركة مسبقًا في أي وقت عبر الإعدادات.',
|
||||
|
|
@ -783,6 +785,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'شارك الرابط في الدردشة',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'حدث خطأ أثناء حذف الرابط المشترك.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'حدث خطأ أثناء حذف الرابط المشترك.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'حدث خطأ أثناء مشاركة رابط الدردشة',
|
||||
|
|
|
|||
|
|
@ -140,6 +140,8 @@ export default {
|
|||
com_ui_create_link: 'Criar link',
|
||||
com_ui_share_link_to_chat: 'Compartilhar link no chat',
|
||||
com_ui_share_error: 'Ocorreu um erro ao compartilhar o link do chat',
|
||||
com_ui_share_retrieve_error: 'Ocorreu um erro ao excluir o link compartilhado.',
|
||||
com_ui_share_delete_error: 'Ocorreu um erro ao excluir o link compartilhado.',
|
||||
com_ui_share_create_message:
|
||||
'Seu nome e quaisquer mensagens que você adicionar após o compartilhamento permanecem privadas.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -1000,6 +1002,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Compartilhar link no chat',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Ocorreu um erro ao excluir o link compartilhado.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Ocorreu um erro ao excluir o link compartilhado.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Ocorreu um erro ao compartilhar o link do chat',
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@ export default {
|
|||
com_ui_create_link: 'Link erstellen',
|
||||
com_ui_share_link_to_chat: 'Link zum Chat teilen',
|
||||
com_ui_share_error: 'Beim Teilen des Chat-Links ist ein Fehler aufgetreten',
|
||||
com_ui_share_retrieve_error: 'Beim Löschen des Freigabelinks ist ein Fehler aufgetreten.',
|
||||
com_ui_share_delete_error: 'Beim Löschen des Freigabelinks ist ein Fehler aufgetreten.',
|
||||
com_ui_share_create_message:
|
||||
'Ihr Name und alle Nachrichten, die Sie nach dem Teilen hinzufügen, bleiben privat.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -1151,6 +1153,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Link zum Chat teilen',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Beim Löschen des Freigabelinks ist ein Fehler aufgetreten.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Beim Löschen des Freigabelinks ist ein Fehler aufgetreten.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Beim Teilen des Chat-Links ist ein Fehler aufgetreten',
|
||||
|
|
|
|||
|
|
@ -248,6 +248,8 @@ export default {
|
|||
com_ui_no_prompt_description: 'No description found.',
|
||||
com_ui_share_link_to_chat: 'Share link to chat',
|
||||
com_ui_share_error: 'There was an error sharing the chat link',
|
||||
com_ui_share_retrieve_error: 'There was an error retrieving the shared links',
|
||||
com_ui_share_delete_error: 'There was an error deleting the shared link',
|
||||
com_ui_share_create_message: 'Your name and any messages you add after sharing stay private.',
|
||||
com_ui_share_created_message:
|
||||
'A shared link to your chat has been created. Manage previously shared chats at any time via Settings.',
|
||||
|
|
|
|||
|
|
@ -142,6 +142,8 @@ export default {
|
|||
com_ui_create_link: 'Crear enlace',
|
||||
com_ui_share_link_to_chat: 'Compartir enlace en el chat',
|
||||
com_ui_share_error: 'Hubo un error al compartir el enlace del chat',
|
||||
com_ui_share_retrieve_error: 'Hubo un error al eliminar el enlace compartido.',
|
||||
com_ui_share_delete_error: 'Hubo un error al eliminar el enlace compartido.',
|
||||
com_ui_share_create_message:
|
||||
'Tu nombre y cualquier mensaje que agregues después de compartir se mantendrán privados.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -1124,6 +1126,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Compartir enlace en el chat',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Hubo un error al eliminar el enlace compartido.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Hubo un error al eliminar el enlace compartido.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Hubo un error al compartir el enlace del chat',
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ export default {
|
|||
com_ui_share: 'Share',
|
||||
com_ui_share_link_to_chat: 'Share link to chat',
|
||||
com_ui_share_error: 'There was an error sharing the chat link',
|
||||
com_ui_share_retrieve_error: 'Une erreur est survenue lors de la suppression du lien partagé.',
|
||||
com_ui_share_delete_error: 'Une erreur est survenue lors de la suppression du lien partagé.',
|
||||
com_ui_share_create_message: 'Your name and any messages you add after sharing stay private.',
|
||||
com_ui_share_created_message:
|
||||
'A shared link to your chat has been created. Manage previously shared chats at any time via Settings.',
|
||||
|
|
@ -824,6 +826,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Share link to chat',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Une erreur est survenue lors de la suppression du lien partagé.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Une erreur est survenue lors de la suppression du lien partagé.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'There was an error sharing the chat link',
|
||||
|
|
|
|||
|
|
@ -96,6 +96,8 @@ export default {
|
|||
com_ui_create_link: 'צור קישור',
|
||||
com_ui_share_link_to_chat: 'שתף קישור בצ\'אט',
|
||||
com_ui_share_error: 'אירעה שגיאה בעת שיתוף קישור הצ\'אט',
|
||||
com_ui_share_retrieve_error: 'אירעה שגיאה בעת מחיקת הקישור המשותף.',
|
||||
com_ui_share_delete_error: 'אירעה שגיאה בעת מחיקת הקישור המשותף.',
|
||||
com_ui_share_create_message: 'שמך וכל הודעה שתוסיף לאחר השיתוף יישארו פרטיים.',
|
||||
com_ui_share_created_message:
|
||||
'A shared link to your chat has been created. Manage previously shared chats at any time via Settings.',
|
||||
|
|
@ -759,6 +761,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'שתף קישור בצ\'אט',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'אירעה שגיאה בעת מחיקת הקישור המשותף.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'אירעה שגיאה בעת מחיקת הקישור המשותף.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'אירעה שגיאה בעת שיתוף קישור הצ\'אט',
|
||||
|
|
|
|||
|
|
@ -65,6 +65,8 @@ export default {
|
|||
com_ui_create_link: 'Buat tautan',
|
||||
com_ui_share_link_to_chat: 'Bagikan tautan ke chat',
|
||||
com_ui_share_error: 'Terjadi kesalahan saat membagikan tautan chat',
|
||||
com_ui_share_retrieve_error: 'Terjadi kesalahan saat menghapus tautan yang dibagikan.',
|
||||
com_ui_share_delete_error: 'Terjadi kesalahan saat menghapus tautan yang dibagikan.',
|
||||
com_ui_share_create_message:
|
||||
'Nama Anda dan pesan apa pun yang Anda tambahkan setelah berbagi tetap pribadi.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -616,6 +618,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Bagikan tautan ke chat',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Terjadi kesalahan saat menghapus tautan yang dibagikan.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Terjadi kesalahan saat menghapus tautan yang dibagikan.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Terjadi kesalahan saat membagikan tautan chat',
|
||||
|
|
|
|||
|
|
@ -192,6 +192,9 @@ export default {
|
|||
com_ui_create_link: 'Crea link',
|
||||
com_ui_share_link_to_chat: 'Condividi link a chat',
|
||||
com_ui_share_error: 'Si è verificato un errore durante la condivisione del link della chat',
|
||||
com_ui_share_retrieve_error:
|
||||
'Si è verificato un errore durante l\'eliminazione del link condiviso.',
|
||||
com_ui_share_delete_error: 'Si è verificato un errore durante l\'eliminazione del link condiviso.',
|
||||
com_ui_share_create_message:
|
||||
'Il tuo nome e qualsiasi messaggio aggiunto dopo la condivisione rimarranno privati.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -1286,6 +1289,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Condividi link a chat',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Si è verificato un errore durante l\'eliminazione del link condiviso.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Si è verificato un errore durante l\'eliminazione del link condiviso.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Si è verificato un errore durante la condivisione del link della chat',
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@ export default {
|
|||
com_ui_create_link: 'リンクを作成する',
|
||||
com_ui_share_link_to_chat: 'チャットへの共有リンク',
|
||||
com_ui_share_error: 'チャットの共有リンクの共有中にエラーが発生しました',
|
||||
com_ui_share_retrieve_error: '共有リンクの削除中にエラーが発生しました。',
|
||||
com_ui_share_delete_error: '共有リンクの削除中にエラーが発生しました。',
|
||||
com_ui_share_create_message:
|
||||
'あなたの名前と共有リンクを作成した後のメッセージは、共有されません。',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -1140,6 +1142,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'チャットへの共有リンク',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: '共有リンクの削除中にエラーが発生しました。',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: '共有リンクの削除中にエラーが発生しました。',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'チャットの共有リンクの共有中にエラーが発生しました',
|
||||
|
|
|
|||
|
|
@ -55,6 +55,8 @@ export default {
|
|||
com_ui_create_link: '링크 만들기',
|
||||
com_ui_share_link_to_chat: '채팅으로 링크 공유하기',
|
||||
com_ui_share_error: '채팅 링크를 공유하는 동안 오류가 발생했습니다',
|
||||
com_ui_share_retrieve_error: '공유 링크를 삭제하는 중에 오류가 발생했습니다.',
|
||||
com_ui_share_delete_error: '공유 링크를 삭제하는 중에 오류가 발생했습니다.',
|
||||
com_ui_share_create_message: '이름과 공유 후에 추가하는 메시지는 비공개로 유지됩니다.',
|
||||
com_ui_share_created_message:
|
||||
'귀하의 채팅에 대한 공유 링크가 생성되었습니다. 설정을 통해 언제든지 이전에 공유한 채팅을 관리할 수 있습니다.',
|
||||
|
|
@ -781,6 +783,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: '채팅으로 링크 공유하기',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: '공유 링크를 삭제하는 중에 오류가 발생했습니다.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: '공유 링크를 삭제하는 중에 오류가 발생했습니다.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: '채팅 링크를 공유하는 동안 오류가 발생했습니다',
|
||||
|
|
|
|||
|
|
@ -59,6 +59,9 @@ export default {
|
|||
com_ui_create_link: 'Link aanmaken',
|
||||
com_ui_share_link_to_chat: 'Deel link naar chat',
|
||||
com_ui_share_error: 'Er is een fout opgetreden bij het delen van de chatlink',
|
||||
com_ui_share_retrieve_error:
|
||||
'Er is een fout opgetreden bij het verwijderen van de gedeelde link.',
|
||||
com_ui_share_delete_error: 'Er is een fout opgetreden bij het verwijderen van de gedeelde link.',
|
||||
com_ui_share_create_message:
|
||||
'Uw naam en alle berichten die u na het delen toevoegt, blijven privé.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -534,6 +537,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Deel link naar chat',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Er is een fout opgetreden bij het verwijderen van de gedeelde link.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Er is een fout opgetreden bij het verwijderen van de gedeelde link.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Er is een fout opgetreden bij het delen van de chatlink',
|
||||
|
|
|
|||
|
|
@ -36,7 +36,10 @@ export default {
|
|||
com_ui_create_link: 'Utwórz link',
|
||||
com_ui_share_link_to_chat: 'Udostępnij link w czacie',
|
||||
com_ui_share_error: 'Wystąpił błąd podczas udostępniania linku do czatu',
|
||||
com_ui_share_create_message: 'Twoje imię i jakiekolwiek wiadomości dodane po udostępnieniu pozostaną prywatne.',
|
||||
com_ui_share_retrieve_error: 'Wystąpił błąd podczas usuwania udostępnionego linku.',
|
||||
com_ui_share_delete_error: 'Wystąpił błąd podczas usuwania udostępnionego linku.',
|
||||
com_ui_share_create_message:
|
||||
'Twoje imię i jakiekolwiek wiadomości dodane po udostępnieniu pozostaną prywatne.',
|
||||
com_ui_share_created_message:
|
||||
'Utworzono link udostępniony do Twojego czatu. Zarządzaj wcześniej udostępnionymi czatami w dowolnym momencie za pomocą Ustawień.',
|
||||
com_ui_share_update_message:
|
||||
|
|
@ -360,6 +363,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Udostępnij link w czacie',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Wystąpił błąd podczas usuwania udostępnionego linku.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Wystąpił błąd podczas usuwania udostępnionego linku.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Wystąpił błąd podczas udostępniania linku do czatu',
|
||||
|
|
|
|||
|
|
@ -71,6 +71,8 @@ export default {
|
|||
com_ui_create_link: 'Создать ссылку',
|
||||
com_ui_share_link_to_chat: 'Поделиться ссылкой в чате',
|
||||
com_ui_share_error: 'Произошла ошибка при попытке поделиться ссылкой на чат',
|
||||
com_ui_share_retrieve_error: 'Произошла ошибка при удалении общей ссылки.',
|
||||
com_ui_share_delete_error: 'Произошла ошибка при удалении общей ссылки.',
|
||||
com_ui_share_create_message:
|
||||
'Ваше имя и любые сообщения, которые вы добавите после обмена, останутся конфиденциальными.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -854,6 +856,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Поделиться ссылкой в чате',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Произошла ошибка при удалении общей ссылки.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Произошла ошибка при удалении общей ссылки.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Произошла ошибка при попытке поделиться ссылкой на чат',
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ export default {
|
|||
com_ui_create_link: 'Skapa länk',
|
||||
com_ui_share_link_to_chat: 'Dela länk till chatt',
|
||||
com_ui_share_error: 'Ett fel uppstod vid delning av chattlänken',
|
||||
com_ui_share_retrieve_error: 'Ett fel uppstod vid borttagningen av den delade länken.',
|
||||
com_ui_share_delete_error: 'Ett fel uppstod vid borttagningen av den delade länken.',
|
||||
com_ui_share_create_message:
|
||||
'Ditt namn och alla meddelanden du lägger till efter delningen förblir privata.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -514,6 +516,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Dela länk till chatt',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Ett fel uppstod vid borttagningen av den delade länken.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Ett fel uppstod vid borttagningen av den delade länken.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Ett fel uppstod vid delning av chattlänken',
|
||||
|
|
|
|||
|
|
@ -58,6 +58,8 @@ export default {
|
|||
com_ui_create_link: 'Bağlantı oluştur',
|
||||
com_ui_share_link_to_chat: 'Bağlantıyı sohbete paylaş',
|
||||
com_ui_share_error: 'Sohbet bağlantısını paylaşırken bir hata oluştu',
|
||||
com_ui_share_retrieve_error: 'Paylaşılan bağlantıyı silerken bir hata oluştu.',
|
||||
com_ui_share_delete_error: 'Paylaşılan bağlantıyı silerken bir hata oluştu.',
|
||||
com_ui_share_create_message:
|
||||
'Adınız ve paylaşım sonrasında eklediğiniz herhangi bir mesaj özel kalır.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -550,6 +552,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Bağlantıyı sohbete paylaş',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Paylaşılan bağlantıyı silerken bir hata oluştu.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Paylaşılan bağlantıyı silerken bir hata oluştu.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Sohbet bağlantısını paylaşırken bir hata oluştu',
|
||||
|
|
|
|||
|
|
@ -58,6 +58,8 @@ export default {
|
|||
com_ui_create_link: 'Tạo liên kết',
|
||||
com_ui_share_link_to_chat: 'Chia sẻ liên kết đến cuộc trò chuyện',
|
||||
com_ui_share_error: 'Có lỗi xảy ra khi chia sẻ liên kết trò chuyện',
|
||||
com_ui_share_retrieve_error: 'Đã xảy ra lỗi khi xóa liên kết được chia sẻ.',
|
||||
com_ui_share_delete_error: 'Đã xảy ra lỗi khi xóa liên kết được chia sẻ.',
|
||||
com_ui_share_create_message:
|
||||
'Tên của bạn và bất kỳ tin nhắn nào bạn thêm sau khi chia sẻ sẽ được giữ kín.',
|
||||
com_ui_share_created_message:
|
||||
|
|
@ -513,6 +515,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: 'Chia sẻ liên kết đến cuộc trò chuyện',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Đã xảy ra lỗi khi xóa liên kết được chia sẻ.',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: 'Đã xảy ra lỗi khi xóa liên kết được chia sẻ.',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: 'Có lỗi xảy ra khi chia sẻ liên kết trò chuyện',
|
||||
|
|
|
|||
|
|
@ -137,6 +137,8 @@ export default {
|
|||
com_ui_create_link: '创建链接',
|
||||
com_ui_share_link_to_chat: '分享链接到聊天',
|
||||
com_ui_share_error: '分享聊天链接时发生错误',
|
||||
com_ui_share_retrieve_error: '删除共享链接时出错。',
|
||||
com_ui_share_delete_error: '删除共享链接时出错。',
|
||||
com_ui_share_create_message: '您的名字及您在分享后添加的任何消息将保持私密。',
|
||||
com_ui_share_created_message: '已创建到您聊天的共享链接。可以通过设置随时管理以前共享的聊天。',
|
||||
com_ui_share_update_message: '您的名字、定制指令及您在分享后添加的任何消息将保持私密。',
|
||||
|
|
@ -1073,6 +1075,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: '分享链接到聊天',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: '删除共享链接时出错。',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: '删除共享链接时出错。',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: '分享聊天链接时发生错误',
|
||||
|
|
|
|||
|
|
@ -55,6 +55,8 @@ export default {
|
|||
com_ui_create_link: '建立連結',
|
||||
com_ui_share_link_to_chat: '分享連結到聊天',
|
||||
com_ui_share_error: '分享聊天連結時發生錯誤',
|
||||
com_ui_share_retrieve_error: '刪除共享鏈接時出錯。',
|
||||
com_ui_share_delete_error: '刪除共享鏈接時出錯。',
|
||||
com_ui_share_create_message: '您的姓名以及您在共享後新增的任何訊息都會保密。',
|
||||
com_ui_share_created_message: '已建立到您的聊天的共享連結。可以隨時透過設定管理以前共享的聊天。',
|
||||
com_ui_share_update_message: '您的姓名、自定義指示以及您在共享後新增的任何訊息都會保密。',
|
||||
|
|
@ -759,6 +761,14 @@ export const comparisons = {
|
|||
english: 'Share link to chat',
|
||||
translated: '分享連結到聊天',
|
||||
},
|
||||
com_ui_share_retrieve_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: '刪除共享鏈接時出錯。',
|
||||
},
|
||||
com_ui_share_delete_error: {
|
||||
english: 'There was an error deleting the shared link.',
|
||||
translated: '刪除共享鏈接時出錯。',
|
||||
},
|
||||
com_ui_share_error: {
|
||||
english: 'There was an error sharing the chat link',
|
||||
translated: '分享聊天連結時發生錯誤',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue