* Add icons for file types * Compress image files for file type icons * Add constants for file types * Add utils for file metadata * Add actions & reducers for fetching file attachments * Render file attachments in posts * Add reducers for handling files requests * Refactor getFileType in file utils * Refactor getFileIconPath in file utils * Refactor getFormattedFileSize in file utils * Trim trailing whitespace in getTruncatedFilename * Style file attachment metadata * Remove entity store reducer for files fetch failure * Change filesForPost to fileIdsForPost in files store * Use a selector for getFilesForPost * Memoize getFilesForPost selector * Dispatch postId with getFilesForPost * Add test for getFilesForPost * Upload seed file in getFilesForPost test * Display correct icon for image attachments * Fix reducers for receiving files for post Expect response data to be array not object * Style attachment post * Merge headers (defaults + opts) in Client.doFetch * Upload file as FormData * Use form-data lib instead of built-in polyfill * Associate file with post in getFilesForPost test * Improve assertions in getFilesForPost test * Check for createPost failure in getFilesForPost test * Use correct post id in getFilesForPost test * Use client not action to create post in getFilesForPost test * Fix file upload in getFilesForPost test * Add assertion for name of uploaded file * Update attachment post style * Fix spelling of loadFilesForPostIfNecessary * Remove eslint-disable no-magic-numbers from file_utils.js * Remove unused index prop from FileAttachment * Clarify code for merging headers in Client.getOptions * Dynamically truncate file attachment names * Extract component for FileAttachmentIcon * Use white bg for FileAttachmentIcon to match webapp styles * Match webapp styles for file attachment borders * Move file icon path lookup to FileAttachmentIcon * Use more logical ordering for file type lookup |
||
|---|---|---|
| android | ||
| app | ||
| assets/base | ||
| fastlane | ||
| ios | ||
| scripts | ||
| service | ||
| test | ||
| .babelrc | ||
| .buckconfig | ||
| .editorconfig | ||
| .eslintrc.json | ||
| .flowconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| .watchmanconfig | ||
| CONTRIBUTING.md | ||
| index.android.js | ||
| index.ios.js | ||
| LICENSE.txt | ||
| Makefile | ||
| NOTICE.txt | ||
| package.json | ||
| PULL_REQUEST_TEMPLATE.md | ||
| README.md | ||
| rn-cli.config.js | ||
Mattermost Mobile (unreleased)
Supported Server Versions: Master (no released versions are currently supported)
This is an unreleased project for replacing the Mattermost iOS and Android apps with new mobile apps using React Native and Redux. The project is not yet stable, and the instructions are for internal use currently (i.e. probably out-of-date until we stablize).
We'll post updates to our Forums and Twitter when we're ready to bring in more community contributors.
Our early roadmap was discussed on the Mattermost forums in October 2016 and we'll have more updates as the project evolves. Priorities are shifting so please only use the dates in the post as a highly approximate guide.
Mattermost is an open source Slack-alternative used by thousands of companies around the world in 11 languages. Learn more at https://mattermost.com.
How to Contribute
Testing
The apps are currently under development with a beta release planned for March. We cut a new build every Monday, so people can test it out and see what's new.
If you would like to help with testing the apps, you can:
- Sign up for our team site
- Join the Native Mobile Apps channel to see what's new
- Ask to be added as a beta tester by sending a direct message to
@lindsaywith your email address and device OS (iOS or Android) - Install the
Mattermost RNapp
- Note: Due to recent changes the new app only works with master - you can test using our team site https://pre-release.mattermost.com/
- Check the Native Mobile Apps channel or search for
#rnchangelogfor an outline of the latest changes (example here) - File any bugs you find by posting in the Native Mobile Apps channel with:
- Device information
- Repro steps
- Observed behavior (including screenshot / video when possible)
- Expected behavior
Contribute Code
We're not quite ready to accept external contributions yet - when things are ready, issues with a [Help Wanted] title will be posted in the GitHub Issues section.
Installing Dependencies
Follow the React Native Getting Started Guide for detailed instructions on setting up your local machine for development.
Detailed configuration:
Mac
-
General requirements
- XCode 8.1
- Install watchman $ brew install watchman
-
Clone repository and configure:
$ git clone git@github.com:mattermost/mattermost-mobile.git $ cd mattermost-mobile $ npm install $ npm install -g react-native-cli -
Run application
$ make run -
Stop the packager server
$ make stop
Linux:
-
General requiriments:
- JDK 7 or greater
- Android SDK
- Virtualbox
- An Android emulator: Genymotion or Android emulator. If using genymotion ensure that it uses existing adb tools (Settings: "Use custom Android SDK Tools")
- Install watchman (do this globally):
Configure your kernel to accept a lot of file watches, using a command like:$ git clone https://github.com/facebook/watchman.git $ cd watchman $ git checkout master $ ./autogen.sh $ ./configure make $ sudo make install$ sudo sysctl -w fs.inotify.max_user_watches=1048576
-
Clone repository and configure:
$ git clone git@github.com:mattermost/mattermost-mobile.git $ cd mattermost-mobile $ npm install $ npm install -g react-native-cli-
Add or edit file
src/config/config.secret.jsonand add the url to the Mattermost server that you will use to develop:{ "DefaultServerUrl": "https://pre-release.mattermost.com" }To use a local Mattermost server you will need to configure the "DefaultServerUrl" depending on the emulator you will use:
- IOs: "DefaultServerUrl": "http://localhost:8065"
- Android: "DefaultServerUrl": "http://10.0.2.2:3000"
- Genymotion: "DefaultServerUrl": "http://10.0.3.2:8065"
-
-
Run application
- Start emulator
- Start react packager:
$ react-native start - Run in emulator:
$ react-native run-android