Skip to content

Commit 818d02a

Browse files
updated ui
1 parent 253af9f commit 818d02a

File tree

6 files changed

+148
-37
lines changed

6 files changed

+148
-37
lines changed

2-oracles/tweeter-oracle/public/index.html

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,63 +36,78 @@ <h2>3. Instantiate TweeterOracle Component </h2>
3636
<p><button id="instantiateTweeterOracleComponent">Instantiate</button></p>
3737
<p>Tweeter Oracle Component Address:<br><pre id="tweeterOracleComponentAddress"></pre></p>
3838

39-
<h2>4.insert followers</h2>
39+
<h2>4.Add Datas to Update</h2>
4040
<p>
41-
account to follow <input type="text" id="accountToFollow" /> </br>
41+
accounts to follow (use ; as separator) <input type="text" id="accountsToFollow" /> </br>
42+
tweets to like (use ; as separator) <input type= "text" id="tweetsToLike" />
43+
tweets to retweet (use ; as separator) <input type= "text" id="tweetsToRetweet" />
44+
</p>
45+
<p><button id="addDatasToUpdate">Add datas to update</button></p>
46+
<p>Add datas to update <br><pre id="addDatasToUpdateReceipt"></pre></p>
47+
48+
<h2>5.Get Datas to Update</h2>
49+
<p><button id="getDatasToUpdate">Get datas to update</button></p>
50+
<p>Get datas to update receipt <br><pre id="getDatasToUpdateReceipt"></pre></p>
51+
52+
<h2>6.insert followers</h2>
53+
<p>
54+
account to follow <select id="accountToFollow">
55+
</select> </br>
4256
followers (use ; as separator) <input type= "text" id="followers" />
4357
</p>
4458
<p><button id="insertFollowers">insert followers</button></p>
4559
<p>update followers Receipt:<br><pre id="insertFollowersReceipt"></pre></p>
4660

47-
<h2>5.Check if follower</h2>
61+
<h2>7.Check if follower</h2>
4862
<p>
49-
account to follow <input type="text" id="accountToFollowCheck" /> </br>
63+
account to follow <select id="accountToFollowCheck"> <select/> </br>
5064
follower to check <input type= "text" id="followerToCheck" />
5165
</p>
5266
<p><button id="checkIfFollower">Check if folower</button></p>
5367
<p>Is follower ? :<br><pre id="checkIfFollowerResponse"></pre></p>
5468
<p>Check if follower Receipt:<br><pre id="checkIfFollowerReceipt"></pre></p>
5569

5670

57-
<h2>6.insert likers</h2>
71+
<h2>8.insert likers</h2>
5872
<p>
59-
tweet to like id <input type="text" id="tweetToLikeId" /> </br>
73+
tweet to like id <select id="tweetToLikeId">
74+
</select> </br>
6075
likers (use ; as separator) <input type= "text" id="likers" />
6176
</p>
6277
<p><button id="insertLikers">insert likers</button></p>
6378
<p>insert likers Receipt:<br><pre id="insertLikersReceipt"></pre></p>
6479

65-
<h2>7.Check if liker</h2>
80+
<h2>9.Check if liker</h2>
6681
<p>
67-
tweetId <input type="text" id="tweetIdCheck" /> </br>
82+
tweetId <select type="text" id="tweetIdCheck"> </select> </br>
6883
liker to check <input type= "text" id="likerToCheck" />
6984
</p>
7085
<p><button id="checkIfLiker">Check if liker</button></p>
7186
<p>Is liker ? :<br><pre id="checkIfLikerResponse"></pre></p>
7287
<p>Check if liker Receipt:<br><pre id="checkIfLikerReceipt"></pre></p>
7388

74-
<h2>8.insert retweeters</h2>
89+
<h2>10.insert retweeters</h2>
7590
<p>
76-
tweet to retweet id <input type="text" id="tweetToRetweetId" /> </br>
91+
tweet to retweet id <select id="tweetToRetweetId"> <select/> </br>
7792
likers (use ; as separator) <input type= "text" id="retweeters" />
7893
</p>
7994
<p><button id="insertRetweeters">Insert followers</button></p>
8095
<p>update likers Receipt:<br><pre id="insertRetweetersReceipt"></pre></p>
8196

82-
<h2>7.Check if retweeter </h2>
97+
<h2>11.Check if retweeter </h2>
8398
<p>
84-
tweetId <input type="text" id="tweetToRetweetIdCheck" /> </br>
99+
tweetId <select id="tweetToRetweetIdCheck" ></select> </br>
85100
retweeter to check <input type= "text" id="retweeterToCheck" />
86101
</p>
87102
<p><button id="checkIfRetweeter">Check if retweeter</button></p>
88103
<p>Is liker ? :<br><pre id="checkIfRetweeterResponse"></pre></p>
89104
<p>Check if liker Receipt:<br><pre id="checkIfRetweeterReceipt"></pre></p>
90105

91-
<h2>9. Fetch User Account Address</h2>
106+
<h2>12. Fetch User Account Address</h2>
92107
<p><button id="fetchAccountAddress">Change Account on PTE and Click me</button> to get the account address of the PTE Browser Extension user.</p>
93108
<p>Account Address: <pre id="accountAddress"></pre></p>
94109

95-
<h2>10.Airdrop Component</h2>
110+
<h2>13.Airdrop Component</h2>
96111
<p>
97112
accounts to follow (use ; as separator) <input type="text" id="accountsToFollow" />
98113
</p>
Binary file not shown.

2-oracles/tweeter-oracle/scrypto/tweeter-oracle/src/airdrop_with_twitter_oracle.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,9 @@ blueprint! {
8686
.default(rule!(allow_all));
8787

8888
let tweeter_oracle : TweeterOracle = tweeter_oracle_component_address.into();
89-
tweeter_oracle.add_followers_to_update(accounts_to_follow.clone());
90-
tweeter_oracle.add_likers_to_update(tweets_to_like.clone());
91-
tweeter_oracle.add_retweeters_to_update(tweets_to_retweet.clone());
89+
tweeter_oracle.add_accounts_to_follows(accounts_to_follow.clone());
90+
tweeter_oracle.add_tweets_to_like(tweets_to_like.clone());
91+
tweeter_oracle.add_tweets_to_retweet(tweets_to_retweet.clone());
9292

9393

9494
// Instantiate AirdropWithTweeterOracle component and return it with the admin badge to caller

2-oracles/tweeter-oracle/scrypto/tweeter-oracle/src/tweeter_oracle.rs

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -232,45 +232,51 @@ blueprint! {
232232
}
233233

234234
//
235-
pub fn add_followers_to_update(&mut self, followers : Vec<String>)
235+
pub fn add_accounts_to_follows(&mut self, accounts : Vec<String>)
236236
{
237-
for follower in followers
237+
for account in accounts
238238
{
239-
insert_keys(follower, &mut self.tweeter_account_followers);
239+
insert_keys(account, &mut self.tweeter_account_followers);
240240
}
241241
}
242242

243-
pub fn add_likers_to_update(&mut self, likers : Vec<String>)
243+
pub fn add_tweets_to_like(&mut self, tweets : Vec<String>)
244244
{
245-
for liker in likers
245+
for tweet in tweets
246246
{
247-
insert_keys(liker, &mut self.tweets_likers);
247+
insert_keys(tweet, &mut self.tweets_likers);
248248
}
249249
}
250250

251251
//
252-
pub fn add_retweeters_to_update(&mut self, retweeters : Vec<String>)
252+
pub fn add_tweets_to_retweet(&mut self, tweets : Vec<String>)
253253
{
254-
for retweeter in retweeters
254+
for tweet in tweets
255255
{
256-
insert_keys(retweeter, &mut self.tweets_likers);
256+
insert_keys(tweet, &mut self.tweets_retweeters);
257257
}
258258
}
259259

260-
261260
//
262-
pub fn get_datas_to_updates(&mut self) -> HashMap<String, Vec<String>>
261+
pub fn get_datas_to_update(&mut self) -> HashMap<String, Vec<String>>
263262
{
263+
//let mut log :String = String::new();
264264
let mut result : HashMap<String, Vec<String>> = HashMap::new();
265-
let followers : String = String::from("FOLLOWERS");
266-
let likers : String = String::from("LIKERS");
267-
let retweeters : String = String::from("RETWEETERS");
268-
269-
result.insert(followers, self.tweeter_account_followers.keys().cloned().collect());
270-
result.insert(likers, self.tweets_likers.keys().cloned().collect());
271-
result.insert(retweeters, self.tweets_retweeters.keys().cloned().collect());
265+
let accounts_to_follow : String = String::from("ACCOUNTS_TO_FOLLOW");
266+
let tweets_to_like : String = String::from("TWEETS_TO_LIKE");
267+
let tweets_to_retweet : String = String::from("TWEETS_TO_RETWEETS");
268+
269+
result.insert(accounts_to_follow.clone(), self.tweeter_account_followers.keys().cloned().collect());
270+
let accounts_to_follow_log = format!("{}:{}", accounts_to_follow,result.get(&accounts_to_follow).unwrap().join(";"));
271+
result.insert(tweets_to_like.clone(), self.tweets_likers.keys().cloned().collect());
272+
let tweets_to_like_log = format!("{}:{}", tweets_to_like,result.get(&tweets_to_like).unwrap().join(";"));
273+
result.insert(tweets_to_retweet.clone(), self.tweets_retweeters.keys().cloned().collect());
274+
let tweets_to_retweet_log = format!("{}:{}", tweets_to_retweet,result.get(&tweets_to_retweet).unwrap().join(";"));
275+
276+
info!("{}|{}|{}",accounts_to_follow_log,tweets_to_like_log,tweets_to_retweet_log);
272277

273278
return result;
279+
274280
}
275281
}
276282
}

2-oracles/tweeter-oracle/scrypto/tweeter-oracle/src/utils.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ pub fn is_item_exist(
3939
hashmap: &mut HashMap<String, HashSet<String>>,
4040
item: String,
4141
) -> bool {
42-
let collections = hashmap.entry(key).or_insert(HashSet::new());
43-
return collections.contains(&item);
42+
43+
if hashmap.contains_key(&key) {
44+
let collections = hashmap.get(&key).unwrap();
45+
return collections.contains(&item);
46+
}
47+
return false;
4448
}

2-oracles/tweeter-oracle/src/index.ts

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,92 @@ document.getElementById('instantiateTweeterOracleComponent').onclick = async fun
5757
}
5858
}
5959

60+
document.getElementById('addDatasToUpdate').onclick = async function() {
61+
62+
let accountsToFollow = document.getElementById('accountsToFollow').value?.split(';').filter(o => o.trim()!="");
63+
let tweetsToLike = document.getElementById('tweetsToLike').value?.split(';').filter(o => o.trim()!="");
64+
let tweetsToRetweet = document.getElementById('tweetsToRetweet').value?.split(';').filter(o => o.trim()!="");
65+
66+
if(accountsToFollow.length == 0 && tweetsToLike.length == 0 && tweetsToRetweet.length == 0 ){
67+
alert("You must provide at least one entry");
68+
return ;
69+
}
70+
71+
var manifestBuilder = new ManifestBuilder();
72+
73+
if(accountsToFollow.length > 0 ){
74+
manifestBuilder = manifestBuilder.callMethod(tweeterOracleComponentAddress, 'add_accounts_to_follows',[`Vec<String>(${accountsToFollow.map(o => '"' + o.trim() + '"').join(',')})`]);
75+
}
76+
77+
if(tweetsToLike.length > 0){
78+
manifestBuilder = manifestBuilder.callMethod(tweeterOracleComponentAddress, 'add_tweets_to_like',[`Vec<String>(${tweetsToLike.map(o => '"' + o.trim() + '"').join(',')})`]);
79+
}
80+
81+
if(tweetsToRetweet.length > 0){
82+
manifestBuilder = manifestBuilder.callMethod(tweeterOracleComponentAddress, 'add_tweets_to_retweet',[`Vec<String>(${tweetsToRetweet.map(o => '"' + o.trim() + '"').join(',')})`]);
83+
}
84+
85+
86+
const manifest = manifestBuilder
87+
.build()
88+
.toString();
89+
90+
// Send manifest to extension for signing
91+
const receipt = await signTransaction(manifest);
92+
93+
// Update UI
94+
document.getElementById('addDatasToUpdateReceipt').innerText = JSON.stringify(receipt, null, 2);
95+
}
96+
97+
document.getElementById('getDatasToUpdate').onclick = async function() {
98+
99+
const manifest = new ManifestBuilder()
100+
.callMethod(tweeterOracleComponentAddress, 'get_datas_to_update',[])
101+
.build()
102+
.toString();
103+
104+
// Send manifest to extension for signing
105+
const receipt = await signTransaction(manifest);
106+
107+
// Update UI
108+
document.getElementById('getDatasToUpdateReceipt').innerText = JSON.stringify(receipt, null, 2);
109+
110+
var infos = receipt.logs[0].split('|');
111+
const selectIdByKey = {
112+
"ACCOUNTS_TO_FOLLOW":["accountToFollow", "accountToFollowCheck"],
113+
"TWEETS_TO_LIKE":["tweetToLikeId","tweetIdCheck"],
114+
"TWEETS_TO_RETWEETS":["tweetToRetweetId","tweetToRetweetIdCheck"]
115+
}
116+
infos.forEach(element => {
117+
let key = element.split(":")[0];
118+
let values = element.split(":")[1].split(";").filter(o => o.trim()!= "");
119+
120+
if(values.length > 0){
121+
122+
selectIdByKey[key].forEach(selectId => {
123+
124+
let select = document.getElementById(selectId);
125+
126+
while(select.options.length > 0){
127+
select.remove(0);
128+
}
129+
130+
let defaultOption = document.createElement("option");
131+
defaultOption.text = "Select";
132+
defaultOption.value = "";
133+
select.add(defaultOption, null);
134+
135+
for(let i in values) {
136+
let opt = document.createElement("option");
137+
opt.text = values[i];
138+
opt.value = values[i];
139+
select.add(opt, null);
140+
}
141+
});
142+
}
143+
});
144+
}
145+
60146
document.getElementById('insertFollowers').onclick = async function () {
61147
// Construct manifest
62148

0 commit comments

Comments
 (0)