[MM-22239] Downloads dropdown (#2227)

* WIP: show/hide temp downloads dropdown

* WIP: Position downloads dropdown correctly under the button

* WIP: Use correct width for dropdown so that right radius and shadows are displayed

* WIP: Add items to download list after finished downloading

* WIP: Add download item base components

* Add "clear all" functionality

* Use type Record<> for downloads saved in config

* Add styling to files in the downloads dropdown

* Open file in folder when clicking it from downloads dropdown. Center svg in parent element

* Update scrollbar styling

* Update scrollbar styling

* Update state of downloaded items if deleted from folder

* Add progress bar in downloads

* Use "x-uncompressed-content-length" in file downloads.

* Keep downloads open when clicking outside their browserview

* Use correct color for downloads dropdown button

* Add better styling to downloads dropdown button

* Allow only 50 download files maximum. Oldest file is being removed if reached

* Autoclose downloads dropdown after 4s of download finish

* Add file thumbnails

* Dont show second dialog if first dismissed

* Add red badge when downloads running and dropdown closed

* Add menu item for Downloads

* Add support for more code file extensions

* Open downloads dropdown instead of folder from the menu

* Run lint:js and fix problems

* Add tests for utils

* Fix issue with dropdown not displaying

* Remove unecessary comment

* Move downloads to separate json file, outside Config

* Add downloads dropdown menu for the 3-dot button

* Dont show dev tools for downloads

* Add cancel download functionality

* Add dark mode styling

* Use View state for downloadsMenu open state

* Fix some style issues

* Add image preview for downloaded images

* Remove extra devTool in weback config

* Fix issue with paths on windows

* Align items left in downloads menu

* Use pretty-bytes for file sizes

* Show download remaining time

* Close downloads dropdown when clicking outside

* Show different units in received bytes when they are different from the total units (kb/mb)

* Dont hide downloads when mattermost view is clicked

* Keep downloads open if download button is clicked

* Use closest() to check for download clicks

* Fix unit tests.
Add tests for new Views and downloadManager
Add @types/jest as devDependency for intellisense

* Remove unecessary tsconfig for jest

* Fix types error

* Add all critical tests for downloadsManager

* WIP: add e2e tests for downloads

* WIP: add e2e tests for downloads

* Rename downloads spec file

* WIP: make vscode debugger work for e2e tests

* Remove unused mock

* Remove defaults for v4 config

* Use electron-mocha for e2e debugger

* Fix e2e tests spawning JsonFileManager twice

* Add async fs functions and add tests for download item UI

* Add async fs functions and add tests for download item UI

* Improve tests with "waitForSelector" to wait for visible elements

* Wait for page load before assertions

* Add tests for file uploads/downloads

* Dont show native notification for completed downloads if dropdown is open

* Increment filenames if file already exists

* Fix antializing in downloads dropdown

* Fix styling of downloads header

* Increase dimensions of green/red icons in downloads

* Fix styling of 3-dot button

* Fix unit tests

* Show 3-dot button only on hover or click

* PR review fixes

* Revert vscode debug fixes

* Mock fs.constants

* Mock fs instead of JsonFileManager in downlaods tests

* Mock fs instead of JsonFileManager in downlaods tests

* Add necessary mocks for downloads manager

* Mark file as deleted if user deleted it

* Fix min-height of downloads dropdown and 3-dot icon position

* Add more tests

* Make size of downloads dropdown dynamic based on content

* Combine log statements

* Close 3-dot menu if user clicks elsewhere

* Move application updates inside downloads dropdown

* Fix update issues

* Fix ipc event payload

* Add missing prop

* Remove unused translations

* Fix failing test

* Fix version unknown

* Remove commented out component
This commit is contained in:
Tasos Boulis
2022-10-07 11:40:27 +03:00
committed by GitHub
parent cf6ca93627
commit 131b5fa2ac
74 changed files with 4805 additions and 264 deletions

View File

@@ -33,16 +33,8 @@
"main.app.utils.migrateMacAppStore.button.selectAndImport": "Select Directory and Import",
"main.app.utils.migrateMacAppStore.dialog.detail": "It appears that an existing {appName} configuration exists, would you like to import it? You will be asked to pick the correct configuration directory.",
"main.app.utils.migrateMacAppStore.dialog.message": "Import Existing Configuration",
"main.autoUpdater.download.dialog.button.download": "Download",
"main.autoUpdater.download.dialog.button.remindMeLater": "Remind me Later",
"main.autoUpdater.download.dialog.detail": "A new version of the {appName} Desktop App is available for you to download and install now.",
"main.autoUpdater.download.dialog.message": "New desktop version available",
"main.autoUpdater.noUpdate.detail": "You are using the latest version of the {appName} Desktop App (version {version}). You'll be notified when a new version is available to install.",
"main.autoUpdater.noUpdate.message": "You're up to date",
"main.autoUpdater.update.dialog.button.remindMeLater": "Remind me Later",
"main.autoUpdater.update.dialog.button.restartAndUpdate": "Restart and Update",
"main.autoUpdater.update.dialog.detail": "A new version of the {appName} Desktop App is ready to install.",
"main.autoUpdater.update.dialog.message": "A new version is ready to install",
"main.badge.noUnreads": "You have no unread messages",
"main.badge.sessionExpired": "Session Expired: Please sign in to continue receiving notifications.",
"main.badge.unreadChannels": "You have unread channels",
@@ -84,6 +76,7 @@
"main.menus.app.view.clearCacheAndReload": "Clear Cache and Reload",
"main.menus.app.view.devToolsAppWrapper": "Developer Tools for Application Wrapper",
"main.menus.app.view.devToolsCurrentServer": "Developer Tools for Current Server",
"main.menus.app.view.downloads": "Downloads",
"main.menus.app.view.find": "Find..",
"main.menus.app.view.fullscreen": "Toggle Full Screen",
"main.menus.app.view.reload": "Reload",
@@ -140,10 +133,7 @@
"renderer.components.extraBar.back": "Back",
"renderer.components.input.required": "This field is required",
"renderer.components.mainPage.contextMenu.ariaLabel": "Context menu",
"renderer.components.mainPage.downloadingUpdate": "Downloading update. {percentDone}% of {total} @ {speed}/s",
"renderer.components.mainPage.titleBar": "Mattermost",
"renderer.components.mainPage.updateAvailable": "Update available",
"renderer.components.mainPage.updateReady": "Update ready to install",
"renderer.components.newTeamModal.error.nameRequired": "Name is required.",
"renderer.components.newTeamModal.error.serverNameExists": "A server with the same name already exists.",
"renderer.components.newTeamModal.error.serverUrlExists": "A server with the same URL already exists.",
@@ -235,6 +225,21 @@
"renderer.components.welcomeScreen.slides.playbooks.title": "Playbooks",
"renderer.components.welcomeScreen.slides.welcome.subtitle": "Mattermost is an open source platform for developer collaboration. Secure, flexible, and integrated with the tools you love.",
"renderer.components.welcomeScreen.slides.welcome.title": "Welcome",
"renderer.downloadsDropdown.ClearAll": "Clear All",
"renderer.downloadsDropdown.Downloads": "Downloads",
"renderer.downloadsDropdown.remaining": "remaining",
"renderer.downloadsDropdown.Update.ANewVersionIsAvailableToInstall": "A new version of the Mattermost Desktop App (version {version}) is available to install.",
"renderer.downloadsDropdown.Update.DownloadUpdate": "Download Update",
"renderer.downloadsDropdown.Update.MattermostVersionX": "Mattermost version {version}",
"renderer.downloadsDropdown.Update.NewDesktopVersionAvailable": "New Desktop version available",
"renderer.downloadsDropdown.Update.RestartAndUpdate": "Restart & update",
"renderer.downloadsDropdownMenu.CancelDownload": "Cancel Download",
"renderer.downloadsDropdownMenu.Clear": "Clear",
"renderer.downloadsDropdownMenu.Open": "Open",
"renderer.downloadsDropdownMenu.ShowInFileExplorer": "Show in File Explorer",
"renderer.downloadsDropdownMenu.ShowInFileManager": "Show in File Manager",
"renderer.downloadsDropdownMenu.ShowInFinder": "Show in Finder",
"renderer.downloadsDropdownMenu.ShowInFolder": "Show in Folder",
"renderer.dropdown.addAServer": "Add a server",
"renderer.dropdown.servers": "Servers",
"renderer.modals.certificate.certificateModal.certInfoButton": "Certificate Information",
@@ -252,5 +257,8 @@
"renderer.modals.permission.permissionModal.body": "A site that's not included in your Mattermost server configuration requires access for {permission}.",
"renderer.modals.permission.permissionModal.requestOriginatedFromOrigin": "This request originated from <link>{origin}</link>",
"renderer.modals.permission.permissionModal.title": "{permission} Required",
"renderer.modals.permission.permissionModal.unknownOrigin": "unknown origin"
"renderer.modals.permission.permissionModal.unknownOrigin": "unknown origin",
"renderer.time.hours": "hours",
"renderer.time.mins": "mins",
"renderer.time.sec": "sec"
}