npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mattermost-redux-beta

v0.0.4

Published

**Supported Server Versions:** Latest

Downloads

14

Readme

Mattermost Redux (beta)

Supported Server Versions: Latest

The project is in beta, with the purpose of 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 12 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, yourOfflineOptions);

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)
  • yourOfflineOptions - any offline options, specified using this redux-offline configuration object

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(
                (data) => {
                    callback(data);
                }
            ).catch(
                (error) => {
                    console.error(error);
                }
            );
        }
    ).catch(
        (error) => {
            console.error(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);

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);
});

Features for Stable Release

  • Improved return pattern for actions, always return both data and error
  • Error reporting for optimistic actions
  • Better documentation

Future Features

  • Full server mocking for unit tests (including WebSocket mocking)
  • Offline support with automatic update polling (needs server work)

How to Contribute

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 tests against a mocked server.

To run the tests against a live server, you must have a system admin user with the email [email protected] and password password1. If you're using a developer copy of the Mattermost server, you can create this user by running:

go build ./cmd/platform
./platform user create --email "[email protected]" --password "password1" --username "redux-admin" --system_admin

If you're using a release binary for the server, just run:

./bin/platform user create --email "[email protected]" --password "password1" --username "redux-admin" --system_admin

The server needs to be available at http://localhost:8065. This can be overridden by setting an environment variable named MATTERMOST_SERVER_URL.

Finally, set "EnableOpenServer", "EnableCustomEmoji", "EnableLinkPreviews", "EnableUserAccessTokens" and "EnableOAuthServiceProvider" to true and "EnableOnlyAdminIntegrations" to false in your config.json. If you don't have a config.json yet, create it by copying default.json.

With that set up, you can run the tests against your server with npm run test-no-mock.