Skip to content
This repository was archived by the owner on Apr 14, 2026. It is now read-only.

Commit bd8e91e

Browse files
committed
Finish up redirect service
1 parent b46c79c commit bd8e91e

6 files changed

Lines changed: 66 additions & 8 deletions

File tree

app/guid-node/addons/index/template.hbs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,14 @@
2828
>
2929
{{#if (eq manager.pageMode 'terms')}}
3030
{{#if manager.selectedProviderIsRedirectService}}
31-
{{t 'addons.terms.redirect.disclaimer'}}
31+
<p>
32+
{{t 'addons.terms.redirect.disclaimer'}}
33+
</p>
34+
<p>
35+
<i>
36+
{{t 'addons.terms.redirect.pop-up-tooltip'}}
37+
</i>
38+
</p>
3239
{{else}}
3340
<AddonsService::TermsOfService
3441
@provider={{provider.provider}}

app/settings/addons/styles.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,9 @@
120120
background-color: $bg-light;
121121
color: var(--primary-color);
122122
}
123+
124+
.disabled {
125+
opacity: 0.5;
126+
pointer-events: none;
127+
}
123128
}

app/settings/addons/template.hbs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,20 @@
2323
<h3>
2424
{{t 'addons.terms.heading' providerName=manager.selectedProvider.provider.displayName}}
2525
</h3>
26-
<AddonsService::TermsOfService
27-
@provider={{manager.selectedProvider.provider}}
28-
/>
26+
{{#if manager.selectedProviderIsRedirectService}}
27+
<p>
28+
{{t 'addons.terms.redirect.disclaimer'}}
29+
</p>
30+
<p>
31+
<i>
32+
{{t 'addons.terms.redirect.pop-up-tooltip'}}
33+
</i>
34+
</p>
35+
{{else}}
36+
<AddonsService::TermsOfService
37+
@provider={{manager.selectedProvider.provider}}
38+
/>
39+
{{/if}}
2940
<div local-class='float-right'>
3041
<Button
3142
data-test-addon-cancel-button
@@ -40,7 +51,11 @@
4051
@type='primary'
4152
{{on 'click' manager.acceptProviderTerms}}
4253
>
43-
{{t 'general.confirm'}}
54+
{{#if manager.selectedProviderIsRedirectService}}
55+
{{t 'addons.terms.go-to-service' providerName=manager.selectedProvider.provider.displayName}}
56+
{{else}}
57+
{{t 'general.confirm'}}
58+
{{/if}}
4459
</Button>
4560
</div>
4661
</div>
@@ -94,14 +109,14 @@
94109
{{/each}}
95110
</div>
96111
<AriaTabs
97-
@selectedIndex={{manager.tabIndex}} @onSelect={{action manager.changeTab}}
112+
@selectedIndex={{manager.tabIndex}} @onSelect={{action manager.changeTab}}
98113
as |tab|
99114
>
100115
<tab.tabList
101116
local-class='tab-list'
102117
as |tablist|
103118
>
104-
<tablist.tab
119+
<tablist.tab
105120
data-analytics-name='All Addons Tab'
106121
data-test-all-addons-tab-control
107122
>
@@ -110,6 +125,8 @@
110125
<tablist.tab
111126
data-test-connected-accounts-tab-control
112127
data-analytics-name='Connected Accounts Tab'
128+
local-class='{{if manager.connectAccountsTabDisabled 'disabled'}}'
129+
@disabled={{manager.connectAccountsTabDisabled}}
113130
>
114131
{{t 'addons.list.connected-accounts'}}
115132
</tablist.tab>

lib/osf-components/addon/components/addons-service/user-addons-manager/component.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export default class UserAddonManagerComponent extends Component<Args> {
5353
user = this.args.user;
5454
@tracked userReference!: UserReferenceModel;
5555
@tracked tabIndex = 0;
56+
@tracked connectAccountsTabDisabled = false;
5657

5758
possibleFilterTypes = Object.values(FilterTypes);
5859
@tracked filterTypeMapper = {
@@ -116,6 +117,11 @@ export default class UserAddonManagerComponent extends Component<Args> {
116117
this.filterText = '';
117118
}
118119
this.activeFilterType = type;
120+
this.connectAccountsTabDisabled = false;
121+
if (this.activeFilterType === FilterTypes.REDIRECT_SERVICE) {
122+
this.changeTab(0);
123+
this.connectAccountsTabDisabled = true;
124+
}
119125
const activeFilterObject = this.filterTypeMapper[type];
120126
if (activeFilterObject.list.length === 0) {
121127
activeFilterObject.fetchProvidersTask.perform();
@@ -152,6 +158,10 @@ export default class UserAddonManagerComponent extends Component<Args> {
152158
return activeFilterObject.fetchProvidersTask.isRunning;
153159
}
154160

161+
get selectedProviderIsRedirectService() {
162+
return this.selectedProvider?.provider instanceof ExternalRedirectServiceModel;
163+
}
164+
155165
@action
156166
connectNewProviderAccount(provider: Provider) {
157167
this.pageMode = UserSettingPageModes.TERMS;
@@ -160,6 +170,21 @@ export default class UserAddonManagerComponent extends Component<Args> {
160170

161171
@action
162172
acceptProviderTerms() {
173+
if (this.selectedProviderIsRedirectService) {
174+
const openURL = new URL((this.selectedProvider!.provider as ExternalRedirectServiceModel).redirectUrl);
175+
const newWindow = window.open(
176+
openURL.toString(),
177+
'_blank', 'popup,width=600,height=600,scrollbars=yes,resizable=yes',
178+
);
179+
if (newWindow) {
180+
newWindow.focus();
181+
} else {
182+
this.toast.error(this.intl.t('addons.redirect.pop-up-error'));
183+
}
184+
185+
this.cancelSetup();
186+
return;
187+
}
163188
this.pageMode = UserSettingPageModes.ACCOUNT_CREATE;
164189
}
165190

lib/osf-components/addon/components/addons-service/user-addons-manager/template.hbs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
currentTypeAuthorizedServiceIds=this.currentTypeAuthorizedServiceIds
1111
pageMode=this.pageMode
1212
tabIndex=this.tabIndex
13+
connectAccountsTabDisabled=this.connectAccountsTabDisabled
1314
changeTab=this.changeTab
1415
selectedProvider=this.selectedProvider
16+
selectedProviderIsRedirectService=this.selectedProviderIsRedirectService
1517
selectedAccount=this.selectedAccount
1618
connectNewProviderAccount=this.connectNewProviderAccount
1719
acceptProviderTerms=this.acceptProviderTerms

translations/en-us.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,9 @@ addons:
321321
registering-false: '{provider} content will not be registered.'
322322
file-versions-false: '{provider} files can be viewed/downloaded outside OSF only. Version history is not supported.'
323323
redirect:
324-
disclaimer: 'This add-on connects your OSF project to an external service. Use of this service is bound by its terms and conditions. The OSF is not responsible for the service. Danger ahead or something.'
324+
disclaimer: "Clicking the button below will redirect you outside of OSF. You will need to follow that service's permissions to continue."
325+
pop-up-tooltip: 'Tip: If the page does not open, try disabling your pop-up blocker.'
326+
pop-up-error: 'Unable to open pop-up window. Please disable your pop-up blocker and try again.'
325327
accountSelect:
326328
heading: 'Log in to {providerName} or select an account'
327329
no-accounts: 'No accounts available'

0 commit comments

Comments
 (0)