make ajax configurable

This commit is contained in:
Géry Debongnie
2019-02-06 16:17:32 +01:00
parent e2fad78eeb
commit 82d8ca9da8
3 changed files with 21 additions and 10 deletions
+7 -1
View File
@@ -31,7 +31,7 @@ export const init = memoize(async function(): Promise<InitializedData> {
// services
const qweb = new QWeb();
const router = new Router();
const ajax = new Ajax();
const ajax = new Ajax(ajaxFetch);
const actionManager = new ActionManager(actionRegistry, ajax);
const notifications = new NotificationManager();
@@ -65,6 +65,12 @@ export const init = memoize(async function(): Promise<InitializedData> {
// Adapters
//------------------------------------------------------------------------------
function ajaxFetch(route: string, params: any): Promise<any> {
console.log("RPC", route, params);
const delay = Math.random() * 150;
return new Promise(resolve => setTimeout(resolve, delay));
}
/**
* Load xml templates as a string.
*/
+9 -3
View File
@@ -26,16 +26,22 @@ interface RequestParameters {
params: { [key: string]: any };
}
export type FetchMethod = (route: string, params: any) => Promise<any>;
//------------------------------------------------------------------------------
// Ajax
//------------------------------------------------------------------------------
export class Ajax implements IAjax {
fetch: FetchMethod;
constructor(fetch: FetchMethod) {
this.fetch = fetch;
}
rpc(rpc: RPCQuery): Promise<any> {
const request = this.prepareRequest(rpc);
console.log("RPC", request.route, request.params);
const delay = Math.random() * 150;
return new Promise(resolve => setTimeout(resolve, delay));
return this.fetch(request.route, request.params);
}
private prepareRequest(query: RPCQuery): RequestParameters {