tmp
This commit is contained in:
parent
5ad676f7dc
commit
908c389155
|
@ -25,6 +25,14 @@ export function setAllSettings(settings) {
|
||||||
payload: settings
|
payload: settings
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function setAllPermissions(permissions) {
|
||||||
|
return {
|
||||||
|
type: types.SET_ALL_PERMISSIONS,
|
||||||
|
payload: permissions
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export function login() {
|
export function login() {
|
||||||
return {
|
return {
|
||||||
type: 'LOGIN'
|
type: 'LOGIN'
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
export const SET_CURRENT_SERVER = 'SET_CURRENT_SERVER';
|
export const SET_CURRENT_SERVER = 'SET_CURRENT_SERVER';
|
||||||
export const SET_ALL_SETTINGS = 'SET_ALL_SETTINGS';
|
export const SET_ALL_SETTINGS = 'SET_ALL_SETTINGS';
|
||||||
|
export const SET_ALL_PERMISSIONS = 'SET_ALL_PERMISSIONS';
|
||||||
|
|
|
@ -24,6 +24,24 @@ const settingsSchema = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const permissionsRolesSchema = {
|
||||||
|
name: 'permissionsRoles',
|
||||||
|
properties: {
|
||||||
|
value: 'string'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const permissionsSchema = {
|
||||||
|
name: 'permissions',
|
||||||
|
primaryKey: '_id',
|
||||||
|
properties: {
|
||||||
|
_id: 'string',
|
||||||
|
_server: 'servers',
|
||||||
|
roles: { type: 'list', objectType: 'permissionsRoles' },
|
||||||
|
_updatedAt: { type: 'date', optional: true }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const roomsSchema = {
|
const roomsSchema = {
|
||||||
name: 'rooms',
|
name: 'rooms',
|
||||||
primaryKey: '_id',
|
primaryKey: '_id',
|
||||||
|
@ -130,7 +148,9 @@ const realm = new Realm({
|
||||||
usersSchema,
|
usersSchema,
|
||||||
roomsSchema,
|
roomsSchema,
|
||||||
attachment,
|
attachment,
|
||||||
messagesEditedBySchema
|
messagesEditedBySchema,
|
||||||
|
permissionsSchema,
|
||||||
|
permissionsRolesSchema
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
export default realm;
|
export default realm;
|
||||||
|
|
|
@ -103,6 +103,7 @@ const RocketChat = {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
RocketChat.getSettings();
|
RocketChat.getSettings();
|
||||||
|
RocketChat.getPermissions();
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch(e => console.error(e));
|
.catch(e => console.error(e));
|
||||||
|
@ -429,6 +430,44 @@ const RocketChat = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
_filterSettings: settings => settings.filter(setting => settingsType[setting.type] && setting.value),
|
_filterSettings: settings => settings.filter(setting => settingsType[setting.type] && setting.value),
|
||||||
|
async getPermissions() {
|
||||||
|
// const permissions = await call('permissions/get');
|
||||||
|
// console.log(permissions)
|
||||||
|
// reduxStore.dispatch(actions.setAllPermissions(RocketChat.parsePermissions(permissions)));
|
||||||
|
|
||||||
|
const temp = realm.objects('permissions').sorted('_updatedAt', true)[0];
|
||||||
|
const permissions = await call('permissions/get');
|
||||||
|
const preparedPermissions = RocketChat._preparePermissions(permissions);
|
||||||
|
console.log(preparedPermissions)
|
||||||
|
// realm.write(() => {
|
||||||
|
// permissions.forEach(permission => realm.create('permissions', permission, true));
|
||||||
|
// });
|
||||||
|
reduxStore.dispatch(actions.setAllPermissions(RocketChat.parsePermissions(permissions)));
|
||||||
|
// const filteredPermissions = RocketChat._preparePermissions(RocketChat._filterPermissions(permissions));
|
||||||
|
|
||||||
|
// const temp = realm.objects('permissions').sorted('_updatedAt', true)[0];
|
||||||
|
// const result = await (!temp ? call('public-permissions/get') : call('public-permissions/get', new Date(temp._updatedAt)));
|
||||||
|
// const permissions = temp ? result.update : result;
|
||||||
|
// const filteredPermissions = RocketChat._preparePermissions(RocketChat._filterPermissions(permissions));
|
||||||
|
// realm.write(() => {
|
||||||
|
// filteredPermissions.forEach(permission => realm.create('permissions', permission, true));
|
||||||
|
// });
|
||||||
|
// reduxStore.dispatch(actions.setAllPermissions(RocketChat.parsePermissions(filteredPermissions)));
|
||||||
|
},
|
||||||
|
parsePermissions: permissions => permissions.reduce((ret, item) => {
|
||||||
|
ret[item._id] = item.roles;
|
||||||
|
return ret;
|
||||||
|
}, {}),
|
||||||
|
_preparePermissions(permissions) {
|
||||||
|
const tmpPermissions = [...permissions];
|
||||||
|
tmpPermissions.forEach((permission) => {
|
||||||
|
permission.roles = permission.roles.map((role) => {
|
||||||
|
role = { value: role };
|
||||||
|
return role;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return tmpPermissions;
|
||||||
|
},
|
||||||
deleteMessage(message) {
|
deleteMessage(message) {
|
||||||
return call('deleteMessage', { _id: message._id });
|
return call('deleteMessage', { _id: message._id });
|
||||||
},
|
},
|
||||||
|
|
|
@ -7,8 +7,8 @@ import server from './server';
|
||||||
import navigator from './navigator';
|
import navigator from './navigator';
|
||||||
import createChannel from './createChannel';
|
import createChannel from './createChannel';
|
||||||
import app from './app';
|
import app from './app';
|
||||||
|
import permissions from './permissions';
|
||||||
|
|
||||||
export default combineReducers({
|
export default combineReducers({
|
||||||
settings, login, meteor, messages, server, navigator, createChannel, app
|
settings, login, meteor, messages, server, navigator, createChannel, app, permissions
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
import * as types from '../constants/types';
|
||||||
|
|
||||||
|
const initialState = {
|
||||||
|
permissions: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
export default function permissions(state = initialState.permissions, action) {
|
||||||
|
if (action.type === types.SET_ALL_PERMISSIONS) {
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
...action.payload
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return state;
|
||||||
|
}
|
Loading…
Reference in New Issue