File
Implements
Index
Properties
|
|
Methods
|
|
Inputs
|
|
Outputs
|
|
fetchForumIdReq
|
Type : any
|
|
Outputs
forumData
|
Type : EventEmitter
|
|
Methods
fetchForumIds
|
fetchForumIds()
|
|
|
Async
openDiscussionForum
|
openDiscussionForum()
|
|
|
isForumEnabled
|
Default value : false
|
|
import { Component, Inject, Input, OnInit, Output, EventEmitter } from '@angular/core';
import { Router } from '@angular/router';
import { RouterLinks } from '@app/app/app.constant';
import { AppGlobalService, AppHeaderService, CommonUtilService, Environment, InteractSubtype, PageId, TelemetryGeneratorService } from '@app/services';
import { DiscussionTelemetryService } from '@app/services/discussion/discussion-telemetry.service';
import { DiscussionService, InteractType } from '@project-sunbird/sunbird-sdk';
@Component({
selector: "accessDiscussion",
templateUrl: './access-discussion.component.html',
styleUrls: ['./access-discussion.component.scss'],
})
export class AccessDiscussionComponent implements OnInit {
@Input() fetchForumIdReq: any;
@Input() createUserReq: any;
@Output() forumData = new EventEmitter();
forumDetails;
isForumEnabled = false;
constructor(
@Inject('DISCUSSION_SERVICE') private discussionService: DiscussionService,
private router: Router,
private commonUtilService: CommonUtilService,
private discussionTelemetryService: DiscussionTelemetryService,
private headerService: AppHeaderService,
private telemetryGeneratorService: TelemetryGeneratorService,
private appGlobalService: AppGlobalService
) {}
ngOnInit() {
if(this.appGlobalService.isForumEnabled) {
this.isForumEnabled = true;
}
this.fetchForumIds();
}
fetchForumIds() {
this.forumDetails = '';
this.discussionService.getForumIds(this.fetchForumIdReq).toPromise().then(forumDetails => {
if (forumDetails.result.length) {
this.forumDetails = forumDetails.result[0];
this.forumData.emit(this.forumDetails);
this.isForumEnabled = true;
this.appGlobalService.isForumEnabled = true;
} else {
this.isForumEnabled = false;
this.appGlobalService.isForumEnabled = false;
}
}).catch(error => {
console.log('error fetchForumIds', error);
});
}
async openDiscussionForum() {
this.telemetryGeneratorService.generateInteractTelemetry(
InteractType.TOUCH,
InteractSubtype.FORUM_ICON_CLICKED,
Environment.DISCUSSION,
PageId.GROUP_DETAIL
);
this.headerService.hideHeader();
this.discussionTelemetryService.contextCdata = [
{
id: this.fetchForumIdReq.identifier[0],
type: this.fetchForumIdReq.type
}
];
this.discussionService.createUser(this.createUserReq).subscribe((response) => {
const userId = response.result.userId.uid
const result = [this.forumDetails.cid];
this.router.navigate([`/${RouterLinks.DISCUSSION}`], {
queryParams: {
categories: JSON.stringify({ result }),
userId: userId
}
});
}, error => {
console.log('err in discussionService.createUser', error)
this.commonUtilService.showToast('SOMETHING_WENT_WRONG')
});
}
}
<span *ngIf="isForumEnabled" role="button" aria-label="Discussions" (click)="openDiscussionForum()">
<ion-icon src="assets/imgs/ic_chat.svg" class="card-icons" *ngIf="fetchForumIdReq.type==='group' && isForumEnabled"></ion-icon>
</span>
<button (click)="openDiscussionForum()" *ngIf="(fetchForumIdReq.type==='course' || fetchForumIdReq.type==='batch') && isForumEnabled"
class="card-button" slot="icon-only">
<ion-icon src="assets/imgs/ic_chat.svg" class="card-icons"></ion-icon>
<p class="card-text">{{'FORUM' | translate}}</p>
</button>
@import "src/assets/styles/_variables.scss";
.card-icons{
margin-right: 10px;
position: relative;
top: 0.125rem;
}
.card-text{
height: 1.125rem;
width: 3.938rem;
color: map-get($colors, granite_gray);
font-family: "Noto Sans", sans-serif;
font-size: 0.813rem !important;
line-height: 1.25rem;
text-align: center;
}
.card-button{
background-color: transparent !important;
outline: none;
font-size: 1.875rem;
}
Legend
Html element with directive