custom mattermost desktop application
Go to file
Tasos Boulis 131b5fa2ac
[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
2022-10-07 11:40:27 +03:00
.circleci [MM-46533] Remove buildConfig item and add webpack flags for onboarding screens and GPU acceleration (#2241) 2022-08-25 10:58:06 -04:00
.config/notice-file Create configuration folder for notice.txt generation (#2149) 2022-06-14 10:15:40 +03:00
.github MM-41988 Updated links to legacy domain about.mm.com (#2003) 2022-03-10 16:40:06 -05:00
.vscode [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
e2e [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
fastlane Add skip_waiting_for_build_processing to CI build (#2027) 2022-03-29 11:35:55 -04:00
i18n [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
resources/windows Update GPO to reflect right version (#2110) 2022-05-19 08:42:32 +02:00
scripts [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
src [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
.editorconfig Add recommended VSCode extensions (#2244) 2022-08-29 17:15:25 -04:00
.eslintignore Fix tests 2017-03-06 21:31:17 +09:00
.eslintrc-webapp.json [MM-43039] Upgrade and clean up dependencies (#2038) 2022-04-06 19:08:27 -04:00
.eslintrc.json [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
.gitignore [MM-46305] Add reporting code for E2E tests (#2222) 2022-08-15 09:07:22 -04:00
.gitlab-ci.yml Create makefile and pipeline to generate signed debian packages. (#2068) 2022-04-21 09:41:50 -04:00
babel.config.js Migrate app to TypeScript (#1637) 2021-06-28 09:51:23 -04:00
CHANGELOG.md Update CHANGELOG.md (#1089) 2019-10-24 00:12:02 +02:00
CONTRIBUTING.md MM-41988 Updated links to legacy domain about.mm.com (#2003) 2022-03-10 16:40:06 -05:00
electron-builder.json [MM-46101] Move allowed protocols to build config (#2217) 2022-08-15 09:06:31 -04:00
entitlements.mac.plist Use build/ as CircleCI workspace (#1810) 2021-10-14 17:19:44 -04:00
entitlements.mas.inherit.plist [MM-42538] Submit nightly builds to TestFlight for macOS (#2023) 2022-03-28 11:06:00 -04:00
entitlements.mas.plist [MM-45980] Add entitlements for read/write to a few key user directories (#2213) 2022-07-28 09:49:16 -04:00
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md (#2030) 2022-03-29 09:40:08 -04:00
LICENSE.txt Change app author to Mattermost 2017-07-10 22:19:37 +09:00
Makefile Create makefile and pipeline to generate signed debian packages. (#2068) 2022-04-21 09:41:50 -04:00
NOTICE.txt Update Licences at Notice.txt to reflect dependency changes. (#2221) 2022-08-08 09:06:20 -04:00
package-lock.json [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
package.json [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
PULL_REQUEST_TEMPLATE.md MM-41988 Updated links to legacy domain about.mm.com (#2003) 2022-03-10 16:40:06 -05:00
README.md [MM-40632] Updates to the Developer Documentation and README, remove unnecessary files and code (#1922) 2021-12-17 15:00:35 -05:00
SECURITY.md MM-41988 Updated links to legacy domain about.mm.com (#2003) 2022-03-10 16:40:06 -05:00
TESTING.md [MM-40632] Updates to the Developer Documentation and README, remove unnecessary files and code (#1922) 2021-12-17 15:00:35 -05:00
tsconfig.json [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
webpack.config.base.js E2E omnibus fixes (#2249) 2022-09-12 10:43:19 -04:00
webpack.config.main.js [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
webpack.config.renderer.js [MM-22239] Downloads dropdown (#2227) 2022-10-07 11:40:27 +03:00
webpack.config.test.js [MM-43039] Upgrade and clean up dependencies (#2038) 2022-04-06 19:08:27 -04:00

Mattermost Desktop

Mattermost is an open source platform for secure collaboration across the entire software development lifecycle. This repo is for the native desktop application that's built on Electron; it runs on Windows, Mac, and Linux.

Originally created as "electron-mattermost" by Yuya Ochiai.

mm-desktop-screenshot

Circle CI

Features

Desktop integration

  • Server dropdown for access to multiple teams
  • Dedicated tabs for Channels, Boards and Playbooks
  • Desktop Notifications
  • Badges for unread channels and mentions
  • Deep Linking to open Mattermost links directly in the app
  • Runs in background to reduce number of open windows

Usage

Installation

Detailed guides are available at docs.mattermost.com.

  1. Download a file from the downloads page or from the releases page.
  2. Run the installer or unzip the archive.
  3. Launch Mattermost from your Applications folder, menu, or the unarchived folder.
  4. On the first launch, please enter a name and URL for your Mattermost server. For example, https://mattermost.example.com.

Configuration

You can show the dialog from menu bar.

Configuration will be saved into Electron's userData directory:

  • %APPDATA%\Mattermost on Windows
  • ~/Library/Application Support/Mattermost on OS X
  • ~/.config/Mattermost on Linux

A custom data directory location can be specified with:

  • Mattermost.exe --args --data-dir C:\my-mattermost-data on Windows
  • open /Applications/Mattermost.app/ --args --data-dir ~/my-mattermost-data/ on macOS
  • ./mattermost-desktop --args --data-dir ~/my-mattermost-data/ on Linux

Custom App Deployments

Our docs provide a guide on how to customize and distribute your own Mattermost Desktop App, including how to distribute the official Windows Desktop App silently to end users, pre-configured with the server URL and other app settings.

Development and Making Contributions

Our developer guide has detailed information on how to set up your development environment, develop, and test changes to the Desktop App.