about summary refs log tree commit diff
path: root/src/state/models/invited-users.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/models/invited-users.ts')
-rw-r--r--src/state/models/invited-users.ts20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/state/models/invited-users.ts b/src/state/models/invited-users.ts
index 121161a32..a28e0309a 100644
--- a/src/state/models/invited-users.ts
+++ b/src/state/models/invited-users.ts
@@ -4,6 +4,7 @@ import {RootStoreModel} from './root-store'
 import {isObj, hasProp, isStrArray} from 'lib/type-guards'
 
 export class InvitedUsers {
+  copiedInvites: string[] = []
   seenDids: string[] = []
   profiles: AppBskyActorDefs.ProfileViewDetailed[] = []
 
@@ -20,13 +21,20 @@ export class InvitedUsers {
   }
 
   serialize() {
-    return {seenDids: this.seenDids}
+    return {seenDids: this.seenDids, copiedInvites: this.copiedInvites}
   }
 
   hydrate(v: unknown) {
     if (isObj(v) && hasProp(v, 'seenDids') && isStrArray(v.seenDids)) {
       this.seenDids = v.seenDids
     }
+    if (
+      isObj(v) &&
+      hasProp(v, 'copiedInvites') &&
+      isStrArray(v.copiedInvites)
+    ) {
+      this.copiedInvites = v.copiedInvites
+    }
   }
 
   async fetch(invites: ComAtprotoServerDefs.InviteCode[]) {
@@ -63,6 +71,16 @@ export class InvitedUsers {
     }
   }
 
+  isInviteCopied(invite: string) {
+    return this.copiedInvites.includes(invite)
+  }
+
+  setInviteCopied(invite: string) {
+    if (!this.isInviteCopied(invite)) {
+      this.copiedInvites.push(invite)
+    }
+  }
+
   markSeen(did: string) {
     this.seenDids.push(did)
     this.profiles = this.profiles.filter(profile => profile.did !== did)