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.ts21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/models/circle.ts b/src/models/circle.ts
index 75346a0b..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,16 +116,21 @@ 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) {
- this._initiator = initiator
+ 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)
}
/**
@@ -142,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)
}
/**
@@ -250,7 +255,8 @@ 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
}
/**
@@ -278,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 ---------------------------------------------