Skip to content

Commit b000dc4

Browse files
authored
Merge pull request #59 from moneytree/fix-safari-issue
Fix window.open didn't work on Safari 14
2 parents cb6f9d1 + 882c23c commit b000dc4

File tree

8 files changed

+31
-29
lines changed

8 files changed

+31
-29
lines changed

src/api/__tests__/logout.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ describe('api', () => {
1818
configs: generateConfigs(),
1919
});
2020
const url = `${MY_ACCOUNT_DOMAINS.production}/guests/logout?${query}`;
21-
expect(window.open).toBeCalledWith(url, '_self');
21+
expect(window.open).toBeCalledWith(url, '_self', 'noreferrer');
2222
});
2323

2424
test('after calling init', () => {
@@ -44,7 +44,7 @@ describe('api', () => {
4444
configs: generateConfigs(),
4545
});
4646
const url = `${MY_ACCOUNT_DOMAINS.production}/guests/logout?${query}`;
47-
expect(window.open).toBeCalledWith(url, '_self');
47+
expect(window.open).toBeCalledWith(url, '_self', 'noreferrer');
4848
});
4949

5050
test('with options', () => {
@@ -64,7 +64,7 @@ describe('api', () => {
6464
}),
6565
});
6666
const url = `${MY_ACCOUNT_DOMAINS.production}/guests/logout?${query}`;
67-
expect(window.open).toBeCalledWith(url, '_self');
67+
expect(window.open).toBeCalledWith(url, '_self', 'noreferrer');
6868
});
6969

7070
test('without window', () => {

src/api/__tests__/onboard.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ describe('api', () => {
9797
configs: generateConfigs({ email }),
9898
});
9999
const url = `${MY_ACCOUNT_DOMAINS.production}/onboard?${query}`;
100-
expect(open).toBeCalledWith(url, '_self');
100+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
101101
});
102102

103103
test('with options', () => {
@@ -131,7 +131,7 @@ describe('api', () => {
131131
configs: generateConfigs({ email }),
132132
});
133133
const url = `${MY_ACCOUNT_DOMAINS.production}/onboard?${query}`;
134-
expect(open).toBeCalledWith(url, '_self');
134+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
135135
});
136136

137137
test('without window', () => {

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ describe('api', () => {
2222
});
2323
const url = `${MY_ACCOUNT_DOMAINS.production}/settings?${query}`;
2424

25-
expect(open).toBeCalledWith(url, '_self');
25+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
2626
});
2727

2828
test('vault', () => {
@@ -41,7 +41,7 @@ describe('api', () => {
4141
});
4242
const url = `${VAULT_DOMAINS.production}?${query}`;
4343

44-
expect(open).toBeCalledWith(url, '_self');
44+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
4545
});
4646

4747
test('vault/services-list', () => {
@@ -67,7 +67,7 @@ describe('api', () => {
6767
});
6868
const url = `${VAULT_DOMAINS.production}/services?${query}`;
6969

70-
expect(open).toBeCalledWith(url, '_self');
70+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
7171
});
7272

7373
test('vault/service-connection', () => {
@@ -88,7 +88,7 @@ describe('api', () => {
8888
});
8989
const url = `${VAULT_DOMAINS.production}/service/fauxbank_test_bank?${query}`;
9090

91-
expect(open).toBeCalledWith(url, '_self');
91+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
9292
});
9393

9494
test('vault/connection-setting', () => {
@@ -109,7 +109,7 @@ describe('api', () => {
109109
});
110110
const url = `${VAULT_DOMAINS.production}/connection/123?${query}`;
111111

112-
expect(open).toBeCalledWith(url, '_self');
112+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
113113
});
114114

115115
test('vault/customer-support', () => {
@@ -129,7 +129,7 @@ describe('api', () => {
129129
});
130130
const url = `${VAULT_DOMAINS.production}/customer-support?${query}`;
131131

132-
expect(open).toBeCalledWith(url, '_self');
132+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
133133
});
134134

135135
test('link-kit', () => {
@@ -146,7 +146,7 @@ describe('api', () => {
146146
});
147147
const url = `${LINK_KIT_DOMAINS.production}?${query}`;
148148

149-
expect(open).toBeCalledWith(url, '');
149+
expect(open).toBeCalledWith(url, '', 'noreferrer');
150150
});
151151

152152
test('calling after init will includes client id', () => {
@@ -173,7 +173,7 @@ describe('api', () => {
173173
});
174174
const url = `${MY_ACCOUNT_DOMAINS.production}/settings?${query}`;
175175

176-
expect(open).toBeCalledWith(url, '_self');
176+
expect(open).toBeCalledWith(url, '_self', 'noreferrer');
177177
});
178178

179179
test('invalid service id', () => {

src/api/authorize.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
mergeConfigs,
77
getIsTabValue,
88
generateCodeChallenge,
9+
openWindow,
910
} from '../helper';
1011
import { MY_ACCOUNT_DOMAINS } from '../server-paths';
1112
import { StoredOptions, AuthorizeOptions } from '../typings';
@@ -68,9 +69,5 @@ export default function authorize(
6869
configs: generateConfigs(mergeConfigs(storedOptions, rest)),
6970
});
7071

71-
window.open(
72-
`${MY_ACCOUNT_DOMAINS[mode]}/oauth/authorize?${queryString}`,
73-
getIsTabValue(isNewTab),
74-
'noreferrer'
75-
);
72+
openWindow(`${MY_ACCOUNT_DOMAINS[mode]}/oauth/authorize?${queryString}`, getIsTabValue(isNewTab));
7673
}

src/api/logout.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { stringify } from 'qs';
22

3-
import { generateConfigs, mergeConfigs, getIsTabValue } from '../helper';
3+
import { generateConfigs, mergeConfigs, getIsTabValue, openWindow } from '../helper';
44
import { MY_ACCOUNT_DOMAINS } from '../server-paths';
55
import { StoredOptions, LogoutOptions } from '../typings';
66

@@ -19,5 +19,5 @@ export default function logout(storedOptions: StoredOptions, options: LogoutOpti
1919
configs: generateConfigs(mergeConfigs(storedOptions, rest)),
2020
});
2121

22-
window.open(`${MY_ACCOUNT_DOMAINS[mode]}/guests/logout?${queryString}`, getIsTabValue(isNewTab));
22+
openWindow(`${MY_ACCOUNT_DOMAINS[mode]}/guests/logout?${queryString}`, getIsTabValue(isNewTab));
2323
}

src/api/onboard.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
mergeConfigs,
77
getIsTabValue,
88
generateCodeChallenge,
9+
openWindow,
910
} from '../helper';
1011
import { MY_ACCOUNT_DOMAINS } from '../server-paths';
1112
import { StoredOptions, OnboardOptions } from '../typings';
@@ -86,5 +87,5 @@ export default function onboard(storedOptions: StoredOptions, options: OnboardOp
8687
configs: generateConfigs(configs),
8788
});
8889

89-
window.open(`${MY_ACCOUNT_DOMAINS[mode]}/onboard?${queryString}`, getIsTabValue(isNewTab));
90+
openWindow(`${MY_ACCOUNT_DOMAINS[mode]}/onboard?${queryString}`, getIsTabValue(isNewTab));
9091
}

src/api/open-service.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { stringify } from 'qs';
22

3-
import { generateConfigs, mergeConfigs, getIsTabValue } from '../helper';
3+
import { generateConfigs, mergeConfigs, getIsTabValue, openWindow } from '../helper';
44
import { MY_ACCOUNT_DOMAINS, VAULT_DOMAINS, LINK_KIT_DOMAINS } from '../server-paths';
55
import {
66
StoredOptions,
@@ -48,7 +48,7 @@ export default function openService(
4848
switch (serviceId) {
4949
case 'vault':
5050
if (!view) {
51-
window.open(`${VAULT_DOMAINS[mode]}?${getQueryValue()}`, getIsTabValue(isNewTab));
51+
openWindow(`${VAULT_DOMAINS[mode]}?${getQueryValue()}`, getIsTabValue(isNewTab));
5252
break;
5353
}
5454

@@ -57,7 +57,7 @@ export default function openService(
5757
// eslint-disable-next-line no-case-declarations
5858
const { group, type, search } = options as ServicesListType;
5959

60-
window.open(
60+
openWindow(
6161
`${VAULT_DOMAINS[mode]}/services?${stringify({
6262
...(getQueryValue(false) as QueryData),
6363
group,
@@ -72,7 +72,7 @@ export default function openService(
7272
// eslint-disable-next-line no-case-declarations
7373
const { entityKey } = options as ServiceConnectionType;
7474

75-
window.open(
75+
openWindow(
7676
`${VAULT_DOMAINS[mode]}/service/${entityKey}?${getQueryValue()}`,
7777
getIsTabValue(isNewTab)
7878
);
@@ -82,15 +82,15 @@ export default function openService(
8282
// eslint-disable-next-line no-case-declarations
8383
const { credentialId } = options as ConnectionSettingType;
8484

85-
window.open(
85+
openWindow(
8686
`${VAULT_DOMAINS[mode]}/connection/${credentialId}?${getQueryValue()}`,
8787
getIsTabValue(isNewTab)
8888
);
8989
break;
9090

9191
case 'customer-support':
9292
default:
93-
window.open(
93+
openWindow(
9494
`${VAULT_DOMAINS[mode]}/customer-support?${getQueryValue()}`,
9595
getIsTabValue(isNewTab)
9696
);
@@ -100,14 +100,14 @@ export default function openService(
100100
break;
101101

102102
case 'myaccount-settings':
103-
window.open(
103+
openWindow(
104104
`${MY_ACCOUNT_DOMAINS[mode]}/settings?${getQueryValue()}`,
105105
getIsTabValue(isNewTab)
106106
);
107107
break;
108108

109109
case 'link-kit':
110-
window.open(`${LINK_KIT_DOMAINS[mode]}?${getQueryValue()}`, getIsTabValue(isNewTab));
110+
openWindow(`${LINK_KIT_DOMAINS[mode]}?${getQueryValue()}`, getIsTabValue(isNewTab));
111111
break;
112112

113113
default:

src/helper.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,7 @@ export function generateSdkHeaderInfo(): {
106106
'mt-sdk-version': __VERSION__,
107107
};
108108
}
109+
110+
export function openWindow(url: string, windowName: string) {
111+
return window.open(url, windowName, 'noreferrer');
112+
}

0 commit comments

Comments
 (0)