Better handling of missing files

This commit is contained in:
jeffser 2024-06-04 18:53:41 -06:00
parent 4ececd850b
commit 2d8cb68628

View File

@ -414,6 +414,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
def preview_file(self, file_path, file_type): def preview_file(self, file_path, file_type):
content = self.get_content_of_file(file_path, file_type) content = self.get_content_of_file(file_path, file_type)
if content:
buffer = self.file_preview_text_view.get_buffer() buffer = self.file_preview_text_view.get_buffer()
buffer.delete(buffer.get_start_iter(), buffer.get_end_iter()) buffer.delete(buffer.get_start_iter(), buffer.get_end_iter())
buffer.insert(buffer.get_start_iter(), content, len(content)) buffer.insert(buffer.get_start_iter(), content, len(content))
@ -429,13 +430,15 @@ class AlpacaWindow(Adw.ApplicationWindow):
new_message['content'] = '' new_message['content'] = ''
for name, file_type in message['files'].items(): for name, file_type in message['files'].items():
file_path = os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, name) file_path = os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, name)
new_message['content'] += f"```[{name}]\n{self.get_content_of_file(file_path, file_type)}\n```" file_data = self.get_content_of_file(file_path, file_type)
if file_data: new_message['content'] += f"```[{name}]\n{file_data}\n```"
new_message['content'] += message['content'] new_message['content'] += message['content']
if 'images' in message and len(message['images']) > 0: if 'images' in message and len(message['images']) > 0:
new_message['images'] = [] new_message['images'] = []
for name in message['images']: for name in message['images']:
file_path = os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, name) file_path = os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, name)
new_message['images'].append(self.get_content_of_file(file_path, 'image')) image_data = self.get_content_of_file(file_path, 'image')
if image_data: new_message['images'].append(image_data)
messages.append(new_message) messages.append(new_message)
return messages return messages
@ -497,8 +500,9 @@ class AlpacaWindow(Adw.ApplicationWindow):
child=image_container child=image_container
) )
for image in images: for image in images:
if os.path.exists(os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, image)): raw_data = self.get_content_of_file(os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, image), "image")
image_data = base64.b64decode(self.get_content_of_file(os.path.join(self.data_dir, "chats", self.chats['selected_chat'], id, image), "image")) if raw_data:
image_data = base64.b64decode(raw_data)
loader = GdkPixbuf.PixbufLoader.new() loader = GdkPixbuf.PixbufLoader.new()
loader.write(image_data) loader.write(image_data)
loader.close() loader.close()
@ -1104,6 +1108,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
self.verify_connection() self.verify_connection()
def get_content_of_file(self, file_path, file_type): def get_content_of_file(self, file_path, file_type):
if not os.path.exists(file_path) return None
if file_type == 'image': if file_type == 'image':
try: try:
with Image.open(file_path) as img: with Image.open(file_path) as img:
@ -1134,7 +1139,7 @@ class AlpacaWindow(Adw.ApplicationWindow):
def attach_file(self, file_path, file_type): def attach_file(self, file_path, file_type):
name = self.generate_numbered_name(os.path.basename(file_path), self.attachments.keys()) name = self.generate_numbered_name(os.path.basename(file_path), self.attachments.keys())
content = self.get_content_of_file(file_path, file_type) content = self.get_content_of_file(file_path, file_type)
if content:
shown_name='.'.join(name.split(".")[:-1])[:20] + (name[20:] and '..') + f".{name.split('.')[-1]}" shown_name='.'.join(name.split(".")[:-1])[:20] + (name[20:] and '..') + f".{name.split('.')[-1]}"
button_content = Adw.ButtonContent( button_content = Adw.ButtonContent(