Chore: Scope URLs with account_id (#601)
* Chore: Enable Users to create multiple accounts Addresses: #402 - migrations to split roles and other attributes from users table - make changes in code to accommodate this change Co-authored-by: Pranav Raj Sreepuram <pranavrajs@gmail.com>
This commit is contained in:
@@ -3,9 +3,25 @@
|
||||
const API_VERSION = `/api/v1`;
|
||||
|
||||
class ApiClient {
|
||||
constructor(url) {
|
||||
constructor(resource, options = {}) {
|
||||
this.apiVersion = API_VERSION;
|
||||
this.url = `${this.apiVersion}/${url}`;
|
||||
this.options = options;
|
||||
this.resource = resource;
|
||||
}
|
||||
|
||||
get url() {
|
||||
let url = this.apiVersion;
|
||||
if (this.options.accountScoped) {
|
||||
const isInsideAccountScopedURLs = window.location.pathname.includes(
|
||||
'/app/accounts'
|
||||
);
|
||||
|
||||
if (isInsideAccountScopedURLs) {
|
||||
const accountId = window.location.pathname.split('/')[3];
|
||||
url = `${url}/accounts/${accountId}`;
|
||||
}
|
||||
}
|
||||
return `${url}/${this.resource}`;
|
||||
}
|
||||
|
||||
get() {
|
||||
|
||||
@@ -2,7 +2,7 @@ import ApiClient from './ApiClient';
|
||||
|
||||
class Agents extends ApiClient {
|
||||
constructor() {
|
||||
super('agents');
|
||||
super('agents', { accountScoped: true });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import ApiClient from './ApiClient';
|
||||
|
||||
class CannedResponse extends ApiClient {
|
||||
constructor() {
|
||||
super('canned_responses');
|
||||
super('canned_responses', { accountScoped: true });
|
||||
}
|
||||
|
||||
get({ searchKey }) {
|
||||
|
||||
@@ -3,7 +3,7 @@ import ApiClient from './ApiClient';
|
||||
|
||||
class ContactAPI extends ApiClient {
|
||||
constructor() {
|
||||
super('contacts');
|
||||
super('contacts', { accountScoped: true });
|
||||
}
|
||||
|
||||
getConversations(contactId) {
|
||||
|
||||
@@ -3,7 +3,7 @@ import ApiClient from './ApiClient';
|
||||
|
||||
class ConversationApi extends ApiClient {
|
||||
constructor() {
|
||||
super('conversations');
|
||||
super('conversations', { accountScoped: true });
|
||||
}
|
||||
|
||||
getLabels(conversationID) {
|
||||
|
||||
@@ -28,23 +28,10 @@ const endPoints = {
|
||||
},
|
||||
|
||||
fetchFacebookPages: {
|
||||
url: 'api/v1/callbacks/get_facebook_pages.json',
|
||||
url: 'api/v1/callbacks/facebook_pages.json',
|
||||
params: { omniauth_token: '' },
|
||||
},
|
||||
|
||||
reports: {
|
||||
account(metric, from, to) {
|
||||
return {
|
||||
url: `/api/v1/reports/account?metric=${metric}&since=${from}&to=${to}`,
|
||||
};
|
||||
},
|
||||
accountSummary(accountId, from, to) {
|
||||
return {
|
||||
url: `/api/v1/reports/${accountId}/account_summary?since=${from}&to=${to}`,
|
||||
};
|
||||
},
|
||||
},
|
||||
|
||||
subscriptions: {
|
||||
get() {
|
||||
return {
|
||||
|
||||
@@ -3,7 +3,7 @@ import ApiClient from '../ApiClient';
|
||||
|
||||
class ConversationApi extends ApiClient {
|
||||
constructor() {
|
||||
super('conversations');
|
||||
super('conversations', { accountScoped: true });
|
||||
}
|
||||
|
||||
get({ inboxId, status, assigneeType, page }) {
|
||||
|
||||
@@ -4,7 +4,7 @@ import ApiClient from '../ApiClient';
|
||||
|
||||
class MessageApi extends ApiClient {
|
||||
constructor() {
|
||||
super('conversations');
|
||||
super('conversations', { accountScoped: true });
|
||||
}
|
||||
|
||||
create({ conversationId, message, private: isPrivate }) {
|
||||
|
||||
@@ -3,7 +3,7 @@ import ApiClient from './ApiClient';
|
||||
|
||||
class InboxMembers extends ApiClient {
|
||||
constructor() {
|
||||
super('inbox_members');
|
||||
super('inbox_members', { accountScoped: true });
|
||||
}
|
||||
|
||||
create({ inboxId, agentList }) {
|
||||
|
||||
@@ -2,7 +2,7 @@ import ApiClient from './ApiClient';
|
||||
|
||||
class Inboxes extends ApiClient {
|
||||
constructor() {
|
||||
super('inboxes');
|
||||
super('inboxes', { accountScoped: true });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,22 @@
|
||||
/* global axios */
|
||||
import ApiClient from './ApiClient';
|
||||
|
||||
import endPoints from './endPoints';
|
||||
class ReportsAPI extends ApiClient {
|
||||
constructor() {
|
||||
super('reports', { accountScoped: true });
|
||||
}
|
||||
|
||||
export default {
|
||||
getAccountReports(metric, from, to) {
|
||||
const { url } = endPoints('reports').account(metric, from, to);
|
||||
return axios.get(url);
|
||||
},
|
||||
getAccountSummary(accountId, from, to) {
|
||||
const urlData = endPoints('reports').accountSummary(accountId, from, to);
|
||||
return axios.get(urlData.url);
|
||||
},
|
||||
};
|
||||
getAccountReports(metric, since, until) {
|
||||
return axios.get(`${this.url}/account`, {
|
||||
params: { metric, since, until },
|
||||
});
|
||||
}
|
||||
|
||||
getAccountSummary(accountId, since, until) {
|
||||
return axios.get(`${this.url}/${accountId}/account_summary`, {
|
||||
params: { since, until },
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new ReportsAPI();
|
||||
|
||||
@@ -3,7 +3,7 @@ import ApiClient from './ApiClient';
|
||||
|
||||
class UserNotificationSettings extends ApiClient {
|
||||
constructor() {
|
||||
super('user/notification_settings');
|
||||
super('notification_settings', { accountScoped: true });
|
||||
}
|
||||
|
||||
update(params) {
|
||||
|
||||
@@ -2,7 +2,7 @@ import ApiClient from './ApiClient';
|
||||
|
||||
class WebHooks extends ApiClient {
|
||||
constructor() {
|
||||
super('account/webhooks');
|
||||
super('webhooks', { accountScoped: true });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user