Scrollable sorted jitsi user list

Sorts and scrolls through the jitsi users
This commit is contained in:
Sean 2021-07-20 13:11:56 +02:00
parent 30bf5bc808
commit 06a34a8f03
4 changed files with 34 additions and 34 deletions

View File

@ -25,20 +25,13 @@
*ngIf="showParticles | async"
class="room-list-applause-particles"
></os-applause-particle-display>
<div class="member-list">
<ol>
<li
*ngFor="let memberId of memberList; trackBy: trackByIndex"
[ngClass]="{
focused: members[memberId].focus
}"
>
<div class="member-list-entry">
{{ members[memberId].name }}
</div>
</li>
</ol>
</div>
<ol class="member-list">
<li *ngFor="let member of members | keyvalue: valueNameOrder; trackBy: trackByIndex">
<div class="member-list-entry">
{{ member.value.name }}
</div>
</li>
</ol>
</div>
</div>

View File

@ -26,10 +26,12 @@ $wrapper-padding: 5px;
height: 100%;
width: 70px;
right: 0;
pointer-events: none;
}
.member-list {
max-height: 100%;
max-height: 230px;
margin: 0;
overflow-y: auto;
.member-list-entry {

View File

@ -1,3 +1,4 @@
import { KeyValue } from '@angular/common';
import {
AfterViewInit,
ChangeDetectionStrategy,
@ -20,7 +21,7 @@ import { BaseViewComponentDirective } from 'app/site/base/base-view';
import { ApplauseService } from '../../services/applause.service';
import { CallRestrictionService } from '../../services/call-restriction.service';
import { InteractionService } from '../../services/interaction.service';
import { RtcService } from '../../services/rtc.service';
import { ConferenceMember, ConferenceMemberCollection, RtcService } from '../../services/rtc.service';
import { StreamService } from '../../services/stream.service';
const helpDeskTitle = _('Help desk');
@ -35,25 +36,10 @@ const connectingTitle = _('connecting ...');
changeDetection: ChangeDetectionStrategy.OnPush
})
export class CallComponent extends BaseViewComponentDirective implements OnInit, AfterViewInit, OnDestroy {
public isJitsiActiveInAnotherTab: Observable<boolean> = this.rtcService.inOtherTab;
public canEnterCall: Observable<boolean> = this.callRestrictionService.canEnterCallObservable;
public isJitsiDialogOpen: Observable<boolean> = this.rtcService.showCallDialogObservable;
public showParticles: Observable<boolean> = this.applauseService.showParticles;
public hasLiveStreamUrl: Observable<boolean> = this.streamService.hasLiveStreamUrlObvervable;
public isJitsiActive: boolean;
public isJoined: boolean;
public get showHangUp(): boolean {
return this.isJitsiActive && this.isJoined;
}
private dominantSpeaker: string;
private members = {};
public get memberList(): string[] {
return Object.keys(this.members);
}
public get isDisconnected(): boolean {
return !this.isJitsiActive && !this.isJoined;
}
@ -65,6 +51,17 @@ export class CallComponent extends BaseViewComponentDirective implements OnInit,
public get isConnected(): boolean {
return this.isJitsiActive && this.isJoined;
}
public isJitsiActiveInAnotherTab: Observable<boolean> = this.rtcService.inOtherTab;
public canEnterCall: Observable<boolean> = this.callRestrictionService.canEnterCallObservable;
public isJitsiDialogOpen: Observable<boolean> = this.rtcService.showCallDialogObservable;
public showParticles: Observable<boolean> = this.applauseService.showParticles;
public hasLiveStreamUrl: Observable<boolean> = this.streamService.hasLiveStreamUrlObvervable;
public isJitsiActive: boolean;
public isJoined: boolean;
private dominantSpeaker: string;
public members: ConferenceMemberCollection = {};
private autoConnect: boolean;
@ -126,6 +123,10 @@ export class CallComponent extends BaseViewComponentDirective implements OnInit,
);
}
public valueNameOrder = (a: KeyValue<number, ConferenceMember>, b: KeyValue<number, ConferenceMember>): number => {
return a.value.name.localeCompare(b.value.name);
};
public ngOnInit(): void {
this.updateSubtitle();
}

View File

@ -24,9 +24,13 @@ interface ConferenceJoinedResult {
formattedDisplayName: string;
}
interface ConferenceMember {
export interface ConferenceMemberCollection {
[key: number]: ConferenceMember;
}
export interface ConferenceMember {
name: string;
focus: boolean;
focus?: boolean;
}
interface DisplayNameChangeResult {
@ -150,7 +154,7 @@ export class RtcService {
public jitsiMeetUrl = this.jitsiMeetUrlSubject.asObservable();
private members = {};
private memberSubject = new BehaviorSubject<Object>(this.members);
private memberSubject = new BehaviorSubject<ConferenceMemberCollection>(this.members);
public memberObservableObservable = this.memberSubject.asObservable();
private dominantSpeaker: JitsiMember;