File

src/app/components/access-discussion/access-discussion.component.ts

Implements

OnInit

Metadata

Index

Properties
Methods
Inputs
Outputs

Constructor

constructor(discussionService: DiscussionService, router: Router, commonUtilService: CommonUtilService, discussionTelemetryService: DiscussionTelemetryService, headerService: AppHeaderService, telemetryGeneratorService: TelemetryGeneratorService, appGlobalService: AppGlobalService)
Parameters :
Name Type Optional
discussionService DiscussionService No
router Router No
commonUtilService CommonUtilService No
discussionTelemetryService DiscussionTelemetryService No
headerService AppHeaderService No
telemetryGeneratorService TelemetryGeneratorService No
appGlobalService AppGlobalService No

Inputs

createUserReq
Type : any
fetchForumIdReq
Type : any

Outputs

forumData
Type : EventEmitter

Methods

fetchForumIds
fetchForumIds()
Returns : void
ngOnInit
ngOnInit()
Returns : void
Async openDiscussionForum
openDiscussionForum()
Returns : any

Properties

forumDetails
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>

./access-discussion.component.scss

@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
Component
Html element with directive

results matching ""

    No results matching ""