Skip to content
This repository was archived by the owner on Sep 7, 2023. It is now read-only.

Commit 41b4ccb

Browse files
committed
fix: use a invite singleton
1 parent e718c16 commit 41b4ccb

3 files changed

Lines changed: 23 additions & 10 deletions

File tree

Anchor.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ slugger = "SAbD2TPKyTd54oahjz6UEBzweXvojsRWbGB2t21gDnB"
66
[programs.devnet]
77
wordcel = "D9JJgeRf2rKq5LNMHLBMb92g4ZpeMgCyvZkd7QKwSCzg"
88
invite = "6G5x4Es2YZYB5e4QkFJN88TrfLABkYEQpkUH5Gob9Cut"
9+
slugger = "SAbD2TPKyTd54oahjz6UEBzweXvojsRWbGB2t21gDnB"
910

1011
[programs.mainnet]
1112
wordcel = "EXzAYHZ8xS6QJ6xGRsdKZXixoQBLsuMbmwJozm85jHp"
1213
invite = "Fc4q6ttyDHr11HjMHRvanG9SskeR24Q62egdwsUUMHLf"
14+
slugger = "SAbD2TPKyTd54oahjz6UEBzweXvojsRWbGB2t21gDnB"
1315

1416
[registry]
1517
url = "https://anchor.projectserum.com"

tests/slugger.spec.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {Wordcel} from '../target/types/wordcel';
44
import {Slugger} from '../target/types/slugger';
55
import {expect} from 'chai';
66
import {PublicKey} from '@solana/web3.js';
7-
import {getInviteAccount, invitationProgram} from "./utils/invite";
7+
import {getInviteSingleton, invitationProgram} from "./utils/invite";
88
import {airdrop} from './utils';
99
import randombytes from 'randombytes';
1010
import {createHash} from 'crypto';
@@ -37,15 +37,7 @@ describe('Slugger', async () => {
3737
// Prepare test user.
3838
before(async () => {
3939
await airdrop(user);
40-
inviteAccount = await getInviteAccount(user);
41-
// Initialize invite
42-
await invitationProgram.methods.initialize()
43-
.accounts({
44-
inviteAccount: inviteAccount,
45-
authority: user,
46-
payer: user,
47-
systemProgram: SystemProgram.programId
48-
}).rpc();
40+
inviteAccount = await getInviteSingleton(user);
4941

5042
// Set up a profile
5143
const profileHash = randombytes(32);

tests/utils/invite.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ const {SystemProgram} = anchor.web3;
77
const provider = anchor.getProvider();
88
const invitationPrefix = Buffer.from("invite");
99

10+
let inviteMap = new Map<string, PublicKey>();
11+
1012
export const invitationProgram = anchor.workspace.Invite as Program<Invite>;
1113

1214
export async function getInviteAccount(key: PublicKey) {
@@ -33,3 +35,20 @@ export async function sendInvite(from_user: Keypair, to: PublicKey, feePayer: Pu
3335
await provider.sendAndConfirm(tx);
3436
return [inviteAccount, toInviteAccount];
3537
}
38+
39+
export async function getInviteSingleton(user: PublicKey) {
40+
const key = user.toString()
41+
if(inviteMap.has(key)) {
42+
return inviteMap.get(key)
43+
}
44+
const inviteAccount = await getInviteAccount(user);
45+
await invitationProgram.methods.initialize()
46+
.accounts({
47+
inviteAccount: inviteAccount,
48+
authority: user,
49+
payer: user,
50+
systemProgram: SystemProgram.programId
51+
}).rpc();
52+
inviteMap.set(key, inviteAccount);
53+
return inviteAccount;
54+
}

0 commit comments

Comments
 (0)