You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
2.9 KiB
124 lines
2.9 KiB
import axios from 'axios';
|
|
import { message } from 'antd';
|
|
|
|
const LOCAL_CONFIG_KEY = 'IMOVE:LOCAL_CONFIG_KEY';
|
|
export interface ILocalConfig {
|
|
ip: string;
|
|
port: string;
|
|
npmRegistry: string;
|
|
}
|
|
|
|
export enum ActionType {
|
|
create = 'create',
|
|
update = 'update',
|
|
remove = 'remove',
|
|
}
|
|
|
|
export interface IModifyGraphAction {
|
|
type: string;
|
|
actionType: ActionType;
|
|
data: any;
|
|
}
|
|
|
|
interface RequestConfig {
|
|
url: string;
|
|
method?: 'get' | 'post';
|
|
params?: { [key: string]: any };
|
|
headers?: { [key: string]: string };
|
|
}
|
|
|
|
const request = (function () {
|
|
const instance = axios.create();
|
|
instance.interceptors.response.use((response: any) => {
|
|
const { data } = response || {};
|
|
const { success, msg } = data || {};
|
|
if (success) {
|
|
return data;
|
|
} else {
|
|
message.error(msg);
|
|
return Promise.reject(data);
|
|
}
|
|
});
|
|
return (config: RequestConfig) => {
|
|
const { url, method = 'post', params, headers = {} } = config;
|
|
return instance.request({
|
|
url,
|
|
method,
|
|
headers: {
|
|
'Content-Type': 'application/json;charset=utf-8',
|
|
...headers,
|
|
},
|
|
data: params,
|
|
timeout: 3000,
|
|
});
|
|
};
|
|
})();
|
|
|
|
/**
|
|
* get local config data (saved in localStorage)
|
|
* @returns local config
|
|
*/
|
|
export const getLocalConfig = (): ILocalConfig => {
|
|
const savedConfigString = localStorage.getItem(LOCAL_CONFIG_KEY) || '';
|
|
let savedConfig = {} as ILocalConfig;
|
|
try {
|
|
savedConfig = JSON.parse(savedConfigString);
|
|
} catch (e) {}
|
|
return {
|
|
ip: savedConfig.ip || '127.0.0.1',
|
|
port: savedConfig.port || '3500',
|
|
npmRegistry: savedConfig.npmRegistry || 'https://registry.npm.taobao.org',
|
|
};
|
|
};
|
|
|
|
/**
|
|
* get local config data (saved in localStorage)
|
|
*/
|
|
export const updateLocalConfig = (config: ILocalConfig) => {
|
|
const savedConfig = getLocalConfig();
|
|
savedConfig.ip = config.ip || savedConfig.ip;
|
|
savedConfig.port = config.port || savedConfig.port;
|
|
savedConfig.npmRegistry = (
|
|
config.npmRegistry || savedConfig.npmRegistry
|
|
).replace(/\/$/, '');
|
|
localStorage.setItem(LOCAL_CONFIG_KEY, JSON.stringify(savedConfig));
|
|
};
|
|
|
|
export const localConnect = () => {
|
|
const localConfig = getLocalConfig();
|
|
return fetch(`http://${localConfig.ip}:${localConfig.port}/api/connect`, {
|
|
method: 'GET',
|
|
headers: { 'content-type': 'application/json' },
|
|
});
|
|
};
|
|
|
|
export const localSave = (data: any) => {
|
|
const localConfig = getLocalConfig();
|
|
fetch(`http://${localConfig.ip}:${localConfig.port}/api/save`, {
|
|
method: 'POST',
|
|
headers: { 'content-type': 'application/json' },
|
|
body: JSON.stringify(data),
|
|
});
|
|
};
|
|
|
|
export const queryGraph = (projectId: string) => {
|
|
return request({
|
|
url: '/api/queryGraph',
|
|
params: {
|
|
projectId,
|
|
},
|
|
});
|
|
};
|
|
|
|
export const modifyGraph = (
|
|
projectId: string,
|
|
actions: IModifyGraphAction[],
|
|
) => {
|
|
return request({
|
|
url: '/api/modifyGraph',
|
|
params: {
|
|
projectId,
|
|
actions,
|
|
},
|
|
});
|
|
};
|
|
|