🔧 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:
Yuichi Oneda 2024-06-21 07:12:37 -07:00 committed by GitHub
parent 3172381bad
commit 4e4de88faa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
23 changed files with 323 additions and 75 deletions

View file

@ -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 }) => {
const share = await SharedLink.findOne({ conversationId }).select('-_id -__v -user').lean();
if (share) {
return share;
}
try {
const share = await SharedLink.findOne({ conversationId }).select('-_id -__v -user').lean();
if (share) {
return share;
}
const shareId = crypto.randomUUID();
const messages = await getMessages({ conversationId });
const update = { ...shareData, shareId, messages, user };
@ -60,31 +60,42 @@ 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 }) => {
const share = await SharedLink.findOne({ conversationId }).select('-_id -__v -user').lean();
if (!share) {
return { message: 'Share not found' };
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 };
return await SharedLink.findOneAndUpdate({ conversationId: conversationId, user }, update, {
new: true,
upsert: false,
});
} catch (error) {
logger.error('[updateSharedLink] Error updating shared link', error);
throw new Error('Error updating shared link');
}
// update messages to the latest
const messages = await getMessages({ conversationId });
const update = { ...shareData, messages, user };
return await SharedLink.findOneAndUpdate({ conversationId: conversationId, user }, update, {
new: true,
upsert: false,
});
},
deleteSharedLink: async (user, { shareId }) => {
const share = await SharedLink.findOne({ shareId, user });
if (!share) {
return { message: 'Share not found' };
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');
}
return await SharedLink.findOneAndDelete({ shareId, user });
},
/**
* 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');
}
},
};

View file

@ -25,12 +25,16 @@ if (allowSharedLinks) {
'/:shareId',
allowSharedLinksPublic ? (req, res, next) => next() : requireJwtAuth,
async (req, res) => {
const share = await getSharedMessages(req.params.shareId);
try {
const share = await getSharedMessages(req.params.shareId);
if (share) {
res.status(200).json(share);
} else {
res.status(404).end();
if (share) {
res.status(200).json(share);
} else {
res.status(404).end();
}
} catch (error) {
res.status(500).json({ message: 'Error getting shared messages' });
}
},
);
@ -40,47 +44,63 @@ if (allowSharedLinks) {
* Shared links
*/
router.get('/', requireJwtAuth, async (req, res) => {
let pageNumber = req.query.pageNumber || 1;
pageNumber = parseInt(pageNumber, 10);
try {
let pageNumber = req.query.pageNumber || 1;
pageNumber = parseInt(pageNumber, 10);
if (isNaN(pageNumber) || pageNumber < 1) {
return res.status(400).json({ error: 'Invalid page number' });
if (isNaN(pageNumber) || pageNumber < 1) {
return res.status(400).json({ error: 'Invalid page number' });
}
let pageSize = req.query.pageSize || 25;
pageSize = parseInt(pageSize, 10);
if (isNaN(pageSize) || pageSize < 1) {
return res.status(400).json({ error: 'Invalid page size' });
}
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' });
}
let pageSize = req.query.pageSize || 25;
pageSize = parseInt(pageSize, 10);
if (isNaN(pageSize) || pageSize < 1) {
return res.status(400).json({ error: 'Invalid page size' });
}
const isPublic = req.query.isPublic === 'true';
res.status(200).send(await getSharedLinks(req.user.id, pageNumber, pageSize, isPublic));
});
router.post('/', requireJwtAuth, async (req, res) => {
const created = await createSharedLink(req.user.id, req.body);
if (created) {
res.status(200).json(created);
} else {
res.status(404).end();
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) => {
const updated = await updateSharedLink(req.user.id, req.body);
if (updated) {
res.status(200).json(updated);
} else {
res.status(404).end();
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) => {
const deleted = await deleteSharedLink(req.user.id, { shareId: req.params.shareId });
if (deleted) {
res.status(200).json(deleted);
} else {
res.status(404).end();
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' });
}
});

View file

@ -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) {

View file

@ -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>;
}

View file

@ -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: 'حدث خطأ أثناء مشاركة رابط الدردشة',

View file

@ -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',

View file

@ -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',

View file

@ -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.',

View file

@ -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',

View file

@ -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',

View file

@ -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: 'אירעה שגיאה בעת שיתוף קישור הצ\'אט',

View file

@ -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',

View file

@ -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',

View file

@ -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: 'チャットの共有リンクの共有中にエラーが発生しました',

View file

@ -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: '채팅 링크를 공유하는 동안 오류가 발생했습니다',

View file

@ -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',

View file

@ -36,13 +36,16 @@ 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ń.',
'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:
'Twoje imię, niestandardowe instrukcje i jakiekolwiek wiadomości dodane po udostępnieniu pozostaną prywatne.',
'Twoje imię, niestandardowe instrukcje i jakiekolwiek wiadomości dodane po udostępnieniu pozostaną prywatne.',
com_ui_share_updated_message:
'Link udostępniony do Twojego czatu został zaktualizowany. Zarządzaj wcześniej udostępnionymi czatami w dowolnym momencie za pomocą Ustawień.',
'Link udostępniony do Twojego czatu został zaktualizowany. Zarządzaj wcześniej udostępnionymi czatami w dowolnym momencie za pomocą Ustawień.',
com_ui_shared_link_not_found: 'Nie znaleziono linku udostępnionego',
com_ui_rename: 'Zmień nazwę',
com_ui_archive: 'Archiwum',
@ -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',
@ -370,7 +381,7 @@ export const comparisons = {
},
com_ui_share_created_message: {
english:
'A shared link to your chat has been created. Manage previously shared chats at any time via Settings.',
'A shared link to your chat has been created. Manage previously shared chats at any time via Settings.',
translated:
'Utworzono link udostępniony do Twojego czatu. Zarządzaj wcześniej udostępnionymi czatami w dowolnym momencie za pomocą Ustawień.',
},
@ -383,7 +394,7 @@ export const comparisons = {
english:
'A shared link to your chat has been updated. Manage previously shared chats at any time via Settings.',
translated:
'Link udostępniony do Twojego czatu został zaktualizowany. Zarządzaj wcześniej udostępnionymi czatami w dowolnym momencie za pomocą Ustawień.',
'Link udostępniony do Twojego czatu został zaktualizowany. Zarządzaj wcześniej udostępnionymi czatami w dowolnym momencie za pomocą Ustawień.',
},
com_ui_shared_link_not_found: {
english: 'Shared link not found',

View file

@ -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: 'Произошла ошибка при попытке поделиться ссылкой на чат',

View file

@ -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',

View file

@ -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',

View file

@ -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',

View file

@ -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: '分享聊天链接时发生错误',

View file

@ -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: '分享聊天連結時發生錯誤',