Skip to content

Commit 3969a53

Browse files
Fix bug button Subscribe to Manage Susbcription - 4195
1 parent f986a2f commit 3969a53

3 files changed

Lines changed: 61 additions & 34 deletions

File tree

cypress/e2e/collection-statistics.cy.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,11 @@ import { REGEX_MATCH_NON_EMPTY_TEXT } from 'cypress/support/e2e';
22
import { testA11y } from 'cypress/support/utils';
33

44
describe('Collection Statistics Page', () => {
5-
const COLLECTIONSTATISTICSPAGE = `/statistics/collections/${Cypress.env('DSPACE_TEST_COLLECTION')}`;
5+
const COLLECTIONSTATISTICSPAGE = '/statistics/collections/'.concat(Cypress.env('DSPACE_TEST_COLLECTION'));
66

77
it('should load if you click on "Statistics" from a Collection page', () => {
8-
cy.visit(`/collections/${Cypress.env('DSPACE_TEST_COLLECTION')}`);
9-
// Ahora buscamos el enlace dentro de ds-dso-edit-menu, no ds-navbar
10-
cy.get(
11-
'ds-dso-edit-menu ds-link-menu-item a[data-test="link-menu-item.menu.section.statistics"]',
12-
)
13-
.should('be.visible')
14-
.click();
8+
cy.visit('/collections/'.concat(Cypress.env('DSPACE_TEST_COLLECTION')));
9+
cy.get('ds-navbar ds-link-menu-item a[data-test="link-menu-item.menu.section.statistics"]').click();
1510
cy.location('pathname').should('eq', COLLECTIONSTATISTICSPAGE);
1611
});
1712

cypress/e2e/community-statistics.cy.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,11 @@ import { REGEX_MATCH_NON_EMPTY_TEXT } from 'cypress/support/e2e';
22
import { testA11y } from 'cypress/support/utils';
33

44
describe('Community Statistics Page', () => {
5-
const COMMUNITYSTATISTICSPAGE = `/statistics/communities/${Cypress.env('DSPACE_TEST_COMMUNITY')}`;
5+
const COMMUNITYSTATISTICSPAGE = '/statistics/communities/'.concat(Cypress.env('DSPACE_TEST_COMMUNITY'));
66

77
it('should load if you click on "Statistics" from a Community page', () => {
8-
cy.visit(`/communities/${Cypress.env('DSPACE_TEST_COMMUNITY')}`);
9-
cy.get(
10-
'ds-dso-edit-menu ds-link-menu-item a[data-test="link-menu-item.menu.section.statistics"]',
11-
)
12-
.should('be.visible')
13-
.click();
8+
cy.visit('/communities/'.concat(Cypress.env('DSPACE_TEST_COMMUNITY')));
9+
cy.get('ds-navbar ds-link-menu-item a[data-test="link-menu-item.menu.section.statistics"]').click();
1410
cy.location('pathname').should('eq', COMMUNITYSTATISTICSPAGE);
1511
});
1612

src/app/shared/menu/providers/comcol-subscribe.menu.ts

Lines changed: 55 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,23 @@ import { AuthorizationDataService } from '@dspace/core/data/feature-authorizatio
1010
import { FeatureID } from '@dspace/core/data/feature-authorization/feature-id';
1111
import { DSpaceObject } from '@dspace/core/shared/dspace-object.model';
1212
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
13+
import { TranslateService } from '@ngx-translate/core';
1314
import {
1415
combineLatest,
1516
Observable,
17+
of,
18+
Subject,
1619
} from 'rxjs';
17-
import { map } from 'rxjs/operators';
20+
import {
21+
first,
22+
map,
23+
startWith,
24+
switchMap,
25+
} from 'rxjs/operators';
26+
import { AuthService } from 'src/app/core/auth/auth.service';
1827

1928
import { SubscriptionModalComponent } from '../../subscriptions/subscription-modal/subscription-modal.component';
29+
import { SubscriptionsDataService } from '../../subscriptions/subscriptions-data.service';
2030
import { OnClickMenuItemModel } from '../menu-item/models/onclick.model';
2131
import { MenuItemType } from '../menu-item-type.model';
2232
import { PartialMenuSection } from '../menu-provider.model';
@@ -27,33 +37,59 @@ import { DSpaceObjectPageMenuProvider } from './helper-providers/dso.menu';
2737
*/
2838
@Injectable()
2939
export class SubscribeMenuProvider extends DSpaceObjectPageMenuProvider {
40+
private refresh$ = new Subject<void>();
41+
3042
constructor(
43+
protected authService: AuthService,
3144
protected authorizationService: AuthorizationDataService,
45+
protected subscriptionService: SubscriptionsDataService,
3246
protected modalService: NgbModal,
47+
protected translateService: TranslateService,
3348
) {
3449
super();
3550
}
3651

3752
public getSectionsForContext(dso: DSpaceObject): Observable<PartialMenuSection[]> {
38-
return combineLatest([
39-
this.authorizationService.isAuthorized(FeatureID.CanSubscribe, dso.self),
40-
]).pipe(
41-
map(([canSubscribe]) => {
42-
return [
43-
{
44-
visible: canSubscribe,
45-
model: {
46-
type: MenuItemType.ONCLICK,
47-
text: 'subscriptions.tooltip',
48-
function: () => {
49-
const modalRef = this.modalService.open(SubscriptionModalComponent);
50-
modalRef.componentInstance.dso = dso;
51-
},
52-
} as OnClickMenuItemModel,
53-
icon: 'bell',
54-
},
55-
] as PartialMenuSection[];
53+
const realSections$ = this.refresh$.pipe(
54+
startWith(undefined),
55+
switchMap(() =>
56+
combineLatest([
57+
this.authorizationService.isAuthorized(FeatureID.CanSubscribe, dso.self),
58+
this.authService.getAuthenticatedUserFromStore().pipe(first()),
59+
]),
60+
),
61+
switchMap(([canSubscribe, user]) => {
62+
if (!canSubscribe || !user) {
63+
return of([]);
64+
}
65+
const openModal = () => {
66+
const modalRef = this.modalService.open(SubscriptionModalComponent);
67+
modalRef.componentInstance.dso = dso;
68+
modalRef.componentInstance.updated.subscribe(() => this.refresh$.next());
69+
};
70+
return this.subscriptionService.getSubscriptionsByPersonDSO(user.id, dso.uuid).pipe(
71+
map((rd) => {
72+
const subscription = rd.payload?.page?.[0];
73+
const key = subscription
74+
? 'subscriptions.manage'
75+
: 'subscriptions.tooltip';
76+
return [
77+
{
78+
visible: true,
79+
model: {
80+
type: MenuItemType.ONCLICK,
81+
text: key,
82+
function: openModal,
83+
} as OnClickMenuItemModel,
84+
icon: 'bell',
85+
} as PartialMenuSection,
86+
];
87+
}),
88+
);
5689
}),
5790
);
91+
return realSections$.pipe(
92+
startWith([] as PartialMenuSection[]),
93+
);
5894
}
5995
}

0 commit comments

Comments
 (0)