diff --git a/admin/dashboard/blueprints/messages.py b/admin/dashboard/blueprints/messages.py index eabe832..cd8b768 100644 --- a/admin/dashboard/blueprints/messages.py +++ b/admin/dashboard/blueprints/messages.py @@ -18,6 +18,19 @@ def _is_emoji_message(msg: dict) -> bool: return message_type in {'47', '1048625', '1090519089'} or any(marker in content for marker in xml_markers) +def _is_usable_local_media_path(value: str) -> bool: + if not value: + return False + value = str(value).strip() + if value.startswith(('http://', 'https://')): + return True + if 'static/images' in value or 'static\\images' in value: + return True + if '/' in value or '\\' in value: + return True + return False + + def _proxy_remote_media(target_url: str) -> Response: if not target_url: return Response("missing url", status=400) @@ -117,17 +130,11 @@ def get_messages(): referenced_msg = server.message_storage.get_message_by_message_id(reference_svrid) if referenced_msg: if msg['quoted_type'] == 'image': - msg['quoted_preview_image'] = ( - referenced_msg.get('image_path') - or referenced_msg.get('message_thumb') - or msg['quoted_preview_image'] - ) + image_path = referenced_msg.get('image_path') or '' + msg['quoted_preview_image'] = image_path if _is_usable_local_media_path(image_path) else '' elif msg['quoted_type'] == 'video': - msg['quoted_preview_video_thumb'] = ( - referenced_msg.get('message_thumb') - or referenced_msg.get('image_path') - or msg['quoted_preview_video_thumb'] - ) + video_thumb = referenced_msg.get('message_thumb') or referenced_msg.get('image_path') or '' + msg['quoted_preview_video_thumb'] = video_thumb if _is_usable_local_media_path(video_thumb) else '' else: # 其他类型的应用消息,解析 XML 提取标题 root = ET.fromstring(msg['content']) diff --git a/admin/dashboard/templates/message_list.html b/admin/dashboard/templates/message_list.html index 8b1229b..e3b0e30 100644 --- a/admin/dashboard/templates/message_list.html +++ b/admin/dashboard/templates/message_list.html @@ -98,6 +98,9 @@
+