mirror of
https://bitbucket.org/wisemapping/wisemapping-frontend.git
synced 2025-03-14 17:21:43 +01:00
63 lines
1.4 KiB
TypeScript
63 lines
1.4 KiB
TypeScript
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
|
|
import axios from 'axios';
|
|
import Client from '../client';
|
|
import MockClient from '../client/mock-client';
|
|
import RestClient from '../client/rest-client';
|
|
|
|
interface ConfigInfo {
|
|
apiBaseUrl: string
|
|
}
|
|
|
|
class RutimeConfig {
|
|
private config: ConfigInfo;
|
|
|
|
constructor() {
|
|
|
|
}
|
|
|
|
load() {
|
|
|
|
// Config can be inserted in the html page to define the global properties ...
|
|
this.config = (window as any).serverconfig;
|
|
return this;
|
|
}
|
|
|
|
buildClient(): Client {
|
|
let result: Client;
|
|
if (this.config) {
|
|
result = new RestClient(this.config.apiBaseUrl, () => { console.log("401 error") });
|
|
console.log("Service using rest client. " + JSON.stringify(this.config))
|
|
|
|
} else {
|
|
console.log("Warning:Service using mockservice client")
|
|
result = new MockClient();
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
|
|
interface ServiceState {
|
|
instance: Client;
|
|
}
|
|
|
|
const initialState: ServiceState = {
|
|
instance: new RutimeConfig().load().buildClient()
|
|
};
|
|
|
|
export const serviceSlice = createSlice({
|
|
name: "service",
|
|
initialState: initialState,
|
|
reducers: {
|
|
initialize(state, action: PayloadAction<void[]>) {
|
|
// state.instance = new RutimeConfig().load().buildClient()
|
|
}
|
|
},
|
|
});
|
|
|
|
export const activeInstance = (state: any): Client => {
|
|
return state.service.instance;
|
|
}
|
|
|
|
export default serviceSlice.reducer
|
|
|