Skip to content

Commit ef97181

Browse files
committed
Invite-link component
1 parent f52e2e2 commit ef97181

File tree

7 files changed

+84
-15
lines changed

7 files changed

+84
-15
lines changed

frontend/src/app/app.module.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import { AssistantsComponent } from './shared/components/menu/assistants/assista
4848
import { UserService } from './shared/services/user.service';
4949
import { LoginComponent } from './shared/components/login/login.component';
5050
import { PopupComponent } from './shared/components/popup/popup.component';
51+
import { InviteLinkComponent } from './invite/invite-link/invite-link.component';
5152

5253
@NgModule({
5354
declarations: [
@@ -66,7 +67,8 @@ import { PopupComponent } from './shared/components/popup/popup.component';
6667
InviteComponent,
6768
AssistantsComponent,
6869
LoginComponent,
69-
PopupComponent
70+
PopupComponent,
71+
InviteLinkComponent
7072
],
7173
imports: [
7274
FormsModule,

frontend/src/app/dashboard/dashboard.component.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Component, OnInit, ViewChild, TemplateRef } from '@angular/core';
44
import { Router } from '@angular/router';
55
import { Room } from '../shared/models/room-model';
66
import { MatSnackBar, MatDialogRef, MatDialog } from '@angular/material';
7+
import { InviteLinkComponent } from '../invite/invite-link/invite-link.component';
78

89
@Component({
910
selector: 'app-dashboard',
@@ -53,13 +54,13 @@ export class DashboardComponent implements OnInit {
5354
}
5455

5556
getInviteURL(roomName: string, role:string){
56-
this.roomSrv.getRoomCode(roomName, role).subscribe(
57-
code => {
58-
let url:string = window.location.origin + '/#/invite/' + code;
59-
this.urlSnackBar.open(url, 'Close');
60-
},
61-
error => console.error(error)
62-
);
57+
this.urlSnackBar.openFromComponent(InviteLinkComponent, {
58+
data: {
59+
roomName: roomName,
60+
role: role,
61+
dismiss: () => {this.urlSnackBar.dismiss()}
62+
}
63+
});
6364
}
6465

6566
openAddRoomDialog() {

frontend/src/app/invite/invite-link/invite-link.component.css

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<span>{{url}}</span>
2+
<button mat-icon-button color="warn" (click)="dismiss()">
3+
<mat-icon>close</mat-icon>
4+
</button>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2+
3+
import { InviteLinkComponent } from './invite-link.component';
4+
5+
describe('InviteLinkComponent', () => {
6+
let component: InviteLinkComponent;
7+
let fixture: ComponentFixture<InviteLinkComponent>;
8+
9+
beforeEach(async(() => {
10+
TestBed.configureTestingModule({
11+
declarations: [ InviteLinkComponent ]
12+
})
13+
.compileComponents();
14+
}));
15+
16+
beforeEach(() => {
17+
fixture = TestBed.createComponent(InviteLinkComponent);
18+
component = fixture.componentInstance;
19+
fixture.detectChanges();
20+
});
21+
22+
it('should create', () => {
23+
expect(component).toBeTruthy();
24+
});
25+
});
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { RoomService } from './../../shared/services/room.service';
2+
import { Component, OnInit, Inject } from '@angular/core';
3+
import { MAT_SNACK_BAR_DATA } from '@angular/material';
4+
5+
@Component({
6+
selector: 'app-invite-link',
7+
templateUrl: './invite-link.component.html',
8+
styleUrls: ['./invite-link.component.css']
9+
})
10+
export class InviteLinkComponent implements OnInit {
11+
12+
url: string;
13+
14+
constructor(
15+
@Inject(MAT_SNACK_BAR_DATA) public data: any,
16+
private roomSrv: RoomService
17+
) { }
18+
19+
ngOnInit() {
20+
this.getLink();
21+
}
22+
23+
private getLink() {
24+
this.roomSrv.getRoomCode(this.data.roomName, this.data.role).subscribe(
25+
code => {
26+
this.url = window.location.origin + '/#/invite/' + code;
27+
},
28+
error => console.error(error)
29+
);
30+
}
31+
32+
private dismiss() {
33+
this.data.dismiss();
34+
}
35+
36+
}

frontend/src/app/shared/components/toolbar/toolbar.component.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { UserModel } from '../../models/user-model';
55
import { ApiService } from '../../services/api.service';
66
import { OvSettings } from '../../models/ov-settings';
77
import { MatSnackBar } from '@angular/material';
8+
import { InviteLinkComponent } from 'src/app/invite/invite-link/invite-link.component';
89

910
@Component({
1011
selector: 'app-toolbar',
@@ -94,13 +95,13 @@ export class ToolbarComponent implements OnInit {
9495
}
9596

9697
getInviteURL(role:string){
97-
this.roomSrv.getRoomCode(this.mySessionId, role).subscribe(
98-
code => {
99-
let url:string = window.location.origin + '/#/invite/' + code;
100-
this.urlSnackBar.open(url, 'Close');
101-
},
102-
error => console.error(error)
103-
);
98+
this.urlSnackBar.openFromComponent(InviteLinkComponent, {
99+
data: {
100+
roomName: this.mySessionId,
101+
role: role,
102+
dismiss: () => {this.urlSnackBar.dismiss()}
103+
}
104+
});
104105
}
105106

106107
toggleFullscreen() {

0 commit comments

Comments
 (0)