added context-menu to user profile
This commit is contained in:
parent
b5f543dac3
commit
5d61c44700
|
@ -1,26 +1,27 @@
|
|||
<a href class="context-menu-link" (click)="onContextMenu($event)"
|
||||
[class.context-menu-link__status]="statusWrapper"
|
||||
[class.context-menu-link__profile]="displayedAccount"
|
||||
title="More">
|
||||
<fa-icon [icon]="faEllipsisH"></fa-icon>
|
||||
</a>
|
||||
<context-menu #contextMenu>
|
||||
<ng-template contextMenuItem (execute)="expandStatus()">
|
||||
<ng-template contextMenuItem (execute)="expandStatus()" *ngIf="statusWrapper">
|
||||
Expand status
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem (execute)="copyStatusLink()">
|
||||
<ng-template contextMenuItem (execute)="copyStatusLink()" *ngIf="statusWrapper">
|
||||
Copy link to status
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem divider="true"></ng-template>
|
||||
<ng-template contextMenuItem divider="true" *ngIf="statusWrapper"></ng-template>
|
||||
<ng-template contextMenuItem (execute)="mentionAccount()" *ngIf="!isOwnerSelected">
|
||||
Mention @{{ this.username }}
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem (execute)="dmAccount()" *ngIf="!isOwnerSelected">
|
||||
Direct message @{{ this.username }}
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem (execute)="muteConversation()" *ngIf="isOwnerSelected && !displayedStatus.muted">
|
||||
<ng-template contextMenuItem (execute)="muteConversation()" *ngIf="statusWrapper && isOwnerSelected && !displayedStatus.muted">
|
||||
Mute conversation
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem (execute)="unmuteConversation()" *ngIf="isOwnerSelected && displayedStatus.muted">
|
||||
<ng-template contextMenuItem (execute)="unmuteConversation()" *ngIf="statusWrapper && isOwnerSelected && displayedStatus.muted">
|
||||
Unmute conversation
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem divider="true"></ng-template>
|
||||
|
@ -30,16 +31,16 @@
|
|||
<ng-template contextMenuItem (execute)="blockAccount()" *ngIf="!isOwnerSelected">
|
||||
Block @{{ this.username }}
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem (execute)="pinOnProfile()" *ngIf="isOwnerSelected && !displayedStatus.pinned && displayedStatus.visibility === 'public'">
|
||||
<ng-template contextMenuItem (execute)="pinOnProfile()" *ngIf="statusWrapper && isOwnerSelected && !displayedStatus.pinned && displayedStatus.visibility === 'public'">
|
||||
Pin on profile
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem (execute)="unpinFromProfile()" *ngIf="isOwnerSelected && displayedStatus.pinned && displayedStatus.visibility === 'public'">
|
||||
<ng-template contextMenuItem (execute)="unpinFromProfile()" *ngIf="statusWrapper && isOwnerSelected && displayedStatus.pinned && displayedStatus.visibility === 'public'">
|
||||
Unpin from profile
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem (execute)="delete(false)" *ngIf="isOwnerSelected">
|
||||
<ng-template contextMenuItem (execute)="delete(false)" *ngIf="statusWrapper && isOwnerSelected">
|
||||
Delete
|
||||
</ng-template>
|
||||
<ng-template contextMenuItem (execute)="delete(true)" *ngIf="isOwnerSelected">
|
||||
<ng-template contextMenuItem (execute)="delete(true)" *ngIf="statusWrapper && isOwnerSelected">
|
||||
Delete & re-draft
|
||||
</ng-template>
|
||||
</context-menu>
|
|
@ -2,6 +2,8 @@
|
|||
@import "context-menu";
|
||||
|
||||
.context-menu-link {
|
||||
font-size: 18px;
|
||||
|
||||
&__status {
|
||||
color: $status-secondary-color;
|
||||
|
||||
|
@ -11,6 +13,10 @@
|
|||
}
|
||||
|
||||
&__profile {
|
||||
color: whitesmoke;
|
||||
|
||||
&:hover {
|
||||
color: rgb(192, 192, 192);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -18,7 +18,7 @@ import { NotificationService } from '../../../../../services/notification.servic
|
|||
templateUrl: './status-user-context-menu.component.html',
|
||||
styleUrls: ['./status-user-context-menu.component.scss']
|
||||
})
|
||||
export class StatusUserContextMenuComponent implements OnInit, OnDestroy {
|
||||
export class StatusUserContextMenuComponent implements OnInit, OnDestroy {
|
||||
faEllipsisH = faEllipsisH;
|
||||
|
||||
private fullHandle: string;
|
||||
|
@ -28,6 +28,7 @@ export class StatusUserContextMenuComponent implements OnInit, OnDestroy {
|
|||
isOwnerSelected: boolean;
|
||||
|
||||
@Input() statusWrapper: StatusWrapper;
|
||||
@Input() displayedAccount: Account;
|
||||
|
||||
@Output() browseThreadEvent = new EventEmitter<OpenThreadEvent>();
|
||||
|
||||
|
@ -42,27 +43,35 @@ export class StatusUserContextMenuComponent implements OnInit, OnDestroy {
|
|||
private readonly notificationService: NotificationService,
|
||||
private readonly navigationService: NavigationService,
|
||||
private readonly toolsService: ToolsService,
|
||||
private readonly contextMenuService: ContextMenuService) {
|
||||
this.accounts$ = this.store.select(state => state.registeredaccounts.accounts);
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
const status = this.statusWrapper.status;
|
||||
private readonly contextMenuService: ContextMenuService) {
|
||||
this.accounts$ = this.store.select(state => state.registeredaccounts.accounts);
|
||||
}
|
||||
|
||||
if (status.reblog) {
|
||||
this.displayedStatus = status.reblog;
|
||||
ngOnInit() {
|
||||
if (this.statusWrapper) {
|
||||
|
||||
const status = this.statusWrapper.status;
|
||||
if (status.reblog) {
|
||||
this.displayedStatus = status.reblog;
|
||||
} else {
|
||||
this.displayedStatus = status;
|
||||
}
|
||||
|
||||
this.accountSub = this.accounts$.subscribe((accounts: AccountInfo[]) => {
|
||||
this.loadedAccounts = accounts;
|
||||
this.checkStatus(accounts);
|
||||
});
|
||||
}
|
||||
|
||||
let account: Account;
|
||||
if(this.statusWrapper) {
|
||||
account = this.displayedStatus.account;
|
||||
} else {
|
||||
this.displayedStatus = status;
|
||||
account = this.displayedAccount;
|
||||
}
|
||||
|
||||
this.username = this.displayedStatus.account.acct.split('@')[0];
|
||||
this.fullHandle = this.toolsService.getAccountFullHandle(this.displayedStatus.account);
|
||||
|
||||
this.accountSub = this.accounts$.subscribe((accounts: AccountInfo[]) => {
|
||||
this.loadedAccounts = accounts;
|
||||
this.checkStatus(accounts);
|
||||
});
|
||||
|
||||
this.username = account.acct.split('@')[0];
|
||||
this.fullHandle = this.toolsService.getAccountFullHandle(account);
|
||||
}
|
||||
|
||||
private checkStatus(accounts: AccountInfo[]): void {
|
||||
|
@ -74,7 +83,7 @@ export class StatusUserContextMenuComponent implements OnInit, OnDestroy {
|
|||
|
||||
|
||||
ngOnDestroy(): void {
|
||||
this.accountSub.unsubscribe();
|
||||
if(this.accountSub) this.accountSub.unsubscribe();
|
||||
}
|
||||
|
||||
public onContextMenu($event: MouseEvent): void {
|
||||
|
@ -249,7 +258,7 @@ export class StatusUserContextMenuComponent implements OnInit, OnDestroy {
|
|||
|
||||
private getStatus(account: AccountInfo): Promise<Status> {
|
||||
let statusPromise: Promise<Status> = Promise.resolve(this.statusWrapper.status);
|
||||
|
||||
|
||||
if (account.id !== this.statusWrapper.provider.id) {
|
||||
statusPromise = this.mastodonService.search(account, this.statusWrapper.status.url, true)
|
||||
.then((result: Results) => {
|
||||
|
|
|
@ -91,6 +91,9 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<app-status-user-context-menu class="profile-header__more"
|
||||
[displayedAccount]="displayedAccount"></app-status-user-context-menu>
|
||||
</div>
|
||||
|
||||
<div class="profile-sub-header">
|
||||
|
|
|
@ -225,6 +225,12 @@ $full-alias-color-hover: white;
|
|||
margin: 0 2px 2px 0;
|
||||
}
|
||||
}
|
||||
|
||||
&__more {
|
||||
position: absolute;
|
||||
bottom: 5px;
|
||||
right: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
&-sub-header {
|
||||
|
|
Loading…
Reference in New Issue