Skip to content

Commit 0a5d61d

Browse files
committed
feat(sdk): Add option to open vault directly in the update and delete connection view
1 parent 8280682 commit 0a5d61d

File tree

5 files changed

+140
-4
lines changed

5 files changed

+140
-4
lines changed

src/api/__tests__/open-service-url.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,38 @@ describe('api', () => {
9898
expect(url).toBe(`${VAULT_DOMAINS.production}/connection/123?${query}`);
9999
});
100100

101+
test('vault/connection-update', () => {
102+
const url = openServiceUrl(new MtLinkSdk().storedOptions, 'vault', {
103+
view: 'connection-update',
104+
credentialId: '123',
105+
showRememberMe: false
106+
});
107+
108+
const query = qs.stringify({
109+
configs: generateConfigs({
110+
showRememberMe: false
111+
})
112+
});
113+
114+
expect(url).toBe(`${VAULT_DOMAINS.production}/connection/123/update?${query}`);
115+
});
116+
117+
test('vault/connection-delete', () => {
118+
const url = openServiceUrl(new MtLinkSdk().storedOptions, 'vault', {
119+
view: 'connection-delete',
120+
credentialId: '123',
121+
showRememberMe: false
122+
});
123+
124+
const query = qs.stringify({
125+
configs: generateConfigs({
126+
showRememberMe: false
127+
})
128+
});
129+
130+
expect(url).toBe(`${VAULT_DOMAINS.production}/connection/123/delete?${query}`);
131+
});
132+
101133
test('vault/customer-support', () => {
102134
const url = openServiceUrl(new MtLinkSdk().storedOptions, 'vault', {
103135
view: 'customer-support',

src/api/__tests__/open-service.test.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,48 @@ describe('api', () => {
127127
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
128128
});
129129

130+
test('vault/connection-update', () => {
131+
open.mockClear();
132+
133+
openService(new MtLinkSdk().storedOptions, 'vault', {
134+
view: 'connection-update',
135+
credentialId: '123',
136+
showRememberMe: false
137+
});
138+
139+
expect(open).toBeCalledTimes(1);
140+
141+
const query = qs.stringify({
142+
configs: generateConfigs({
143+
showRememberMe: false
144+
})
145+
});
146+
const url = `${VAULT_DOMAINS.production}/connection/123/update?${query}`;
147+
148+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
149+
});
150+
151+
test('vault/connection-delete', () => {
152+
open.mockClear();
153+
154+
openService(new MtLinkSdk().storedOptions, 'vault', {
155+
view: 'connection-delete',
156+
credentialId: '123',
157+
showRememberMe: false
158+
});
159+
160+
expect(open).toBeCalledTimes(1);
161+
162+
const query = qs.stringify({
163+
configs: generateConfigs({
164+
showRememberMe: false
165+
})
166+
});
167+
const url = `${VAULT_DOMAINS.production}/connection/123/delete?${query}`;
168+
169+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
170+
});
171+
130172
test('vault/customer-support', () => {
131173
open.mockClear();
132174

src/api/open-service-url.ts

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import {
1616
VaultOpenServiceUrlViewServiceList,
1717
VaultOpenServiceUrlViewServiceConnection,
1818
VaultOpenServiceUrlViewConnectionSetting,
19+
VaultOpenServiceUrlViewConnectionUpdate,
20+
VaultOpenServiceUrlViewConnectionDelete,
1921
VaultOpenServiceUrlViewCustomerSupport
2022
} from '../typings';
2123

@@ -57,6 +59,16 @@ export default function openServiceUrl(
5759
serviceId: 'vault',
5860
options?: VaultOpenServiceUrlViewConnectionSetting
5961
): string;
62+
export default function openServiceUrl(
63+
storedOptions: StoredOptions,
64+
serviceId: 'vault',
65+
options?: VaultOpenServiceUrlViewConnectionUpdate
66+
): string;
67+
export default function openServiceUrl(
68+
storedOptions: StoredOptions,
69+
serviceId: 'vault',
70+
options?: VaultOpenServiceUrlViewConnectionDelete
71+
): string;
6072
export default function openServiceUrl(
6173
storedOptions: StoredOptions,
6274
serviceId: 'vault',
@@ -105,17 +117,29 @@ export default function openServiceUrl(
105117
search
106118
})}`;
107119

108-
case 'service-connection':
109-
// eslint-disable-next-line no-case-declarations
120+
case 'service-connection': {
110121
const { entityKey } = options as VaultViewServiceConnection;
111122

112123
return `${VAULT_DOMAINS[mode]}/service/${entityKey}?${getQueryValue()}`;
124+
}
113125

114-
case 'connection-setting':
115-
// eslint-disable-next-line no-case-declarations
126+
case 'connection-setting': {
116127
const { credentialId } = options as VaultViewConnectionSetting;
117128

118129
return `${VAULT_DOMAINS[mode]}/connection/${credentialId}?${getQueryValue()}`;
130+
}
131+
132+
case 'connection-update': {
133+
const { credentialId } = options as VaultViewConnectionSetting;
134+
135+
return `${VAULT_DOMAINS[mode]}/connection/${credentialId}/update?${getQueryValue()}`;
136+
}
137+
138+
case 'connection-delete': {
139+
const { credentialId } = options as VaultViewConnectionSetting;
140+
141+
return `${VAULT_DOMAINS[mode]}/connection/${credentialId}/delete?${getQueryValue()}`;
142+
}
119143

120144
case 'customer-support':
121145
default:

src/api/open-service.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import {
88
VaultOpenServiceViewServiceList,
99
VaultOpenServiceViewServiceConnection,
1010
VaultOpenServiceViewConnectionSetting,
11+
VaultOpenServiceViewConnectionUpdate,
12+
VaultOpenServiceViewConnectionDelete,
1113
VaultOpenServiceViewCustomerSupport,
1214
ConfigsOptions
1315
} from '../typings';
@@ -39,6 +41,16 @@ export default function openService(
3941
serviceId: 'vault',
4042
options?: VaultOpenServiceViewConnectionSetting
4143
): void;
44+
export default function openService(
45+
storedOptions: StoredOptions,
46+
serviceId: 'vault',
47+
options?: VaultOpenServiceViewConnectionUpdate
48+
): void;
49+
export default function openService(
50+
storedOptions: StoredOptions,
51+
serviceId: 'vault',
52+
options?: VaultOpenServiceViewConnectionDelete
53+
): void;
4254
export default function openService(
4355
storedOptions: StoredOptions,
4456
serviceId: 'vault',

src/typings.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,11 +135,29 @@ export type VaultViewConnectionSetting = {
135135
*/
136136
credentialId: string;
137137
};
138+
export type VaultViewConnectionUpdate = {
139+
view: 'connection-update';
140+
/**
141+
* Credential ID.
142+
* @remark ⚠️ If credentialId is invalid the Vault top page will be shown.
143+
*/
144+
credentialId: string;
145+
};
146+
export type VaultViewConnectionDelete = {
147+
view: 'connection-delete';
148+
/**
149+
* Credential ID.
150+
* @remark ⚠️ If credentialId is invalid the Vault top page will be shown.
151+
*/
152+
credentialId: string;
153+
};
138154
export type VaultViewCustomerSupport = { view: 'customer-support' };
139155
export type VaultServiceTypes =
140156
| VaultViewServiceList
141157
| VaultViewServiceConnection
142158
| VaultViewConnectionSetting
159+
| VaultViewConnectionUpdate
160+
| VaultViewConnectionDelete
143161
| VaultViewCustomerSupport;
144162

145163
export type MyAccountServiceTypes = {
@@ -160,10 +178,14 @@ export type MyAccountOpenServiceUrlOptions =
160178
export type VaultOpenServiceViewServiceList = ConfigsOptions & VaultViewServiceList;
161179
export type VaultOpenServiceViewServiceConnection = ConfigsOptions & VaultViewServiceConnection;
162180
export type VaultOpenServiceViewConnectionSetting = ConfigsOptions & VaultViewConnectionSetting;
181+
export type VaultOpenServiceViewConnectionUpdate = ConfigsOptions & VaultViewConnectionUpdate;
182+
export type VaultOpenServiceViewConnectionDelete = ConfigsOptions & VaultViewConnectionDelete;
163183
export type VaultOpenServiceViewCustomerSupport = ConfigsOptions & VaultViewCustomerSupport;
164184
export type VaultOpenServiceUrlViewServiceList = ConfigsOptionsWithoutIsNewTab & VaultViewServiceList;
165185
export type VaultOpenServiceUrlViewServiceConnection = ConfigsOptionsWithoutIsNewTab & VaultViewServiceConnection;
166186
export type VaultOpenServiceUrlViewConnectionSetting = ConfigsOptionsWithoutIsNewTab & VaultViewConnectionSetting;
187+
export type VaultOpenServiceUrlViewConnectionUpdate = ConfigsOptionsWithoutIsNewTab & VaultViewConnectionUpdate;
188+
export type VaultOpenServiceUrlViewConnectionDelete = ConfigsOptionsWithoutIsNewTab & VaultViewConnectionDelete;
167189
export type VaultOpenServiceUrlViewCustomerSupport = ConfigsOptionsWithoutIsNewTab & VaultViewCustomerSupport;
168190

169191
export type LinkKitOpenServiceOptions = ConfigsOptions;
@@ -174,13 +196,17 @@ export type OpenServiceOptions =
174196
| ConfigsOptions
175197
| VaultOpenServiceViewServiceList
176198
| VaultOpenServiceViewConnectionSetting
199+
| VaultOpenServiceViewConnectionUpdate
200+
| VaultOpenServiceViewConnectionDelete
177201
| VaultOpenServiceViewCustomerSupport
178202
| LinkKitOpenServiceOptions;
179203
export type OpenServiceUrlOptions =
180204
| MyAccountOpenServiceUrlOptions
181205
| ConfigsOptionsWithoutIsNewTab
182206
| VaultOpenServiceUrlViewServiceList
183207
| VaultOpenServiceUrlViewConnectionSetting
208+
| VaultOpenServiceUrlViewConnectionUpdate
209+
| VaultOpenServiceUrlViewConnectionDelete
184210
| VaultOpenServiceUrlViewCustomerSupport
185211
| LinkKitOpenServiceUrlOptions;
186212

0 commit comments

Comments
 (0)