2023-07-26 19:47:44 +08:00

74 lines
1.9 KiB
TypeScript

import { Subscriber } from "wukongimjssdk";
import { GroupRole } from "../../Service/Const";
import WKApp from "../../App";
import { ProviderListener } from "../../Service/Provider";
import RouteContext from "../../Service/Context";
import { ChannelSettingRouteData } from "../ChannelSetting/context";
export class SubscribersVM extends ProviderListener {
context:RouteContext<any>
routeData:ChannelSettingRouteData
private _subscribers: Subscriber[] = []
showNum:number = 20
constructor(context:RouteContext<any>) {
super()
this.context = context
this.routeData = context.routeData()
}
get subscribers():Subscriber[] {
return this.routeData.subscribers
}
get subscribersTop():Subscriber[] {
let showMemberNum = this.shouldShowMemberNum()
const subscribers = this.routeData.subscribers
if(subscribers && subscribers.length>0) {
if(subscribers.length<showMemberNum) {
return subscribers
}else {
return subscribers.slice(0,showMemberNum)
}
}
return subscribers
}
shouldShowMemberNum() {
let showMemberNum = this.showNum
if(this.showAdd()) {
showMemberNum-=1
}
if(this.showRemove()) {
showMemberNum-=1
}
return showMemberNum
}
showAdd() {
return true
}
showRemove() {
const subscriberOfMe = this.routeData.subscriberOfMe
let role = GroupRole.normal
if(subscriberOfMe) {
role = subscriberOfMe.role
}
if(role === GroupRole.owner || role === GroupRole.manager) {
return true
}
return false
}
hasMoreSubscribers() {
let showMemberNum = this.shouldShowMemberNum()
return this.subscribers.length>showMemberNum
}
}