Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avatar from MyProfile is being downloaded without an extension (.jpg, etc) #726

Closed
flutterVlad opened this issue Nov 20, 2023 · 2 comments · Fixed by #756
Closed

Avatar from MyProfile is being downloaded without an extension (.jpg, etc) #726

flutterVlad opened this issue Nov 20, 2023 · 2 comments · Fixed by #756
Assignees
Labels
bug Bugs and incorrectness problems k::UI/UX UI (user interface) and UX (user experience) changes

Comments

@flutterVlad
Copy link
Contributor

Summary

Когда в профиле загружена аватарка, при её скачивании из галереи скачивается файл без расширения. При проверке обнаружилось, что при скачивании в name передаётся checksum, и файл имеет имя checksum без расширения.

Steps to reproduce

  1. Установить аватар на странице профиля.
  2. Зайти в галерею аватара.
  3. Скачать изображение.
  4. Наблюдать, что файл скачен, но без расширения и определяется как файл, а не изображение.

What is the current bug behavior?

Скачивается файл без расширения.

What is the expected correct behavior?

Скачивается изображение с расширением.

@flutterVlad flutterVlad added bug Bugs and incorrectness problems k::performance Application performance related changes labels Nov 20, 2023
@flutterVlad flutterVlad added this to the 0.1.0-alpha.12 milestone Nov 20, 2023
@flutterVlad flutterVlad self-assigned this Nov 20, 2023
@SleepySquash SleepySquash moved this to Bugs in Roadmap Nov 20, 2023
@SleepySquash SleepySquash changed the title Downloading Avatar from MyProfile download file without an extention Avatar from MyProfile is being downloaded without an extension (.jpg, etc) Nov 20, 2023
@SleepySquash SleepySquash added k::UI/UX UI (user interface) and UX (user experience) changes and removed k::performance Application performance related changes labels Nov 20, 2023
@Alienjob
Copy link
Contributor

Имя изображения устанавливается в файле big_avatar.dart

216 GalleryItem.image(
217      avatar!.original.url, // 'https://messen ... riginal/.jpg'
218      avatar.original.checksum ?? DateTime.now().toString(), // имя изображения

Для корректного сохранения изображения можно получить расширение из url
Дату лучше отформатировать чтобы в имя файла не попали запрещенные символы
Либо имя файла можно полностью формировать из url, отбросив домен
'https://messenger.soc.stg.t11913.org/files/public/4c/5d/97/26/a2/40/41/21/9b/78/76/6e/49/46/97/5e/original/.jpg' => 4c5d9726a24041219b78766e4946975e.jpg
Формирование имени файла можно вынести в platform_utils.dart -> getImageFileName(ImageFile)

Затем в platform_utils.dart -> saveToGallery обрабатывает эти значения. Эта функция тоже имеет доступ к url и name и могла бы подставлять расширение, но она ожидает на вход корректное имя. Она так-же проверяет что расширение не svg.

Есть опасность что не только аватар передает в platform_utils.dart -> saveToGallery некорректные данные. Можно добавить assert что имя переданного файла содержит расширение и вызов getImageFileName(ImageFile) если имя не содержит расширения

Есть опасность что в url не будет расширения. Тогда для определения типа по содержимому файла воспользоваться util -> mime -> MimeResolver.

@SleepySquash
Copy link
Contributor

@Alienjob,

Есть опасность что в url не будет расширения

Да, вполне возможно. Идея с определением mime типа лично мне нравится, звучит логично.

Если DateTime.now().toString() может содержать запрещённые символы, то логично эти символы тут отгрызать, согласен.

@Alienjob Alienjob assigned Alienjob and unassigned SleepySquash Dec 19, 2023
@Alienjob Alienjob added the p::major Urgent issues/PRs which must be resolved in the first place (temporary) label Dec 19, 2023
@SleepySquash SleepySquash removed the p::major Urgent issues/PRs which must be resolved in the first place (temporary) label Dec 26, 2023
SleepySquash pushed a commit that referenced this issue Dec 29, 2023
…#726)

Additionally:
- add `prefer_relative_imports` linter rule
@github-project-automation github-project-automation bot moved this from Bugs to Done in Roadmap Dec 29, 2023
github-actions bot added a commit that referenced this issue Dec 29, 2023
…#726)

Additionally:
- add `prefer_relative_imports` linter rule 04f0e34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Bugs and incorrectness problems k::UI/UX UI (user interface) and UX (user experience) changes
Projects
Status: Done
3 participants