Serialize Path objects to QML

- media_cache.get_(thumbnail/media) now return a Path instead of str
- When converted to strings in the serialization, the "file://" prefix
  is prepended. This fixes problems when the app is built in release
  mode with QRC resources.
This commit is contained in:
miruka 2019-11-07 03:56:55 -04:00
parent a8f4a00e5e
commit eee2162575
3 changed files with 8 additions and 5 deletions

View File

@ -1,6 +1,5 @@
- Media
- Verify things work with chat.privacytools.io (subdomain weirdness)
- Allow multiple file selection
- Confirmation box after picking file to upload
- Handle upload errors: non existent path, path is a dir, file too big, etc
- Show real progression for mxc thumbnail loadings, uploads and downloads

View File

@ -223,8 +223,8 @@ class MediaCache:
await Media(self, mxc, data, {}).create()
async def get_media(self, mxc: str, crypt_dict: CryptDict = None) -> str:
return str(await Media(self, mxc, None, crypt_dict).get())
async def get_media(self, mxc: str, crypt_dict: CryptDict = None) -> Path:
return await Media(self, mxc, None, crypt_dict).get()
async def create_thumbnail(
@ -236,10 +236,10 @@ class MediaCache:
async def get_thumbnail(
self, mxc: str, width: int, height: int, crypt_dict: CryptDict = None,
) -> str:
) -> Path:
thumb = Thumbnail(
# QML sometimes pass float sizes, which matrix API doesn't like.
self, mxc, None, crypt_dict, (round(width), round(height)),
)
return str(await thumb.get())
return await thumb.get()

View File

@ -3,6 +3,7 @@ import html
import xml.etree.cElementTree as xml_etree # FIXME: bandit warning
from enum import Enum
from enum import auto as autostr
from pathlib import Path
from typing import IO, Any, Tuple, Union
import filetype
@ -68,4 +69,7 @@ def serialize_value_for_qml(value: Any) -> Any:
if hasattr(value, "__class__") and issubclass(value.__class__, Enum):
return value.value
if isinstance(value, Path):
return f"file://{value!s}"
return value