Skip to content
This repository was archived by the owner on Mar 1, 2024. It is now read-only.

Commit 0dcd44b

Browse files
committed
feat(fire): post user details to guestbook if logged in
1 parent 3304ab3 commit 0dcd44b

File tree

4 files changed

+31
-14
lines changed

4 files changed

+31
-14
lines changed

apps/fire/src/app/fire/components/message-form/message-form.component.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,36 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
55
template: `
66
<div class="my-3 py-3">
77
<div class="input-group input-xl">
8+
<div class="input-group-prepend" *ngIf="user">
9+
<button class="btn btn-secondary">
10+
<ui-avatar [image]="user.avatar" size="sm"></ui-avatar>
11+
</button>
12+
</div>
813
<input type="text"
914
class="form-control"
1015
placeholder="Type a message 🚀 "
1116
[(ngModel)]="message"
1217
(keydown.enter)="sendMessage()">
13-
<div class="input-group-append">
14-
<button type="button"
15-
class="btn btn-secondary"
16-
(click)="sendMessage()">
17-
<i class="fe fe-send"></i>
18-
</button>
19-
</div>
18+
<div class="input-group-append">
19+
<button type="button"
20+
class="btn btn-secondary"
21+
(click)="sendMessage()">
22+
<i class="fe fe-send"></i>
23+
</button>
24+
</div>
2025
</div>
2126
</div>
2227
`,
2328
styles: []
2429
})
2530
export class MessageFormComponent {
2631
@Input() message = ''
32+
@Input() user = ''
2733
@Output() action = new EventEmitter()
2834

2935
sendMessage() {
30-
this.action.emit({ type: 'ADD', payload: this.message })
36+
const payload = { message: this.message, user: this.user }
37+
this.action.emit({ type: 'ADD', payload })
3138
this.message = ''
3239
}
3340
}

apps/fire/src/app/fire/components/message-list/message-list.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
1212
<div class="list-group-item list-group-ixtem-action mb-3"
1313
*ngFor="let message of messages">
1414
15-
<app-message [message]="message" (action)="handleAction($event)"></app-message>
15+
<app-message [user]="user" [message]="message" (action)="handleAction($event)"></app-message>
1616
1717
</div>
1818
</div>
@@ -21,6 +21,7 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
2121
})
2222
export class MessageListComponent {
2323
@Input() public messages = [];
24+
@Input() public user;
2425
@Output() public action = new EventEmitter();
2526

2627
handleAction($event) {

apps/fire/src/app/fire/components/message/message.component.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,16 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
44
selector: 'app-message',
55
template: `
66
<div>
7+
<ui-avatar class="float-left ml-0 mr-3"
8+
*ngIf="message.user" [image]="message.user.avatar" size="sm"></ui-avatar>
9+
<ui-avatar class="float-left ml-0 mr-3"
10+
*ngIf="!message.user" text="?" size="sm"></ui-avatar>
711
<div class="float-right">
812
<span class="text-muted my-4">
913
{{message.created | date: 'short' }}
1014
</span>
1115
<a class="text-danger ml-2"
16+
*ngIf="user && message.user && message.user.id === user.id"
1217
(click)="deleteMessage(message.id)">
1318
<i class="fa fa-trash"></i>
1419
</a>
@@ -20,6 +25,7 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2025
})
2126
export class MessageComponent {
2227
@Input() public message;
28+
@Input() public user;
2329
@Output() action = new EventEmitter()
2430
deleteMessage(id) {
2531
this.action.emit({ type: 'DELETE', payload: id })

apps/fire/src/app/fire/containers/guestbook/guestbook.component.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Component } from '@angular/core';
2+
import { AuthService } from '../../../auth/services/auth.service';
23
import { FireService } from '../../services/fire.service';
34

45
@Component({
@@ -11,23 +12,25 @@ import { FireService } from '../../services/fire.service';
1112
1213
<app-message-form
1314
[message]="message"
15+
[user]="auth.user$ | async"
1416
(action)="handleAction($event)">
1517
</app-message-form>
1618
1719
<app-message-list
1820
[messages]="fire.collection$ | async"
21+
[user]="auth.user$ | async"
1922
(action)="handleAction($event)">
2023
</app-message-list>
2124
`,
2225
})
2326
export class GuestbookComponent {
24-
2527
public message = ''
2628

27-
constructor(public fire: FireService) {}
29+
constructor(public auth: AuthService, public fire: FireService) {}
2830

29-
addMessage(message: string) {
30-
this.fire.upsert({ message })
31+
addMessage({ message, user }) {
32+
console.log('addMessage', message, user)
33+
this.fire.upsert({ message, user })
3134
.subscribe(() => console.log('Item added'))
3235
}
3336

@@ -36,7 +39,7 @@ export class GuestbookComponent {
3639
.subscribe(() => console.log('Item deleted'))
3740
}
3841

39-
handleAction({ type, payload = ''}) {
42+
handleAction({ type, payload }) {
4043
switch (type) {
4144
case 'ADD':
4245
return this.addMessage(payload)

0 commit comments

Comments
 (0)