@@ -103,6 +103,7 @@ const format_wallet_name = (wallet) => {
103103}
104104
105105const find_wallets = () => {
106+ const target_wallet = localStorage .getItem (' connected_wallet' );
106107 let loop = setInterval (() => {
107108 if (cardano .value .attempts <= 0 ) {
108109 if (cardano .value .wallets .length ) {
@@ -119,14 +120,17 @@ const find_wallets = () => {
119120 cardano .value .hasCardano = true ;
120121
121122 Object .keys (window .cardano )
122- .forEach ((name ) => {
123+ .forEach (async (name ) => {
123124
124125
125126 if (! is_valid_wallet (name)) {
126127 return ;
127128 }
128129
129130 const wallet = window .cardano [name];
131+ if (wallet .name === target_wallet && ! cardano .value .connected ) {
132+ await connect (wallet);
133+ }
130134
131135 if (! cardano .value .wallets .includes (wallet)) {
132136 cardano .value .wallets .push (wallet);
@@ -147,17 +151,19 @@ const connect = async (wallet) => {
147151 wallet .busy = false ;
148152 return ;
149153 }
154+ localStorage .setItem (' connected_wallet' , wallet .name );
150155 cardano .value .connected = wallet;
151156 wallet .busy = false ;
152157 modal .value .connectWallet = false ;
153158 cardano .value .network_mode = await cardano .value .connection .getNetworkId ();
154- check_balance ();
159+ await check_balance ();
155160}
156161
157162const disconnect = () => {
158163 cardano .value .connected = null ;
159164 cardano .value .connection = null ;
160165 cardano .value .network_mode = null ;
166+ localStorage .removeItem (' connected_wallet' );
161167}
162168
163169const check_balance = async () => {
@@ -190,11 +196,17 @@ const check_balance = async () => {
190196 .len (); i++ ) {
191197 const Asset = policy_assets .keys ()
192198 .get (i);
193- const AssetName = toAscii (Asset .name ());
199+ const asset_id = toHex (Asset .name ());
200+ const asset_ascii = toAscii (Buffer .from (
201+ asset_id .startsWith (' 000de140' )
202+ ? asset_id .substring (8 )
203+ : asset_id,
204+ " hex"
205+ ));
194206 const asset = {
195- name: AssetName ,
207+ name: asset_ascii ,
196208 policy_id: policy .hash ,
197- asset_id: toHex ( Asset . name ()) ,
209+ asset_id: asset_id ,
198210 };
199211 make_fingerprint (asset);
200212 wallet .assets [policy .hash ].push (asset);
@@ -257,35 +269,7 @@ const generate_ticket = async (asset) => {
257269 let signature;
258270
259271 try {
260- if (! cardano .value .hardware_mode ) {
261- signature = await signData (stake_address_cbor, nonce, asset .policy_id , asset .asset_id );
262- } else {
263- const txn = await createTxn (stake_key, nonce);
264- const witness = await cardano .value .connection .signTx (txn .to_hex (), true );
265-
266- const witnessSet = TransactionWitnessSet .new ();
267- const totalVkeys = Vkeywitnesses .new ();
268- const addWitness = TransactionWitnessSet .from_bytes (Buffer .from (witness, ' hex' ));
269- const addVkeys = addWitness .vkeys ();
270- if (addVkeys) {
271- for (let i = 0 ; i < addVkeys .len (); i++ ) {
272- totalVkeys .add (addVkeys .get (i));
273- }
274- }
275-
276- witnessSet .set_vkeys (totalVkeys);
277- const signedTx = Transaction .new (
278- txn .body (),
279- witnessSet,
280- txn .auxiliary_data ()
281- );
282-
283-
284- signature = {
285- txn: signedTx .to_hex (),
286- witness
287- };
288- }
272+ signature = await signData (stake_address_cbor, nonce, asset .policy_id , asset .asset_id );
289273 } catch (e) {
290274 console .error (` Ticket Signing Error!` , e);
291275 }
@@ -320,76 +304,14 @@ const generate_ticket = async (asset) => {
320304let qr_code_value = null ;
321305let qr_image_value = ' ' ;
322306
323- const createTxn = async (stake_key , nonce ) => {
324- const params = await Koios .getParameters ({
325- project_id: koios_token
326- });
327- const txBuilder = CardanoTxn .prepare ({parameters: params});
328-
329- try {
330- const metadata_list = MetadataList .new ();
331- while (nonce) {
332- if (nonce .length < 64 ) {
333- metadata_list .add (TransactionMetadatum .new_text (nonce));
334- break ;
335- } else {
336- metadata_list .add (TransactionMetadatum .new_text (nonce .substring (0 , 64 )));
337- nonce = nonce .substring (64 );
338- }
339- }
340- txBuilder .add_metadatum (
341- BigNum .from_str (' 8' ),
342- TransactionMetadatum .new_list (
343- metadata_list
344- )
345- );
346- } catch (e) {
347- console .error (` Couldn't add metadata?` , e, nonce);
348- }
349-
350- const reward_address = RewardAddress .from_address (stake_key);
351- const reward_keyhash = reward_address .payment_cred ()
352- .to_keyhash ();
353-
354- const tx_certs = Certificates .new ();
355- tx_certs .add (
356- Certificate .new_stake_delegation (
357- StakeDelegation .new (
358- StakeCredential .from_keyhash (reward_keyhash),
359- Ed25519KeyHash .from_bech32 (` pool14wk2m2af7y4gk5uzlsmsunn7d9ppldvcxxa5an9r5ywek8330fg` )
360- )
361- )
362- );
363-
364- txBuilder .set_certs (tx_certs);
365- txBuilder .set_fee (BigNum .from_str (' 0' ));
366- txBuilder .set_ttl (1 );
367-
368- return txBuilder .build_tx ();
369- }
370-
371- const signData = async (stake_address , nonce , policy_id , asset_id ) => {
307+ const signData = async (stake_address , nonce ) => {
372308 const payload = cardano .value .connection .signData (stake_address, nonce);
373309 console .log (` Sign Data Payload` , payload);
374310 return payload;
375311}
376312
377313onMounted (async () => {
378314 find_wallets ();
379- localTheme .value = localStorage .getItem (' gatekeeper:theme' ) ?? ' light' ;
380- theme .global .name .value = localTheme .value ;
381- });
382-
383- const theme = useTheme ()
384-
385- const toggleTheme = () => {
386- const theme_value = theme .global .current .value .dark ? ' light' : ' dark'
387- localStorage .setItem (' gatekeeper:theme' , theme_value);
388- theme .global .name .value = theme_value;
389- }
390-
391- const localTheme = ref ({
392- value: null
393315});
394316
395317const bg_image = ' url(' + props .event .bg_image_url + ' )' ;
@@ -409,16 +331,7 @@ header {
409331 <GuestLayout title =" Show Event" >
410332 <template #header >
411333 <header class =" pb-16 px-8 text-start" >
412- < AppHeader / >
413- < v- toolbar class = " d-flex flex-row pb-16" color= " transparent" >
414- < v- spacer>< / v- spacer>
415- < v- toolbar- items>
416- < v- btn @click= " toggleTheme" >
417- < v- icon
418- : icon= " theme.global.current.value.dark ? 'mdi-weather-sunny' : 'mdi-weather-night'" / >
419- < / v- btn>
420- < / v- toolbar- items>
421- < / v- toolbar>
334+ <AppHeader />
422335 <div class =" d-flex align-center align-content-center my-16" >
423336 <v-avatar :image =" event.profile_photo_url" class =" me-4" size =" 128" />
424337 <div >
@@ -480,17 +393,7 @@ header {
480393 <v-icon icon =" mdi-power" />
481394 </v-btn >
482395 </div >
483- < br/ >
484- < v- switch v-model="cardano.hardware_mode" color="primary"
485- density="comfortable">
486- <template v-slot:label>
487- Hardware Wallet Compatibility Mode is {{
488- cardano .hardware_mode ? ' ON' : ' OFF'
489- }}
490- < / template>
491- < / v- switch >
492396 </div >
493-
494397 </template >
495398 </div >
496399 </header >
0 commit comments