Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions app/actions/share.js

This file was deleted.

39 changes: 39 additions & 0 deletions app/actions/share.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { Action } from 'redux';

import { IShareServer, IShareUser, TShareSettings } from '../reducers/share';
import { SHARE } from './actionsTypes';

interface IShareSelectServer extends Action {
server: IShareServer;
}

interface IShareSetSettings extends Action {
settings: TShareSettings;
}

interface IShareSetUser extends Action {
user: IShareUser;
}

export type TActionsShare = IShareSelectServer & IShareSetSettings & IShareSetUser;

export function shareSelectServer(server: IShareServer): IShareSelectServer {
return {
type: SHARE.SELECT_SERVER,
server
};
}

export function shareSetSettings(settings: TShareSettings): IShareSetSettings {
return {
type: SHARE.SET_SETTINGS,
settings
};
}

export function shareSetUser(user: IShareUser): IShareSetUser {
return {
type: SHARE.SET_USER,
user
};
}
5 changes: 3 additions & 2 deletions app/definitions/redux/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { TActionSelectedUsers } from '../../actions/selectedUsers';
import { TActionActiveUsers } from '../../actions/activeUsers';
import { TActionSelectedUsers } from '../../actions/selectedUsers';
// REDUCERS
import { IActiveUsers } from '../../reducers/activeUsers';
import { ISelectedUsers } from '../../reducers/selectedUsers';
import { IShare } from '../../reducers/share';

export interface IApplicationState {
settings: any;
Expand All @@ -15,7 +16,7 @@ export interface IApplicationState {
room: any;
rooms: any;
sortPreferences: any;
share: any;
share: IShare;
customEmojis: any;
activeUsers: IActiveUsers;
usersTyping: any;
Expand Down
29 changes: 0 additions & 29 deletions app/reducers/share.js

This file was deleted.

41 changes: 41 additions & 0 deletions app/reducers/share.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { shareSelectServer, shareSetSettings, shareSetUser } from '../actions/share';
import { mockedStore } from './mockedStore';
import { initialState } from './share';

describe('test share reducer', () => {
it('should return initial state', () => {
const state = mockedStore.getState().share;
expect(state).toEqual(initialState);
});

it('should return modified store after shareSelectServer', () => {
const server = {
server: 'https://open.rocket.chat',
version: '4.4.0'
};
mockedStore.dispatch(shareSelectServer(server));
const state = mockedStore.getState().share.server;
expect(state).toEqual(server);
});

it('should return modified store after shareSetSettings', () => {
const settings = {
Admin: false
};
mockedStore.dispatch(shareSetSettings(settings));
const state = mockedStore.getState().share.settings;
expect(state).toEqual(settings);
});

it('should return modified store after shareSetUser', () => {
const user = {
id: 'dig-joy',
token: 'token',
username: 'rocket.chat',
roles: ['admin']
};
mockedStore.dispatch(shareSetUser(user));
const state = mockedStore.getState().share.user;
expect(state).toEqual(user);
});
});
50 changes: 50 additions & 0 deletions app/reducers/share.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { TActionsShare } from '../actions/share';
import { SHARE } from '../actions/actionsTypes';

export interface IShareServer {
server: string;
version: string;
}

export type TShareSettings = Record<string, string | number | boolean>;

export interface IShareUser {
id: string;
token: string;
username: string;
roles: string[];
}

export interface IShare {
user: IShareUser | {};
server: IShareServer | {};
settings: TShareSettings;
}

export const initialState: IShare = {
user: {},
server: {},
settings: {}
};

export default function share(state = initialState, action: TActionsShare): IShare {
switch (action.type) {
case SHARE.SELECT_SERVER:
return {
...state,
server: action.server
};
case SHARE.SET_USER:
return {
...state,
user: action.user
};
case SHARE.SET_SETTINGS:
return {
...state,
settings: action.settings
};
default:
return state;
}
}