🚀feat: Archive conversations (#2590)

* 🔧chore: add internationalization labels for archive feature

*  feat: Add function to useArchiveConversationMutation()

This commit adds a new mutation function `useArchiveConversationMutation()` for archiving conversations. This function takes the ID string of the conversation to be archived and returns a mutation result object. Upon successful archiving, it removes and refreshes the conversation from the query data cache.
While ChatGPT PATCHes the archived status by sending `{is_archived: true}` to the URL `/backend-api/conversation/$conversation_id`, this implementation uses the `dataService.updateConversation(payload)` with a POST method, aligning with the existing code conventions.

*  feat(api): add is_archived field to Conversation schema and update getConvosByPage method

This commit adds a new field `is_archived` with a default value of false to the Conversation schema. It also modifies the `getConvosByPage` method within the Conversation API to adjust the query to only target conversations where `is_archived` is set to false or where the `is_archived` field does not exist. The function `getConvosQueried`, which returns conversations for a specified Conversation ID, was determined not to require consideration of whether `is_archived` is true or false, and thus was not modified.

* ♻️ refactor: add className prop to DotsIcon component

To enhance the versatility of the DotsIcon component, this commit introduces the ability to specify a className prop, allowing for greater customization.

*  feat(ui): add Edit Button to group Title change and Conversation delete buttons

Added a new Edit Button to the conversations, similar to the ChatGPT UI, which groups options for editing the conversation title and deleting conversations. This grouping is accessible through a dialogue that appears when the three-dot icon is clicked.

* ♻️ refactor(ui): enhance Delete Button to accept className and label options

Enhanced the Delete Button component to accept a `className` for customization and an optional `appendLabel`. The DeleteButton component is used by both `Convo.tsx` and `Conversation.tsx`, but currently only `Convo.tsx` is active and `Conversation.tsx `is apparently not used; removing `Conversation.tsx` may eliminate the need for the `appendLabel` property in the future.

* ♻️ refactor(ui): enhance RenameButton to accept label options

Added the ability to optionally display labels; the Rename Button component is used by both `Convo.tsx` and `Conversation.tsx`, but currently only `Convo.tsx` is active and `Conversation.tsx `is apparently not used; removing `Conversation.tsx` may eliminate the need for the `appendLabel` property in the future.

* 🔧 chors: additional localization labels

* ♻️  refactor: change is_archived property of conversation to camelCase

* Refactor the is_archived property of conversation to camelCase (isArchived) to adhere to the existing code conventions
* Modify the function that retrieves conversations to accept the isArchived parameter

* ♻️ refactor: add archiveConversation mutation

I thought I could divert dataService.updateConversation, but added a new archiveConversation because the request types are different. It might be better to make them common, but to avoid side effects, I added a new function this time.
Added process to deleteConversationMutation to delete archived conversations

*  feat: Add the function to hide a cancel button in DialogTemplate component

The Cancel button is not needed when displaying the archive list, so I made the Cancel button optional.

* ♻️ refactor: Add support for filtering archived conversations in Nav component

This commit modifies the Nav component to add the ability to filter out archived conversations when fetching data. This is done by adding `isArchived: false` to the query parameters for both the `useConversationsInfiniteQuery()` and `useSearchInfiniteQuery()` hooks, effectively excluding any archived conversations from the results returned.

* ♻️ refactor: add Tooltip to DeleteButton

* Add Tooltip to DeleteButton component
* Display Tooltip when DeleteButton only shows an Icon without text

*  feat(ui): add ArchiveButton component for archiving conversations

To be compatible with the ChatGPT UI, no confirmation dialog is displayed when ArchiveButton is clicked. The basic behavior conforms to DeleteButton and RenameButton.

*  feat(ui): add Archive button to list of conversations

Modify the Nav of the conversation list to include a dropdown that contains the Rename and Delete options, similar to the ChatGPT UI. Additionally, an Archive button has been added adjacent to the dropdown menu.

*  feat: Add ArchivedChatsTable component

Adds the `ArchivedChatsTable` component, which displays a table of archived chats. It has been implemented to be as compatible with the ChatGPT UI as possible.

* 🚑 fix(tooltip): increase z-index to ensure visibility over Dialog

Resolve an issue where tooltips were not visible when displayed over a Dialog. The z-index of `DialogPrimitive.Portal` in `Dialog.tsx` is set to 999. Since the rationale for this value is unclear, the z-index of the tooltip has been increased to 1000 to guarantee its visibility above the Dialog component.

* 🔧 chors: add internationalization labels
This commit is contained in:
Yuichi Ohneda 2024-05-06 20:07:00 -07:00 committed by GitHub
parent 436f7195b5
commit 89b1e33be0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
41 changed files with 792 additions and 66 deletions

View file

@ -36,19 +36,23 @@ export default {
com_assistants_domain_info: 'Assistent hat diese Info an {0} gesendet',
com_assistants_delete_actions_success: 'Aktion vom Assistant erfolgreich gelöscht',
com_assistants_update_actions_success: 'Erfolgreich erstellte oder aktualisierte Aktion',
com_assistants_update_actions_error: 'Beim Erstellen oder Aktualisieren der Aktion ist ein Fehler aufgetreten.',
com_assistants_update_actions_error:
'Beim Erstellen oder Aktualisieren der Aktion ist ein Fehler aufgetreten.',
com_assistants_delete_actions_error: 'Beim Löschen der Aktion ist ein Fehler aufgetreten.',
com_assistants_actions_info: 'Lass deinen Assistenten Informationen abrufen oder Aktionen über API\'s ausführen',
com_assistants_actions_info:
'Lass deinen Assistenten Informationen abrufen oder Aktionen über API\'s ausführen',
com_assistants_name_placeholder: 'Optional: Der Name des Assistenten',
com_assistants_instructions_placeholder: 'Die Systemanweisungen, die der Assistent verwendet',
com_assistants_description_placeholder: 'Optional: Beschreibe hier deinen Assistenten',
com_assistants_actions_disabled: 'Du musst einen Assistenten erstellen, bevor du Aktionen hinzufügen kannst.',
com_assistants_actions_disabled:
'Du musst einen Assistenten erstellen, bevor du Aktionen hinzufügen kannst.',
com_assistants_update_success: 'Erfolgreich aktualisiert',
com_assistants_update_error: 'Beim Aktualisieren deines Assistenten ist ein Fehler aufgetreten.',
com_assistants_create_success: 'Erfolgreich erstellt',
com_assistants_create_error: 'Bei der Erstellung deines Assistenten ist ein Fehler aufgetreten.',
com_ui_field_required: 'Dieses Feld ist erforderlich',
com_ui_download_error: 'Fehler beim Herunterladen der Datei. Die Datei wurde möglicherweise gelöscht.',
com_ui_download_error:
'Fehler beim Herunterladen der Datei. Die Datei wurde möglicherweise gelöscht.',
com_ui_attach_error_type: 'Nicht unterstützter Dateityp für Endpunkt:',
com_ui_attach_error_size: 'Dateigrößenlimit für den Endpunkt überschritten:',
com_ui_attach_error:
@ -57,10 +61,12 @@ export default {
com_ui_new_chat: 'Neuer Chat',
com_ui_happy_birthday: 'Es ist mein 1. Geburtstag!',
com_ui_example_quantum_computing: 'Erkläre Quantencomputing in einfachen Worten',
com_ui_example_10_year_old_b_day: 'Hast du eine kreative Idee für den Geburtstag eines 10-Jährigen?',
com_ui_example_10_year_old_b_day:
'Hast du eine kreative Idee für den Geburtstag eines 10-Jährigen?',
com_ui_example_http_in_js: 'Wie stelle ich eine HTTP-Anfrage in Javascript?',
com_ui_capabilities: 'Funktionen',
com_ui_capability_remember: 'Erinnert sich daran, was der Benutzer zu einem früheren Zeitpunkt in der Konversation gesagt hat',
com_ui_capability_remember:
'Erinnert sich daran, was der Benutzer zu einem früheren Zeitpunkt in der Konversation gesagt hat',
com_ui_capability_correction: 'Ermöglicht es dem Benutzer, nachträgliche Korrekturen vorzunehmen',
com_ui_capability_decline_requests: 'Ermöglicht es, unangemessene Anfragen abzulehnen',
com_ui_limitations: 'Limitationen',
@ -110,7 +116,8 @@ export default {
com_ui_submit: 'Abschicken',
com_ui_upload_success: 'Erfolgreich hochgeladene Datei',
com_ui_upload_error: 'Beim Hochladen deiner Datei ist ein Fehler aufgetreten',
com_ui_upload_invalid: 'Ungültige Datei zum Hochladen. Muss ein Bild sein, das nicht größer als 2 MB ist',
com_ui_upload_invalid:
'Ungültige Datei zum Hochladen. Muss ein Bild sein, das nicht größer als 2 MB ist',
com_ui_cancel: 'Abbrechen',
com_ui_save: 'Speichern',
com_ui_save_submit: 'Speichern & Absenden',
@ -145,6 +152,12 @@ export default {
com_ui_delete_conversation_confirm: 'Damit wird gelöscht',
com_ui_delete_assistant_confirm:
'Bist du sicher, dass du diesen Assistenten löschen willst? Dies kann nicht rückgängig gemacht werden.',
com_ui_rename: 'Umbenennen',
com_ui_archive: 'Archiv',
com_ui_archive_error: 'Fehler beim Archivieren der Konversation',
com_ui_unarchive: 'Entarchivieren',
com_ui_unarchive_error: 'Fehler beim Entarchivieren der Konversation',
com_ui_more_options: 'Mehr',
com_ui_preview: 'Vorschau',
com_ui_upload: 'Hochladen',
com_ui_connect: 'Verbinden',
@ -240,7 +253,8 @@ export default {
com_endpoint_google_maxoutputtokens:
' Maximale Anzahl von Token, die in der Antwort erzeugt werden können. Gib einen niedrigeren Wert für kürzere Antworten und einen höheren Wert für längere Antworten an.',
com_endpoint_google_custom_name_placeholder: 'Setze einen benutzerdefinierten Namen für Google',
com_endpoint_prompt_prefix_placeholder: 'Setze benutzerdefinierte Anweisungen oder Kontext. Ignoriert, wenn leer.',
com_endpoint_prompt_prefix_placeholder:
'Setze benutzerdefinierte Anweisungen oder Kontext. Ignoriert, wenn leer.',
com_endpoint_instructions_assistants_placeholder:
'Setzt die Anweisungen des Assistenten außer Kraft. Dies ist nützlich, um das Verhalten pro Lauf zu ändern.',
com_endpoint_prompt_prefix_assistants_placeholder:
@ -294,13 +308,18 @@ export default {
com_endpoint_plug_set_custom_instructions_for_gpt_placeholder:
'Setzt benutzerdefinierte Anweisungen, die in die Systemaufforderung aufgenommen werden. Standard: keine',
com_endpoint_import: 'Importieren',
com_endpoint_set_custom_name: 'Lege einen benutzerdefinierten Namen fest, für den Fall, dass du diese Vorgabe finden kannst',
com_endpoint_set_custom_name:
'Lege einen benutzerdefinierten Namen fest, für den Fall, dass du diese Vorgabe finden kannst',
com_endpoint_preset_delete_confirm: 'Bist du sicher, dass du diese Vorgabe löschen willst?',
com_endpoint_preset_clear_all_confirm: 'Bist du sicher, dass du alle deine Voreinstellungen löschen willst?',
com_endpoint_preset_clear_all_confirm:
'Bist du sicher, dass du alle deine Voreinstellungen löschen willst?',
com_endpoint_preset_import: 'Voreinstellung importiert!',
com_endpoint_preset_import_error: 'Beim Import deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es erneut.',
com_endpoint_preset_save_error: 'Es ist ein Fehler beim Speichern deiner Voreinstellung aufgetreten. Bitte versuche es noch einmal.',
com_endpoint_preset_delete_error: 'Beim Löschen deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es noch einmal.',
com_endpoint_preset_import_error:
'Beim Import deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es erneut.',
com_endpoint_preset_save_error:
'Es ist ein Fehler beim Speichern deiner Voreinstellung aufgetreten. Bitte versuche es noch einmal.',
com_endpoint_preset_delete_error:
'Beim Löschen deiner Voreinstellung ist ein Fehler aufgetreten. Bitte versuche es noch einmal.',
com_endpoint_preset_default_removed: 'ist nicht mehr die Standardvorgabe.',
com_endpoint_preset_default_item: 'Standard:',
com_endpoint_preset_default_none: 'Keine Standardvoreinstellung aktiv.',
@ -328,7 +347,8 @@ export default {
com_endpoint_presets_clear_warning:
'Bist du sicher, dass du alle Voreinstellungen löschen willst? Dies ist nicht umkehrbar.',
com_endpoint_not_implemented: 'Nicht implementiert',
com_endpoint_no_presets: 'Es gibt noch keine Voreinstellungen, verwende die Schaltfläche Einstellungen, um eine zu erstellen',
com_endpoint_no_presets:
'Es gibt noch keine Voreinstellungen, verwende die Schaltfläche Einstellungen, um eine zu erstellen',
com_endpoint_not_available: 'Kein Endpunkt verfügbar',
com_endpoint_view_options: 'Ansichtsoptionen',
com_endpoint_save_convo_as_preset: 'Konversation als Voreinstellung speichern',
@ -339,7 +359,8 @@ export default {
com_endpoint_skip_hover:
'Aktiviere das Überspringen des Abschlussschritts, der die endgültige Antwort und die generierten Schritte überprüft',
com_endpoint_config_key: 'API-Schlüssel festlegen',
com_endpoint_assistant_placeholder: 'Bitte wähle einen Assistenten aus dem rechter Seitenleiste aus',
com_endpoint_assistant_placeholder:
'Bitte wähle einen Assistenten aus dem rechter Seitenleiste aus',
com_endpoint_config_placeholder: 'Setze deinen Schlüssel im Header-Menü ein, um zu chatten.',
com_endpoint_config_key_for: 'Setze den API-Schlüssel für',
com_endpoint_config_key_name: 'Schlüssel',
@ -352,17 +373,22 @@ export default {
com_endpoint_config_google_cloud_platform: '(von Google Cloud Platform)',
com_endpoint_config_google_api_key: 'Google API Key',
com_endpoint_config_google_gemini_api: '(Gemini API)',
com_endpoint_config_google_api_info: 'Um deinen Generative Language API-Schlüssel (für Gemini) zu erhalten,',
com_endpoint_config_google_api_info:
'Um deinen Generative Language API-Schlüssel (für Gemini) zu erhalten,',
com_endpoint_config_key_import_json_key: 'Import Service Account JSON Key.',
com_endpoint_config_key_import_json_key_success: 'Erfolgreich importierter Service Account JSON Key',
com_endpoint_config_key_import_json_key_success:
'Erfolgreich importierter Service Account JSON Key',
com_endpoint_config_key_import_json_key_invalid:
'Ungültiger Service Account JSON Key, Hast du die richtige Datei importiert?',
com_endpoint_config_key_get_edge_key: 'Um dein Access Token für Bing zu erhalten, melde dich an bei',
com_endpoint_config_key_get_edge_key:
'Um dein Access Token für Bing zu erhalten, melde dich an bei',
com_endpoint_config_key_get_edge_key_dev_tool:
'Verwende Dev-Tools oder eine Erweiterung, während du auf der Website angemeldet bist, um den Inhalt des _U-Cookies zu kopieren. Wenn dies fehlschlägt, befolge die folgenden Anweisungen',
com_endpoint_config_key_edge_instructions: 'Anweisungen',
com_endpoint_config_key_edge_full_key_string: 'um die vollständigen Cookie-Strings bereitzustellen.',
com_endpoint_config_key_chatgpt: 'Um dein Zugangstoken für ChatGPT \'Free Version\' zu erhalten, melde dich bei',
com_endpoint_config_key_edge_full_key_string:
'um die vollständigen Cookie-Strings bereitzustellen.',
com_endpoint_config_key_chatgpt:
'Um dein Zugangstoken für ChatGPT \'Free Version\' zu erhalten, melde dich bei',
com_endpoint_config_key_chatgpt_then_visit: 'dann besuche',
com_endpoint_config_key_chatgpt_copy_token: 'Kopiere das Zugangstoken.',
com_endpoint_config_key_google_need_to: 'Du musst',
@ -385,7 +411,8 @@ export default {
com_nav_tool_add: 'Hinzufügen',
com_nav_tool_remove: 'Löschen',
com_nav_tool_dialog: 'Assistententools',
com_nav_tool_dialog_description: 'Der Assistent muss gespeichert werden, um die Werkzeugauswahl beizubehalten.',
com_nav_tool_dialog_description:
'Der Assistent muss gespeichert werden, um die Werkzeugauswahl beizubehalten.',
com_show_agent_settings: 'Agent-Einstellungen anzeigen',
com_show_completion_settings: 'Fertigstellungseinstellungen anzeigen',
com_hide_examples: 'Beispiele ausblenden',
@ -418,6 +445,13 @@ export default {
com_nav_send_message: 'Nachricht senden',
com_nav_log_out: 'Abmelden',
com_nav_user: 'NUTZER',
com_nav_archived_chats: 'Archivierte Chats',
com_nav_archived_chats_manage: 'Verwalten',
com_nav_archived_chats_empty: 'Keine archivierten Chats',
com_nav_archive_all_chats: 'Alle Chats archivieren',
com_nav_archive_all: 'Archivieren',
com_nav_archive_name: 'Name',
com_nav_archive_created_at: 'ErstelltAm',
com_nav_clear_conversation: 'Unterhaltungen löschen',
com_nav_clear_conversation_confirm_message:
'Bist du sicher, dass du alle Unterhaltungen löschen willst? Dies ist unumkehrbar.',
@ -429,4 +463,4 @@ export default {
com_nav_setting_data: 'Datenkontrollen',
com_nav_setting_account: 'Konto',
com_nav_language: 'Sprache',
};
};