All Projects → mattermost → Mattermost Redux

mattermost / Mattermost Redux

Licence: apache-2.0
Redux for Mattermost

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Mattermost Redux

Mattermost Docker
Dockerfile for mattermost in production
Stars: ✭ 929 (+369.19%)
Mutual labels:  mattermost, hacktoberfest
Mmctl
A remote CLI tool for Mattermost
Stars: ✭ 70 (-64.65%)
Mutual labels:  mattermost, hacktoberfest
Mattermost Server
Mattermost is an open source platform for secure collaboration across the entire software development lifecycle.
Stars: ✭ 21,623 (+10820.71%)
Mutual labels:  mattermost, hacktoberfest
Rethinkdb.driver
🎧 A NoSQL C#/.NET RethinkDB database driver with 100% ReQL API coverage.
Stars: ✭ 350 (+76.77%)
Mutual labels:  hacktoberfest, driver
Docs
Mattermost documentation
Stars: ✭ 128 (-35.35%)
Mutual labels:  mattermost, hacktoberfest
Mattermost Mobile
Next generation iOS and Android apps for Mattermost in React Native
Stars: ✭ 1,262 (+537.37%)
Mutual labels:  mattermost, hacktoberfest
Mattermost Plugin Jira
JIRA plugin for Mattermost 🔌
Stars: ✭ 58 (-70.71%)
Mutual labels:  mattermost, hacktoberfest
Standup Raven
A Mattermost plugin for communicating daily standups across teams
Stars: ✭ 161 (-18.69%)
Mutual labels:  mattermost, hacktoberfest
Mattermost Helm
Mattermost Helm charts for Kubernetes
Stars: ✭ 107 (-45.96%)
Mutual labels:  mattermost, hacktoberfest
Desktop
Mattermost Desktop application for Windows, Mac and Linux
Stars: ✭ 1,358 (+585.86%)
Mutual labels:  mattermost, hacktoberfest
Create robot
ROS driver for iRobot Create 1 and 2.
Stars: ✭ 137 (-30.81%)
Mutual labels:  hacktoberfest, driver
Matterpoll
Create polls and surveys directly within Mattermost
Stars: ✭ 189 (-4.55%)
Mutual labels:  mattermost, hacktoberfest
Awesome Ideas
💡 Ideias de aplicativos.
Stars: ✭ 194 (-2.02%)
Mutual labels:  hacktoberfest
Compose.jl
Declarative vector graphics
Stars: ✭ 196 (-1.01%)
Mutual labels:  hacktoberfest
Ogx360
Add Wireless Xbox 360 and 8bitdo Controller Support to your Original Xbox 📺 🎮
Stars: ✭ 193 (-2.53%)
Mutual labels:  hacktoberfest
Cargo C
build and install C-compatible libraries
Stars: ✭ 196 (-1.01%)
Mutual labels:  hacktoberfest
Lemuroid
All in 1 emulator on Android!
Stars: ✭ 194 (-2.02%)
Mutual labels:  hacktoberfest
Pan Os Python
The PAN-OS SDK for Python is a package to help interact with Palo Alto Networks devices (including physical and virtualized Next-generation Firewalls and Panorama). The pan-os-python SDK is object oriented and mimics the traditional interaction with the device via the GUI or CLI/API.
Stars: ✭ 194 (-2.02%)
Mutual labels:  hacktoberfest
Mediadevices
Go implementation of the MediaDevices API.
Stars: ✭ 197 (-0.51%)
Mutual labels:  driver
Hacktoberfest
Simply add your details and Get a chance to earn a free tshirt! ✅
Stars: ✭ 199 (+0.51%)
Mutual labels:  hacktoberfest

Mattermost Redux CircleCI branch

The project purpose is consolidating the storage, web utilities and logic of the webapp and React Native mobile clients into a single driver. We encourage you to use mattermost-redux to power your own Mattermost clients or integrations.

Redux is the backbone for this project and many of the design decisions and patterns stem from it.

Mattermost is an open source Slack-alternative used by thousands of companies around the world in more than 16 languages. Learn more at https://mattermost.com.

Usage

Basic Usage

To hook up your application to the mattermost-redux store:

import configureServiceStore from 'mattermost-redux/store';

configureServiceStore(yourInitialState, yourAppReducers);

const store = configureStore();

// use store
  • yourInitialState - any initial state for any extra reducers you may have (set to {} if none)
  • yourAppReducers - any reducers from your app (set to {} if none)

Web Client Usage

If you're only looking to use the v4 JavaScript web client for the Mattermost server:

With async/await:

import {Client4} from 'mattermost-redux/client';

Client4.setUrl('https://your-mattermost-url.com');

async function loginAndGetUser(username, password) {
    try {
        await Client4.login(username, password);
    } catch (error) {
        console.error(error);
        return null;
    }

    let user;
    try {
        user = await Client4.getMe();
    } catch (error) {
        console.error(error);
        return null;
    }

    return user;
}

With promises:

import {Client4} from 'mattermost-redux/client';

Client4.setUrl('https://your-mattermost-url.com');

function loginAndGetUser(username, password, callback) {
    Client4
        .login(username, password)
        .then(Client4.getMe)
        .then(callback)
        .catch(console.error);
}

If you already have a personal access token or session token, you can set the token manually instead of logging in:

import {Client4} from 'mattermost-redux/client';

Client4.setUrl('https://your-mattermost-url.com');
Client4.setToken(yourToken);

Browser Usage

To build a browser-compatible client via webpack:

$ git clone <this repo>
$ cd mattermost-redux
$ make bundle

This will generate lib/mattermost.client4.js, and lib/mattermost.websocket.js which can be loaded in a browser. Also note that babel-polyfill is required.

<script src="/path/to/babel/polyfill.js"></script>
<script src="/path/to/mattermost.client4.js"></script>
<script src="/path/to/mattermost.websocket.js"></script>
<script type="text/javascript">
    const client = Mattermost.client4.default();
    const wsClient = Mattermost.websocket.default;
    var token;
    client.setUrl('https://your-mattermost-url.com');
    /* use an existing personal access token */
    client.setToken('yourToken');
    client.setIncludeCookies(false);
    /* login and obtain a token */
    client.login(username, password)
    .then(function(user){
        console.log(`Logged in as ${user.email}`);
        token = client.getToken();
    })
    .then(function(){
        wsClient.initialize(token, {}, {}, {connectionUrl: 'wss://your-mattermost-url.com/api/v4/websocket'});
    })
    .catch(function(err){
        console.error(err);
    });
</script>

node.js Usage

Running the client from node.js requires making the fetch and WebSocket packages globally available, and the use of babel-polyfill:

require('babel-polyfill');
require('isomorphic-fetch');
if (!global.WebSocket) {
    global.WebSocket = require('ws');
}
const Client4 = require('./client/client4.js').default;
const client = new Client4;
const wsClient = require('./client/websocket_client.js').default;
var token;

wsClient.setEventCallback(function(event){
    console.log(event);
});

client.setUrl('https://your-mattermost-url.com');
client.login(username, password)
.then(function(me){
    console.log(`logged in as ${me.email}`);
    token = client.getToken();
})
.then(function(){
    wsClient.initialize(token, {}, {}, {connectionUrl: 'wss://your-mattermost-url.com/api/v4/websocket'});
})
.catch(function(err){
    console.error(err);
});

How to Contribute

How to Build mattermost-redux

You only need to build mattermost-redux if you are developing it.

Webapp Development

If your mattermost-webapp and mattermost-redux are in the same directory, you only need to run npm run dev or npm run dev:watch.

If you have mattermost-webapp in other directory or you are developing your own application, you can define the environment variable WEBAPP_DIR to change the destination app (e. g. WEBAPP_DIR=/tmp/mattermost-webapp).

React Native (Mobile) Development

If your mattermost-mobile and mattermost-redux are in the same directory, you only need to run npm run dev-mobile or npm run dev-mobile:watch.

If you have mattermost-mobile in other directory or you are developing your own application, you can define the environment variable MOBILE_DIR to change the destination app (e. g. MOBILE_DIR=/tmp/mattermost-mobile).

Resetting apps to use package redux

If you want to go back to using the package specified redux in your web or mobile app you can stop the server and run rm -rf .npminstall to force your project to reset to the specified package version on next server start.

Contribute Code

If you're contributing to help migrate the webapp to Redux go ahead and submit your PR. If you're just fixing a small bug or adding a small improvement then feel free to submit a PR for it. For everything else, please either work on an issue labeled [Help Wanted] or open an issue if there's something else that you'd like to work on.

Feel free to drop by the Redux channel on our Mattermost instance.

Running the Tests

make test will run the unit tests against a mocked server.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].