summaryrefslogtreecommitdiffstats
path: root/src/models/circle.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/models/circle.ts')
-rw-r--r--src/models/circle.ts33
1 files changed, 27 insertions, 6 deletions
diff --git a/src/models/circle.ts b/src/models/circle.ts
index 38e0ab0d..de08d191 100644
--- a/src/models/circle.ts
+++ b/src/models/circle.ts
@@ -23,7 +23,7 @@
import Vue from 'vue'
import Member from './member'
-import { CircleConfig, CircleConfigs, MemberLevels } from './constants'
+import { CircleConfigs, MemberLevels } from './constants'
type MemberList = Record<string, Member>
@@ -116,12 +116,24 @@ export default class Circle {
/**
* Circle ini_initiator the current
* user info for this circle
+ * null if not a member
*/
- get initiator(): Member {
+ get initiator(): Member|null {
return this._initiator
}
/**
+ * Set new circle initiator
+ * null if not a member
+ */
+ set initiator(initiator: Member|null) {
+ if (initiator && initiator.constructor.name !== Member.name) {
+ throw new Error('Initiator must be a Member type')
+ }
+ Vue.set(this, '_initiator', initiator)
+ }
+
+ /**
* Circle ownership
*/
get owner(): Member {
@@ -135,7 +147,7 @@ export default class Circle {
if (owner.constructor.name !== Member.name) {
throw new Error('Owner must be a Member type')
}
- this._owner = owner
+ Vue.set(this, '_owner', owner)
}
/**
@@ -162,7 +174,7 @@ export default class Circle {
const singleId = member.singleId
if (this._members[singleId]) {
- console.warn('Ignoring duplicate member', member)
+ console.warn('Replacing existing member data', member)
}
Vue.set(this._members, singleId, member)
}
@@ -243,7 +255,15 @@ export default class Circle {
* Is the initiator a member of this circle?
*/
get isMember() {
- return this.initiator?.level > MemberLevels.NONE
+ return this.initiator?.level
+ && this.initiator?.level > MemberLevels.NONE
+ }
+
+ /**
+ * Is the initiator a pending member of this circle?
+ */
+ get isPendingMember() {
+ return this.initiator?.level === MemberLevels.NONE
}
/**
@@ -264,7 +284,8 @@ export default class Circle {
* Can the initiator add/remove members to this circle?
*/
get canManageMembers() {
- return this.initiator?.level >= MemberLevels.MODERATOR
+ return this.initiator?.level
+ && this.initiator?.level >= MemberLevels.MODERATOR
}
// PARAMS ---------------------------------------------