mirror of
https://github.com/NicolasConstant/sengi
synced 2024-12-11 08:26:15 +01:00
status section menu functional
This commit is contained in:
parent
c320518159
commit
78d3cc9631
@ -102,7 +102,7 @@
|
|||||||
</app-databinded-text>
|
</app-databinded-text>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="profile__extra-info">
|
<!-- <div class="profile__extra-info">
|
||||||
<div class="profile__extra-info__section">
|
<div class="profile__extra-info__section">
|
||||||
<a href class="profile__extra-info__links"
|
<a href class="profile__extra-info__links"
|
||||||
(click)="switchProfileSection('fields')"
|
(click)="switchProfileSection('fields')"
|
||||||
@ -118,14 +118,14 @@
|
|||||||
(click)="switchProfileSection('hashtags')"
|
(click)="switchProfileSection('hashtags')"
|
||||||
[class.profile__extra-info__links--selected]="profileSection === 'hashtags'">Hashtags</a>
|
[class.profile__extra-info__links--selected]="profileSection === 'hashtags'">Hashtags</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="profile-fields" *ngIf="displayedAccount.fields.length > 0">
|
<div class="profile-fields" *ngIf="displayedAccount.fields.length > 0">
|
||||||
<div class="profile-fields__field" *ngFor="let field of displayedAccount.fields">
|
<div class="profile-fields__field" *ngFor="let field of displayedAccount.fields">
|
||||||
<div class="profile-fields__field--value"
|
<div class="profile-fields__field--value"
|
||||||
innerHTML="{{ displayedAccount | accountEmoji:field.value}}"
|
innerHTML="{{ displayedAccount | accountEmoji:field.value}}"
|
||||||
[ngClass]="{'profile-fields__field--validated': field.verified_at }">
|
[ngClass]="{'profile-fields__field--validated': field.verified_at }">
|
||||||
</div>
|
</div>
|
||||||
<div class="profile-fields__field--name">
|
<div class="profile-fields__field--name" title="{{ field.name }}">
|
||||||
{{ field.name }}
|
{{ field.name }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -133,20 +133,20 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="profile-statuses">
|
<div class="profile-statuses">
|
||||||
<div class="profile__extra-info">
|
<div class="profile__extra-info" *ngIf="!isLoading">
|
||||||
<div class="profile__extra-info__section">
|
<div class="profile__extra-info__section">
|
||||||
<a href class="profile__extra-info__links"
|
<a href class="profile__extra-info__links" (click)="switchStatusSection('status')"
|
||||||
(click)="switchStatusSection('status')"
|
title="Status"
|
||||||
[class.profile__extra-info__links--selected]="statusSection === 'status'">Status</a>
|
[class.profile__extra-info__links--selected]="statusSection === 'status'">Status</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="profile__extra-info__section">
|
<div class="profile__extra-info__section">
|
||||||
<a href class="profile__extra-info__links"
|
<a href class="profile__extra-info__links" (click)="switchStatusSection('replies')"
|
||||||
(click)="switchStatusSection('replies')"
|
title="Status & Replies"
|
||||||
[class.profile__extra-info__links--selected]="statusSection === 'replies'">Status & Replies</a>
|
[class.profile__extra-info__links--selected]="statusSection === 'replies'">Status &
|
||||||
|
Replies</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="profile__extra-info__section">
|
<div class="profile__extra-info__section">
|
||||||
<a href class="profile__extra-info__links"
|
<a href class="profile__extra-info__links" (click)="switchStatusSection('media')" title="Media"
|
||||||
(click)="switchStatusSection('media')"
|
|
||||||
[class.profile__extra-info__links--selected]="statusSection === 'media'">Media</a>
|
[class.profile__extra-info__links--selected]="statusSection === 'media'">Media</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -155,10 +155,12 @@
|
|||||||
no status found
|
no status found
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngFor="let statusWrapper of pinnedStatuses">
|
<div *ngIf="statusSection === 'status'">
|
||||||
<app-status [statusWrapper]="statusWrapper" (browseHashtagEvent)="browseHashtag($event)"
|
<div *ngFor="let statusWrapper of pinnedStatuses">
|
||||||
(browseAccountEvent)="browseAccount($event)" (browseThreadEvent)="browseThread($event)">
|
<app-status [statusWrapper]="statusWrapper" (browseHashtagEvent)="browseHashtag($event)"
|
||||||
</app-status>
|
(browseAccountEvent)="browseAccount($event)" (browseThreadEvent)="browseThread($event)">
|
||||||
|
</app-status>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngFor="let statusWrapper of statuses">
|
<div *ngFor="let statusWrapper of statuses">
|
||||||
|
@ -132,7 +132,7 @@ export class UserProfileComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const getFollowStatusPromise = this.getFollowStatus(this.currentlyUsedAccount, this.displayedAccount);
|
const getFollowStatusPromise = this.getFollowStatus(this.currentlyUsedAccount, this.displayedAccount);
|
||||||
const getStatusesPromise = this.getStatuses(this.currentlyUsedAccount, this.displayedAccount);
|
const getStatusesPromise = this.getStatuses(this.currentlyUsedAccount, this.displayedAccount, false, true, null);
|
||||||
const getPinnedStatusesPromise = this.getPinnedStatuses(this.currentlyUsedAccount, this.displayedAccount);
|
const getPinnedStatusesPromise = this.getPinnedStatuses(this.currentlyUsedAccount, this.displayedAccount);
|
||||||
|
|
||||||
return Promise.all([getFollowStatusPromise, getStatusesPromise, getPinnedStatusesPromise]);
|
return Promise.all([getFollowStatusPromise, getStatusesPromise, getPinnedStatusesPromise]);
|
||||||
@ -160,9 +160,10 @@ export class UserProfileComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private getStatuses(userAccount: AccountInfo, account: Account): Promise<void> {
|
private getStatuses(userAccount: AccountInfo, account: Account, onlyMedia: boolean, excludeReplies: boolean, maxId: string): Promise<void> {
|
||||||
this.statusLoading = true;
|
this.statusLoading = true;
|
||||||
return this.mastodonService.getAccountStatuses(userAccount, account.id, false, false, true, null, null, 20)
|
|
||||||
|
return this.mastodonService.getAccountStatuses(userAccount, account.id, onlyMedia, false, excludeReplies, maxId, null, 20)
|
||||||
.then((statuses: Status[]) => {
|
.then((statuses: Status[]) => {
|
||||||
this.loadStatus(userAccount, statuses);
|
this.loadStatus(userAccount, statuses);
|
||||||
})
|
})
|
||||||
@ -266,7 +267,7 @@ export class UserProfileComponent implements OnInit {
|
|||||||
var element = this.statustream.nativeElement as HTMLElement;
|
var element = this.statustream.nativeElement as HTMLElement;
|
||||||
const atBottom = element.scrollHeight <= element.clientHeight + element.scrollTop + 1000;
|
const atBottom = element.scrollHeight <= element.clientHeight + element.scrollTop + 1000;
|
||||||
|
|
||||||
if(element.scrollTop > 150){
|
if (element.scrollTop > 150) {
|
||||||
this.showFloatingHeader = true;
|
this.showFloatingHeader = true;
|
||||||
} else {
|
} else {
|
||||||
this.showFloatingHeader = false;
|
this.showFloatingHeader = false;
|
||||||
@ -280,18 +281,21 @@ export class UserProfileComponent implements OnInit {
|
|||||||
private scrolledToBottom() {
|
private scrolledToBottom() {
|
||||||
if (this.statusLoading || this.maxReached) return;
|
if (this.statusLoading || this.maxReached) return;
|
||||||
|
|
||||||
this.statusLoading = true;
|
const onlyMedia = this.statusSection === 'media';
|
||||||
const userAccount = this.currentlyUsedAccount;
|
const excludeReplies = this.statusSection === 'status';
|
||||||
this.mastodonService.getAccountStatuses(userAccount, this.displayedAccount.id, false, false, true, this.maxId, null, 20)
|
|
||||||
.then((statuses: Status[]) => {
|
this.getStatuses(this.currentlyUsedAccount, this.displayedAccount, onlyMedia, excludeReplies, this.maxId);
|
||||||
this.loadStatus(userAccount, statuses);
|
|
||||||
})
|
// this.mastodonService.getAccountStatuses(userAccount, this.displayedAccount.id, false, false, true, this.maxId, null, 20)
|
||||||
.catch(err => {
|
// .then((statuses: Status[]) => {
|
||||||
this.notificationService.notifyHttpError(err);
|
// this.loadStatus(userAccount, statuses);
|
||||||
})
|
// })
|
||||||
.then(() => {
|
// .catch(err => {
|
||||||
this.statusLoading = false;
|
// this.notificationService.notifyHttpError(err);
|
||||||
});
|
// })
|
||||||
|
// .then(() => {
|
||||||
|
// this.statusLoading = false;
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
private loadStatus(userAccount: AccountInfo, statuses: Status[]) {
|
private loadStatus(userAccount: AccountInfo, statuses: Status[]) {
|
||||||
@ -313,13 +317,28 @@ export class UserProfileComponent implements OnInit {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switchProfileSection(section: 'fields' | 'choices' | 'hashtags'): boolean{
|
switchProfileSection(section: 'fields' | 'choices' | 'hashtags'): boolean {
|
||||||
this.profileSection = section;
|
this.profileSection = section;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switchStatusSection(section: 'status' | 'replies' | 'media'): boolean{
|
switchStatusSection(section: 'status' | 'replies' | 'media'): boolean {
|
||||||
this.statusSection = section;
|
this.statusSection = section;
|
||||||
|
this.statuses.length = 0;
|
||||||
|
this.maxId = null;
|
||||||
|
|
||||||
|
switch (section) {
|
||||||
|
case "status":
|
||||||
|
this.getStatuses(this.currentlyUsedAccount, this.displayedAccount, false, true, this.maxId);
|
||||||
|
break;
|
||||||
|
case "replies":
|
||||||
|
this.getStatuses(this.currentlyUsedAccount, this.displayedAccount, false, false, this.maxId);
|
||||||
|
break;
|
||||||
|
case "media":
|
||||||
|
this.getStatuses(this.currentlyUsedAccount, this.displayedAccount, true, true, this.maxId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user