diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..1990eb94 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,93 @@ +# Contributing Guidelines + +Great to have you here! Here are a few ways you can help make this project better! + +## Setting up a development environment + +Refer to [React Native environment setup](https://reactnative.dev/docs/environment-setup) to make sure everything is up and running. +Follow the `React Native CLI Quickstart` section as we don't support Expo managed flow. + +*Note: you'll need a MacOS to run iOS apps* + +### How to run + +Clone repository and install dependencies: +```sh +git clone git@github.com:RocketChat/Rocket.Chat.ReactNative.git +cd Rocket.Chat.ReactNative +yarn +``` + +Run the app: +```sh +npx react-native run-ios +``` + +or + +```sh +npx react-native run-android +``` + +At this point, the app should be running on the simulator or on your device! + +*Note: npm won't work on this project* + +## Issues needing help + +Didn't find a bug or want a new feature not already reported? Check out the [help wanted](https://github.com/RocketChat/Rocket.Chat.ReactNative/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%91%8B+help+wanted%22) or the [good first issue](https://github.com/RocketChat/Rocket.Chat.ReactNative/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%8D%AD+good+first+issue%22) labels. + +Can't help coding? Triaging issues is a **great** way of helping. + +## Code style + +We use [ESLint](https://eslint.org/) to enforce code style and best practices. We have a pre-commit hook enforcing commits to follow our lint rules. + +To check for lint issues on your code, run this on your terminal: + +```sh +yarn lint +``` + +## Tests + +It's always important to ensure everything is working properly and that's why tests are great. We have unit and e2e tests on this project. + +### Unit tests + +We use [Jest](https://jestjs.io/) and [Storybook](https://storybook.js.org/) on our tests. + +#### Storybook + +Storybook is a tool for developing UI Components and has some plugins to make Jest generate snapshots of them. + +[On the root of the project](https://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/index.js#L24), comment everything leaving only the last import to Storybook left and refresh your project. +You'll see some tests like this: + + + +#### Jest + +We use Jest for our unit tests and to generate Storybook snapshots. We have a pre-commit hook enforcing preventing commits that breaks any test. + +To check for test issues on your code, run this on your terminal: + +```sh +yarn test +``` + +### E2E tests + +We use [Detox](https://github.com/wix/Detox) framework to end-to-end test our app and ensure everything is working properly. + +[Follow this documentation to learn how to run it](https://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/e2e). + +### Pull request + +As soon as your changes are ready, you can open a Pull Request. + +The title of your PR should be descriptive, including either [NEW], [IMPROVEMENT] or [FIX] at the beginning, e.g. [FIX] App crashing on startup. + +You may share working results prior to finishing, please include [WIP] in the title. This way anyone can look at your code: you can ask for help within the PR if you don't know how to solve a problem. + +Your PR is automatically inspected by various tools, check their response and try to improve your code accordingly. Requests that fail to build or have wrong coding style won't be merged. diff --git a/README.md b/README.md index b84c86ad..f5197c4c 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,12 @@ [![codecov](https://codecov.io/gh/RocketChat/Rocket.Chat.ReactNative/branch/master/graph/badge.svg)](https://codecov.io/gh/RocketChat/Rocket.Chat.ReactNative) [![CodeFactor](https://www.codefactor.io/repository/github/rocketchat/rocket.chat.reactnative/badge)](https://www.codefactor.io/repository/github/rocketchat/rocket.chat.reactnative) -**Supported Server Versions:** 0.70.0+ +- **Supported server versions:** 0.70.0+ +- **Supported iOS versions**: 11+ +- **Supported Android versions**: 5.0+ ## Download -### Official apps Download on Google Play @@ -17,26 +18,7 @@ Download on App Store -### Experimental apps - - Download on Google Play - - -## Beta Access - -### TestFlight - -You can signup to our TestFlight builds by accessing these links: - -- Official: https://testflight.apple.com/join/3gcYeoMr -- Experimental: https://testflight.apple.com/join/7I3dLCNT - -### Google Play beta - -You can subscribe to Google Play Beta program and download latest versions: - -- Official: https://play.google.com/store/apps/details?id=chat.rocket.android -- Experimental: https://play.google.com/store/apps/details?id=chat.rocket.reactnative +Check [our docs](https://docs.rocket.chat/installation/mobile-and-desktop-apps#mobile-apps) for beta and Experimental versions. ## Reporting an Issue @@ -44,184 +26,12 @@ You can subscribe to Google Play Beta program and download latest versions: Also check the [#react-native](https://open.rocket.chat/channel/react-native) community on [open.rocket.chat](https://open.rocket.chat). We'd like to help. -## Installing dependencies +## Contributing -Follow the [React Native Getting Started Guide](https://facebook.github.io/react-native/docs/getting-started.html) for detailed instructions on setting up your local machine for development. - -## How to run -- Clone repository and install dependencies: - ```bash - $ git clone git@github.com:RocketChat/Rocket.Chat.ReactNative.git - $ cd Rocket.Chat.ReactNative - $ yarn - ``` - -- Run application - ```bash - $ npx react-native run-ios - ``` - ```bash - $ npx react-native run-android - ``` +Are you a dev and would like to help? Found a bug that you would like to report or a missing feature that you would like to work on? Great! We have written down a [Contribution guide](https://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/CONTRIBUTING.md) so you can start easily. ## Whitelabel -Follow our docs: https://docs.rocket.chat/guides/developer/mobile-apps/whitelabeling-mobile-apps - -## Current priorities -1) E2E encryption - -## Features -| Feature | Status | -|--------------------------------------------------------------- |-------- | -| Jitsi Integration | ✅ | -| Federation (Directory) | ✅ | -| Discussions | ✅ | -| Omnichannel | ✅ | -| Threads | ✅ | -| Record Audio | ✅ | -| Record Video | ✅ | -| Commands | ✅ | -| Draft message per room | ✅ | -| Share Extension | ✅ | -| Notifications Preferences | ✅ | -| Edited status | ✅ | -| Upload video | ✅ | -| Grouped messages | ✅ | -| Mark room as read | ✅ | -| Mark room as unread | ✅ | -| Tablet Support | ✅ | -| Read receipt | ✅ | -| Broadbast Channel | ✅ | -| Authentication via SAML | ✅ | -| Authentication via CAS | ✅ | -| Custom Fields on Signup | ✅ | -| Report message | ✅ | -| Theming | ✅ | -| Settings -> Review the App | ✅ | -| Settings -> Default Browser | ✅ | -| Admin panel | ✅ | -| Reply message from notification | ✅ | -| Unread counter banner on message list | ✅ | -| E2E Encryption | ⏳ | -| Join a Protected Room | ❌ | -| Optional Analytics | ✅ | -| Settings -> About us | ❌ | -| Settings -> Contact us | ✅ | -| Settings -> Update App Icon | ❌ | -| Settings -> Share | ✅ | -| Accessibility (Medium) | ❌ | -| Accessibility (Advanced) | ❌ | -| Authentication via Meteor | ❌ | -| Authentication via Wordpress | ✅ | -| Authentication via Custom OAuth | ✅ | -| Add user to the room | ✅ | -| Send message | ✅ | -| Authentication via Email | ✅ | -| Authentication via Username | ✅ | -| Authentication via LDAP | ✅ | -| Message format: Markdown | ✅ | -| Message format: System messages (Welcome, Message removed...) | ✅ | -| Message format: links | ✅ | -| Message format: images | ✅ | -| Message format: replies | ✅ | -| Message format: alias with custom message (title & text) | ✅ | -| Messages list: day separation | ✅ | -| Messages list: load more on scroll | ✅ | -| Messages list: receive new messages via subscription | ✅ | -| Subscriptions list | ✅ | -| Segmented subscriptions list: Favorites | ✅ | -| Segmented subscriptions list: Unreads | ✅ | -| Segmented subscriptions list: DMs | ✅ | -| Segmented subscriptions list: Channels | ✅ | -| Subscriptions list: update user status via subscription | ✅ | -| Numbers os messages unread in the Subscriptions list | ✅ | -| Status change | ✅ | -| Upload image | ✅ | -| Take picture & upload it | ✅ | -| 2FA | ✅ | -| Signup | ✅ | -| Autocomplete with usernames | ✅ | -| Autocomplete with @all & @here | ✅ | -| Autocomplete room/channel name | ✅ | -| Upload audio | ✅ | -| Forgot your password | ✅ | -| Login screen: terms of service | ✅ | -| Login screen: privacy policy | ✅ | -| Authentication via Google | ✅ | -| Authentication via Facebook | ✅ | -| Authentication via Twitter | ✅ | -| Authentication via GitHub | ✅ | -| Authentication via GitLab | ✅ | -| Authentication via LinkedIn | ✅ | -| Create channel | ✅ | -| Search Local | ✅ | -| Search in the API | ✅ | -| Settings -> License | ✅ | -| Settings -> App version | ✅ | -| Autocomplete emoji | ✅ | -| Upload file (documents, PDFs, spreadsheets, zip files, etc) | ✅ | -| Copy message | ✅ | -| Pin message | ✅ | -| Unpin message | ✅ | -| Channel Info screen -> Members | ✅ | -| Channel Info screen -> Pinned | ✅ | -| Channel Info screen -> Starred | ✅ | -| Channel Info screen -> Uploads | ✅ | -| Star message | ✅ | -| Unstar message | ✅ | -| Channel Info screen -> Topic | ✅ | -| Channel Info screen -> Description | ✅ | -| Star a channel | ✅ | -| Message format: videos | ✅ | -| Message format: audios | ✅ | -| Edit message | ✅ | -| Delete a message | ✅ | -| Reply message | ✅ | -| Quote message | ✅ | -| Muted state | ✅ | -| Offline reading | ✅ | -| Offline writing | ✅ | -| Edit profile | ✅ | -| Reactions | ✅ | -| Custom emojis | ✅ | -| Accessibility (Basic) | ✅ | -| Tap notification, go to the channel | ✅ | -| Deep links: Authentication | ✅ | -| Deep links: Rooms | ✅ | -| Full name setting | ✅ | -| Read only rooms | ✅ | -| Typing status | ✅ | -| Create channel/group | ✅ | -| Disable registration setting | ✅ | -| Unread red line indicator on message list | ✅ | -| Search Messages in Channel | ✅ | -| Mentions List | ✅ | -| Attachment List | ✅ | -| Join a Room | ✅ | - -## E2E Testing -Follow our docs: https://github.com/RocketChat/Rocket.Chat.ReactNative/tree/develop/e2e#e2e-testing - -## Storybook -- Open index.js - -- Uncomment following line - -```bash -import './storybook'; -``` - -- Comment out following lines -```bash -import './app/ReactotronConfig'; -import { AppRegistry } from 'react-native'; -import App from './app/index'; -import { name as appName } from './app.json'; - -AppRegistry.registerComponent(appName, () => App); -``` - -- Start your application again +Do you want to make the app run on your own server only? [Follow our whitelabel documentation.](https://docs.rocket.chat/guides/developer/mobile-apps/whitelabeling-mobile-apps) ## Engage with us ### Share your story