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:
Sojan Jose
2020-03-09 23:27:10 +05:30
committed by GitHub
parent 2a6670f0da
commit 19ab0fe108
105 changed files with 480 additions and 402 deletions

View File

@@ -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() {

View File

@@ -2,7 +2,7 @@ import ApiClient from './ApiClient';
class Agents extends ApiClient {
constructor() {
super('agents');
super('agents', { accountScoped: true });
}
}

View File

@@ -4,7 +4,7 @@ import ApiClient from './ApiClient';
class CannedResponse extends ApiClient {
constructor() {
super('canned_responses');
super('canned_responses', { accountScoped: true });
}
get({ searchKey }) {

View File

@@ -3,7 +3,7 @@ import ApiClient from './ApiClient';
class ContactAPI extends ApiClient {
constructor() {
super('contacts');
super('contacts', { accountScoped: true });
}
getConversations(contactId) {

View File

@@ -3,7 +3,7 @@ import ApiClient from './ApiClient';
class ConversationApi extends ApiClient {
constructor() {
super('conversations');
super('conversations', { accountScoped: true });
}
getLabels(conversationID) {

View File

@@ -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 {

View File

@@ -3,7 +3,7 @@ import ApiClient from '../ApiClient';
class ConversationApi extends ApiClient {
constructor() {
super('conversations');
super('conversations', { accountScoped: true });
}
get({ inboxId, status, assigneeType, page }) {

View File

@@ -4,7 +4,7 @@ import ApiClient from '../ApiClient';
class MessageApi extends ApiClient {
constructor() {
super('conversations');
super('conversations', { accountScoped: true });
}
create({ conversationId, message, private: isPrivate }) {

View File

@@ -3,7 +3,7 @@ import ApiClient from './ApiClient';
class InboxMembers extends ApiClient {
constructor() {
super('inbox_members');
super('inbox_members', { accountScoped: true });
}
create({ inboxId, agentList }) {

View File

@@ -2,7 +2,7 @@ import ApiClient from './ApiClient';
class Inboxes extends ApiClient {
constructor() {
super('inboxes');
super('inboxes', { accountScoped: true });
}
}

View File

@@ -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();

View File

@@ -3,7 +3,7 @@ import ApiClient from './ApiClient';
class UserNotificationSettings extends ApiClient {
constructor() {
super('user/notification_settings');
super('notification_settings', { accountScoped: true });
}
update(params) {

View File

@@ -2,7 +2,7 @@ import ApiClient from './ApiClient';
class WebHooks extends ApiClient {
constructor() {
super('account/webhooks');
super('webhooks', { accountScoped: true });
}
}