opening account from status mention is working

This commit is contained in:
Nicolas Constant 2018-10-31 00:02:03 -04:00
parent d979abc83e
commit fa4f1f235f
No known key found for this signature in database
GPG Key ID: 1E9F677FB01A5688
7 changed files with 104 additions and 35 deletions

View File

@ -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();

View File

@ -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 {

View File

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

View File

@ -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];
});
}
}

View File

@ -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);
}

View File

@ -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();
}));
});

View File

@ -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);
}
}