nyx_server
Version:
Node内容发布
239 lines (211 loc) • 5.7 kB
JavaScript
import fetch from 'isomorphic-fetch';
import * as types from "../constants/ActionTypes"
//import _ from "lodash";
function queryString(object){
return _.transform(object, function(result, value, key) {
result.push(key+"="+value);
}, []).join("&");
}
function _fetch(url , params , fn){
fetch(url , {
credentials: "include",
method : "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: queryString(params)+""
}).then(function(response){
return response.json();
}).then(function(result){
if(result.success){
return fn(result.data);
}
console.log("load "+url+" error , "+result.message)
}).catch(function(err){
console.log("load "+url+" error , "+err.message)
})
}
function getFetch(url , fn){
fetch(url, {credentials: "include"}).then(function(response){
return response.json();
}).then(function(result){
if(result.success){
return fn(result.data)
}
console.log("load "+url+" error , "+result.message)
}).catch(function(err){
console.log("load "+url+" error , "+err.message)
})
}
/*
function dispatch(dispatch){
return function(action){
dispatch(action)
}
}
function action(type){
return (payload) =>{
return {
type:type,
payload:payload,
error: payload instanceof Error
}
}
}
function fetchOptions(){
return (method) => (header) =>(body) =>{
return {
method:method,
header:header,
body:body
}
}
}
var postOptions = fetchOption("POST")({"Content-Type": "application/x-www-form-urlencoded"});
var getOptions = fetchOption("GET")({});
function queryString(object){
return _.transform(object, function(result, value, key) {
result += "&"+ key+"="+value;
}, "");
}
function userInfo(userId){
var _fetch = _.curry(fetch);
const userInfoFetch = _.flowRight(map(action(type)) , _fetch(url) , postOption)
dispatch =>{
var _fn = _.flowRight(dispatch , userInfoFetch , queryString);
_fn({userId:userId});
}
}
*/
/**
* 查询组列表
*/
export function groupList(pagination){
dispatch => {
getFetch(REQUESTADDRESS+"/auth/groups" , pagination , function(groups){
dispatch({
type:types.LOAD_GROUP_LIST,
payload:{
groups:groups,
pagination:pagination
},
error:false
});
})
}
}
export function addUser(user){
return dispatch =>{
fetch(REQUESTADDRESS+"/users/user" , {
credentials: "include",
method : "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: queryString(user)+""
}).then(function(response){
return response.json();
}).then(function(result){
if(result.success){
dispatch({
type:types.ADD_USER,
payload:{
user:user
},
error:false
})
}
throw new Error(result.message);
}).catch(function(err){
dispatch({
type:types.ADD_USER,
payload:new Error(err.message),
error:true
})
})
}
}
/**
*查询用户列表
*/
export function userList(pagination){
return dispatch => {
_fetch(REQUESTADDRESS+"/users/users" , pagination , function(result){
var users = result.data;
var total = result.total;
pagination.total = total;
dispatch({
type:types.LOAD_USER_LIST,
payload:{
userList:users,
pagination:pagination
},
error:false
})
})
}
}
export function permissionList(pagination){
return dispatch => {
_fetch(REQUESTADDRESS+"/auth/permissions" , pagination , function(permissions){
dispatch({
type:types.LOAD_GROUP_LIST,
payload:{
permissions:permissions,
pagination:pagination
},
error:false
})
})
}
}
//用户信息
export function userInfo(userName){
return dispatch => {
getFetch(REQUESTADDRESS+"/users/user/"+ userName , function(userInfo){
dispatch({
type:types.USER_INFO,
payload:{
userInfo:userInfo
},
error:false
})
})
}
}
export function openAddUser(opened){
return {
type: types.OPEN_ADD_USER,
payload : {opened:opened}
}
}
export function setUserFormField(fieldName, value , message){
return {
type: types.SET_USER_FROM_FIELD,
payload: {
fieldName: fieldName,
value: value,
error: message
}
}
}
export function userExist(userName){
return dispatch => {
getFetch(REQUESTADDRESS+"/users/exist/"+ userName , function(exist){
dispatch({
type:types.SET_USER_FROM_FIELD,
payload:{
fieldName :"name",
value : userName,
error : (exist ? "用户已经存在":"")
},
error:false
})
})
}
}
export function cleanAddUserState(){
return {
type: types.CLEAN_ADD_USER_STATE
}
}