Candid implementation of #84
This commit is contained in:
parent
fe897318d7
commit
45fff1b064
|
@ -238,6 +238,9 @@ export class CreateStatusComponent implements OnInit, OnDestroy {
|
||||||
return this.sendStatus(acc, this.status, visibility, this.title, status, mediaAttachments);
|
return this.sendStatus(acc, this.status, visibility, this.title, status, mediaAttachments);
|
||||||
})
|
})
|
||||||
.then((res: Status) => {
|
.then((res: Status) => {
|
||||||
|
if (this.statusReplyingToWrapper) {
|
||||||
|
this.notificationService.newStatusPosted(this.statusReplyingToWrapper.status.id, new StatusWrapper(res, acc));
|
||||||
|
}
|
||||||
this.title = '';
|
this.title = '';
|
||||||
this.status = '';
|
this.status = '';
|
||||||
this.onClose.emit();
|
this.onClose.emit();
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import { Component, OnInit, Input, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';
|
import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, ViewChildren, QueryList } from '@angular/core';
|
||||||
import { HttpErrorResponse } from '@angular/common/http';
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
|
||||||
import { MastodonService } from '../../../services/mastodon.service';
|
import { MastodonService } from '../../../services/mastodon.service';
|
||||||
import { ToolsService, OpenThreadEvent } from '../../../services/tools.service';
|
import { ToolsService, OpenThreadEvent } from '../../../services/tools.service';
|
||||||
import { Results, Context, Status } from '../../../services/models/mastodon.interfaces';
|
import { Results, Context, Status } from '../../../services/models/mastodon.interfaces';
|
||||||
import { NotificationService } from '../../../services/notification.service';
|
import { NotificationService, NewReplyData } from '../../../services/notification.service';
|
||||||
import { AccountInfo } from '../../../states/accounts.state';
|
import { AccountInfo } from '../../../states/accounts.state';
|
||||||
import { StatusWrapper } from '../../../models/common.model';
|
import { StatusWrapper } from '../../../models/common.model';
|
||||||
import { StatusComponent } from '../status/status.component';
|
import { StatusComponent } from '../status/status.component';
|
||||||
|
@ -14,7 +15,7 @@ import { StatusComponent } from '../status/status.component';
|
||||||
templateUrl: '../stream-statuses/stream-statuses.component.html',
|
templateUrl: '../stream-statuses/stream-statuses.component.html',
|
||||||
styleUrls: ['../stream-statuses/stream-statuses.component.scss']
|
styleUrls: ['../stream-statuses/stream-statuses.component.scss']
|
||||||
})
|
})
|
||||||
export class ThreadComponent implements OnInit {
|
export class ThreadComponent implements OnInit, OnDestroy {
|
||||||
statuses: StatusWrapper[] = [];
|
statuses: StatusWrapper[] = [];
|
||||||
displayError: string;
|
displayError: string;
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
|
@ -37,12 +38,43 @@ export class ThreadComponent implements OnInit {
|
||||||
|
|
||||||
@ViewChildren(StatusComponent) statusChildren: QueryList<StatusComponent>;
|
@ViewChildren(StatusComponent) statusChildren: QueryList<StatusComponent>;
|
||||||
|
|
||||||
|
private newPostSub: Subscription;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly notificationService: NotificationService,
|
private readonly notificationService: NotificationService,
|
||||||
private readonly toolsService: ToolsService,
|
private readonly toolsService: ToolsService,
|
||||||
private readonly mastodonService: MastodonService) { }
|
private readonly mastodonService: MastodonService) { }
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
this.newPostSub = this.notificationService.newRespondPostedStream.subscribe((replyData: NewReplyData) => {
|
||||||
|
if(replyData){
|
||||||
|
const repondingStatus = this.statuses.find(x => x.status.id === replyData.uiStatusId);
|
||||||
|
const responseStatus = replyData.response;
|
||||||
|
if(repondingStatus && this.statuses[0]){
|
||||||
|
this.statuses.push(responseStatus);
|
||||||
|
|
||||||
|
// const uiProvider = this.statuses[0].provider;
|
||||||
|
// if(uiProvider.id === responseStatus.provider.id){
|
||||||
|
|
||||||
|
// } else {
|
||||||
|
// this.toolsService.getStatusUsableByAccount(uiProvider, responseStatus)
|
||||||
|
// .then((status: Status) => {
|
||||||
|
// this.statuses.push(new StatusWrapper(status, uiProvider));
|
||||||
|
// })
|
||||||
|
// .catch((err) => {
|
||||||
|
// this.notificationService.notifyHttpError(err);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
// this.getThread(this.statuses[0].provider, this.lastThreadEvent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy(): void {
|
||||||
|
if (this.newPostSub) {
|
||||||
|
this.newPostSub.unsubscribe();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private getThread(openThreadEvent: OpenThreadEvent) {
|
private getThread(openThreadEvent: OpenThreadEvent) {
|
||||||
|
@ -126,7 +158,7 @@ export class ThreadComponent implements OnInit {
|
||||||
this.browseThreadEvent.next(openThreadEvent);
|
this.browseThreadEvent.next(openThreadEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
removeCw(){
|
removeCw() {
|
||||||
const statuses = this.statusChildren.toArray();
|
const statuses = this.statusChildren.toArray();
|
||||||
statuses.forEach(x => {
|
statuses.forEach(x => {
|
||||||
x.removeContentWarning();
|
x.removeContentWarning();
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
import { HttpErrorResponse } from '@angular/common/http';
|
import { HttpErrorResponse } from '@angular/common/http';
|
||||||
|
import { StatusWrapper } from '../models/common.model';
|
||||||
|
import { Status } from './models/mastodon.interfaces';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class NotificationService {
|
export class NotificationService {
|
||||||
public notifactionStream = new Subject<NotificatioData>();
|
public notifactionStream = new Subject<NotificatioData>();
|
||||||
|
public newRespondPostedStream = new Subject<NewReplyData>();
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
}
|
}
|
||||||
|
@ -22,6 +25,12 @@ export class NotificationService {
|
||||||
} catch(err){}
|
} catch(err){}
|
||||||
this.notify(message, true);
|
this.notify(message, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public newStatusPosted(status: StatusWrapper){
|
||||||
|
public newStatusPosted(uiStatusRepliedToId: string, response: StatusWrapper){
|
||||||
|
const notification = new NewReplyData(uiStatusRepliedToId, response);
|
||||||
|
this.newRespondPostedStream.next(notification);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class NotificatioData {
|
export class NotificatioData {
|
||||||
|
@ -34,3 +43,9 @@ export class NotificatioData {
|
||||||
this.id = `${message}${new Date().getTime()}`;
|
this.id = `${message}${new Date().getTime()}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class NewReplyData {
|
||||||
|
constructor(public uiStatusId: string, public response: StatusWrapper){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue