opening account from status mention is working
This commit is contained in:
parent
d979abc83e
commit
fa4f1f235f
|
@ -1,9 +1,10 @@
|
|||
import { Component, OnInit, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';
|
||||
import { Store } from '@ngxs/store';
|
||||
// import { Store } from '@ngxs/store';
|
||||
import { MastodonService, VisibilityEnum } from '../../../../services/mastodon.service';
|
||||
import { AccountInfo } from '../../../../states/accounts.state';
|
||||
// import { AccountInfo } from '../../../../states/accounts.state';
|
||||
import { StatusWrapper } from '../../stream.component';
|
||||
import { Status } from '../../../../services/models/mastodon.interfaces';
|
||||
import { ToolsService } from '../../../../services/tools.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-reply-to-status',
|
||||
|
@ -22,7 +23,8 @@ export class ReplyToStatusComponent implements OnInit {
|
|||
privacyList: string[] = ['Public', 'Unlisted', 'Follows-only', 'DM'];
|
||||
|
||||
constructor(
|
||||
private readonly store: Store,
|
||||
// private readonly store: Store,
|
||||
private readonly toolsService: ToolsService,
|
||||
private readonly mastodonService: MastodonService) { }
|
||||
|
||||
ngOnInit() {
|
||||
|
@ -39,8 +41,7 @@ export class ReplyToStatusComponent implements OnInit {
|
|||
}
|
||||
|
||||
onSubmit(): boolean {
|
||||
const accounts = this.getRegisteredAccounts();
|
||||
const selectedAccounts = accounts.filter(x => x.isSelected);
|
||||
const selectedAccounts = this.toolsService.getSelectedAccounts();
|
||||
|
||||
let visibility: VisibilityEnum = VisibilityEnum.Unknown;
|
||||
switch (this.selectedPrivacy) {
|
||||
|
@ -72,10 +73,10 @@ export class ReplyToStatusComponent implements OnInit {
|
|||
return false;
|
||||
}
|
||||
|
||||
private getRegisteredAccounts(): AccountInfo[] {
|
||||
var regAccounts = <AccountInfo[]>this.store.snapshot().registeredaccounts.accounts;
|
||||
return regAccounts;
|
||||
}
|
||||
// private getRegisteredAccounts(): AccountInfo[] {
|
||||
// var regAccounts = <AccountInfo[]>this.store.snapshot().registeredaccounts.accounts;
|
||||
// return regAccounts;
|
||||
// }
|
||||
|
||||
onCtrlEnter(): boolean {
|
||||
this.onSubmit();
|
||||
|
|
|
@ -17,12 +17,10 @@ export class StatusComponent implements OnInit {
|
|||
hasAttachments: boolean;
|
||||
replyingToStatus: boolean;
|
||||
|
||||
@Output() browseAccount = new EventEmitter<Account>();
|
||||
@Output() browseAccount = new EventEmitter<string>();
|
||||
@Output() browseHashtag = new EventEmitter<string>();
|
||||
@Output() browseThread = new EventEmitter<string>();
|
||||
|
||||
|
||||
|
||||
private _statusWrapper: StatusWrapper;
|
||||
status: Status;
|
||||
@Input('statusWrapper')
|
||||
|
@ -74,7 +72,11 @@ export class StatusComponent implements OnInit {
|
|||
// }
|
||||
|
||||
openAccount(account: Account): boolean {
|
||||
this.browseAccount.next(account);
|
||||
let accountName = account.acct;
|
||||
if(!accountName.includes('@'))
|
||||
accountName += `@${account.url.replace('https://', '').split('/')[0]}`;
|
||||
|
||||
this.browseAccount.next(accountName);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -114,10 +116,12 @@ export class StatusComponent implements OnInit {
|
|||
|
||||
accountSelected(accountName: string): void {
|
||||
console.warn(`status comp: accountSelected ${accountName}`);
|
||||
this.browseAccount.next(accountName);
|
||||
}
|
||||
|
||||
hashtagSelected(hashtag: string): void {
|
||||
console.warn(`status comp: hashtagSelected ${hashtag}`);
|
||||
this.browseHashtag.next(hashtag);
|
||||
}
|
||||
|
||||
textSelected(): void {
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<!-- <div class="stream-overlay__title">
|
||||
Account
|
||||
</div> -->
|
||||
<app-user-profile *ngIf="browseAccount" [currentAccount]="browseAccount"></app-user-profile>
|
||||
<app-user-profile *ngIf="account" [currentAccount]="account"></app-user-profile>
|
||||
<app-hashtag *ngIf="browseHashtag"></app-hashtag>
|
||||
<app-thread *ngIf="browseThread"></app-thread>
|
||||
</div>
|
|
@ -1,5 +1,7 @@
|
|||
import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';
|
||||
import { Account } from "../../../services/models/mastodon.interfaces";
|
||||
import { Account, Results } from "../../../services/models/mastodon.interfaces";
|
||||
import { MastodonService } from '../../../services/mastodon.service';
|
||||
import { ToolsService } from '../../../services/tools.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-stream-overlay',
|
||||
|
@ -7,37 +9,51 @@ import { Account } from "../../../services/models/mastodon.interfaces";
|
|||
styleUrls: ['./stream-overlay.component.scss']
|
||||
})
|
||||
export class StreamOverlayComponent implements OnInit {
|
||||
private account: Account;
|
||||
account: Account;
|
||||
private accountName: string;
|
||||
|
||||
private thread: string;
|
||||
private hashtag: string;
|
||||
|
||||
error: string;
|
||||
|
||||
@Output() closeOverlay = new EventEmitter();
|
||||
|
||||
@Input('browseAccount')
|
||||
set browseAccount(account: Account) {
|
||||
this.account = account;
|
||||
}
|
||||
get browseAccount(): Account{
|
||||
return this.account;
|
||||
}
|
||||
@Input('browseAccount')
|
||||
set browseAccount(accountName: string) {
|
||||
this.accountName = accountName;
|
||||
this.loadAccount(accountName);
|
||||
|
||||
@Input('browseThread')
|
||||
set browseThread(thread: string) {
|
||||
this.thread = thread;
|
||||
// let selectedAccounts = this.toolsService.getSelectedAccounts();
|
||||
// if(selectedAccounts.length === 0)
|
||||
// this.error = 'no user selected';
|
||||
|
||||
|
||||
// this.account = account;
|
||||
}
|
||||
get browseThread(): string{
|
||||
// get browseAccount(): string{
|
||||
// return this.account;
|
||||
// }
|
||||
|
||||
@Input('browseThread')
|
||||
set browseThread(thread: string) {
|
||||
this.thread = thread;
|
||||
}
|
||||
get browseThread(): string {
|
||||
return this.thread;
|
||||
}
|
||||
|
||||
@Input('browseHashtag')
|
||||
@Input('browseHashtag')
|
||||
set browseHashtag(hashtag: string) {
|
||||
this.hashtag = hashtag;
|
||||
this.hashtag = hashtag;
|
||||
}
|
||||
get browseHashtag(): string{
|
||||
get browseHashtag(): string {
|
||||
return this.hashtag;
|
||||
}
|
||||
|
||||
constructor() { }
|
||||
constructor(
|
||||
private readonly toolsService: ToolsService,
|
||||
private readonly mastodonService: MastodonService) { }
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
@ -47,4 +63,17 @@ export class StreamOverlayComponent implements OnInit {
|
|||
return false;
|
||||
}
|
||||
|
||||
loadAccount(accountName: string): void {
|
||||
let selectedAccounts = this.toolsService.getSelectedAccounts();
|
||||
|
||||
if (selectedAccounts.length === 0) {
|
||||
this.error = 'no user selected';
|
||||
return;
|
||||
}
|
||||
|
||||
this.mastodonService.search(selectedAccounts[0], accountName)
|
||||
.then((result: Results) => {
|
||||
this.account = result.accounts[0];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ export class StreamComponent implements OnInit {
|
|||
private bufferWasCleared: boolean;
|
||||
|
||||
overlayActive: boolean;
|
||||
overlayAccountToBrowse: Account;
|
||||
overlayAccountToBrowse: string;
|
||||
|
||||
@Input()
|
||||
set streamElement(streamElement: StreamElement) {
|
||||
|
@ -50,17 +50,17 @@ export class StreamComponent implements OnInit {
|
|||
ngOnInit() {
|
||||
}
|
||||
|
||||
browseAccount(account: Account): void {
|
||||
browseAccount(account: string): void {
|
||||
this.overlayAccountToBrowse = account;
|
||||
this.overlayActive = true;
|
||||
}
|
||||
|
||||
browseHashtag(hashtag: any): void {
|
||||
browseHashtag(hashtag: string): void {
|
||||
console.warn('browseHashtag');
|
||||
console.warn(hashtag);
|
||||
}
|
||||
|
||||
browseThread(thread: any): void {
|
||||
browseThread(thread: string): void {
|
||||
console.warn('browseThread');
|
||||
console.warn(thread);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
import { TestBed, inject } from '@angular/core/testing';
|
||||
|
||||
import { ToolsService } from './tools.service';
|
||||
|
||||
describe('ToolsService', () => {
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({
|
||||
providers: [ToolsService]
|
||||
});
|
||||
});
|
||||
|
||||
it('should be created', inject([ToolsService], (service: ToolsService) => {
|
||||
expect(service).toBeTruthy();
|
||||
}));
|
||||
});
|
|
@ -0,0 +1,20 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
import { Store } from '@ngxs/store';
|
||||
|
||||
import { AccountInfo } from '../states/accounts.state';
|
||||
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class ToolsService {
|
||||
|
||||
constructor( private readonly store: Store) { }
|
||||
|
||||
|
||||
getSelectedAccounts(): AccountInfo[] {
|
||||
var regAccounts = <AccountInfo[]>this.store.snapshot().registeredaccounts.accounts;
|
||||
return regAccounts.filter(x => x.isSelected);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue